From: jsm28 Date: Sun, 12 Sep 2004 23:53:29 +0000 (+0000) Subject: * c-common.c, c-decl.c, c-lex.c, c-objc-common.c, c-opts.c, X-Git-Url: http://git.sourceforge.jp/view?p=pf3gnuchains%2Fgcc-fork.git;a=commitdiff_plain;h=b0b1af642fd3c2318975ed201648def1b7aee348 * c-common.c, c-decl.c, c-lex.c, c-objc-common.c, c-opts.c, c-parse.in, c-pragma.c, c-typeck.c: Use %q, %< and %> for quoting in diagnostics. Use %' for English apostrophes. * c-tree.h (ATTRIBUTE_GCC_CDIAG): Define. (pedwarn_c90, pedwarn_c99): Use it. * c-decl.c (lookup_label): Quote label name in diagnostic. * c-parse.in (yyprint): Use ' instead of ` for left quote. * c-typeck.c (warn_for_assignment): Likewise. testsuite: * g++.dg/warn/Wswitch-1.C, g++.dg/warn/Wswitch-2.C, gcc.dg/Wswitch-2.c, gcc.dg/Wswitch-enum.c, gcc.dg/Wswitch.c, gcc.dg/declspec-9.c, gcc.dg/declspec-10.c, gcc.dg/declspec-11.c, gcc.dg/m-un-2.c, gcc.dg/noreturn-1.c, gcc.dg/wtr-conversion-1.c: Update expected messages. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@87413 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 67d42f8c863..5a704a16dbe 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,14 @@ +2004-09-13 Joseph S. Myers + + * c-common.c, c-decl.c, c-lex.c, c-objc-common.c, c-opts.c, + c-parse.in, c-pragma.c, c-typeck.c: Use %q, %< and %> for quoting + in diagnostics. Use %' for English apostrophes. + * c-tree.h (ATTRIBUTE_GCC_CDIAG): Define. + (pedwarn_c90, pedwarn_c99): Use it. + * c-decl.c (lookup_label): Quote label name in diagnostic. + * c-parse.in (yyprint): Use ' instead of ` for left quote. + * c-typeck.c (warn_for_assignment): Likewise. + 2004-09-13 Jan Hubicka * i386.c (x86_schedule): New global variable. diff --git a/gcc/c-common.c b/gcc/c-common.c index 2b13588c85a..47494106824 100644 --- a/gcc/c-common.c +++ b/gcc/c-common.c @@ -828,7 +828,7 @@ fname_decl (unsigned int rid, tree id) input_location = saved_location; } if (!ix && !current_function_decl) - pedwarn ("%J'%D' is not defined outside of function scope", decl, decl); + pedwarn ("%J%qD is not defined outside of function scope", decl, decl); return decl; } @@ -849,7 +849,7 @@ fix_string_type (tree value) nchars = wide_flag ? length / wchar_bytes : length; if (pedantic && nchars - 1 > nchars_max && !c_dialect_cxx ()) - pedwarn ("string length `%d' is greater than the length `%d' ISO C%d compilers are required to support", + pedwarn ("string length %qd is greater than the length %qd ISO C%d compilers are required to support", nchars - 1, nchars_max, flag_isoc99 ? 99 : 89); e_type = wide_flag ? wchar_type_node : char_type_node; @@ -1135,7 +1135,7 @@ warn_for_collisions_1 (tree written, tree writer, struct tlist *list, && DECL_NAME (list->expr)) { warned_ids = new_tlist (warned_ids, written, NULL_TREE); - warning ("operation on `%s' may be undefined", + warning ("operation on %qs may be undefined", IDENTIFIER_POINTER (DECL_NAME (list->expr))); } list = list->next; @@ -2229,7 +2229,7 @@ pointer_int_sum (enum tree_code resultcode, tree ptrop, tree intop) if (TREE_CODE (TREE_TYPE (result_type)) == VOID_TYPE) { if (pedantic || warn_pointer_arith) - pedwarn ("pointer of type `void *' used in arithmetic"); + pedwarn ("pointer of type % used in arithmetic"); size_exp = integer_one_node; } else if (TREE_CODE (TREE_TYPE (result_type)) == FUNCTION_TYPE) @@ -2349,7 +2349,7 @@ c_common_truthvalue_conversion (tree expr) { /* Common Ada/Pascal programmer's mistake. We always warn about this since it is so bad. */ - warning ("the address of `%D', will always evaluate as `true'", + warning ("the address of %qD, will always evaluate as %", TREE_OPERAND (expr, 0)); return truthvalue_true_node; } @@ -2494,7 +2494,7 @@ c_build_qualified_type (tree type, int type_quals) && (!POINTER_TYPE_P (type) || !C_TYPE_OBJECT_OR_INCOMPLETE_P (TREE_TYPE (type)))) { - error ("invalid use of `restrict'"); + error ("invalid use of %"); type_quals &= ~TYPE_QUAL_RESTRICT; } @@ -2534,7 +2534,7 @@ c_apply_type_quals_to_decl (int type_quals, tree decl) if (!type || !POINTER_TYPE_P (type) || !C_TYPE_OBJECT_OR_INCOMPLETE_P (TREE_TYPE (type))) - error ("invalid use of `restrict'"); + error ("invalid use of %"); else if (flag_strict_aliasing && type == TREE_TYPE (decl)) /* Indicate we need to make a unique alias set for this pointer. We can't do it here because it might be pointing to an @@ -2749,7 +2749,7 @@ c_sizeof_or_alignof_type (tree type, enum tree_code op, int complain) if (op == SIZEOF_EXPR) { if (complain && (pedantic || warn_pointer_arith)) - pedwarn ("invalid application of `sizeof' to a function type"); + pedwarn ("invalid application of % to a function type"); value = size_one_node; } else @@ -2759,13 +2759,13 @@ c_sizeof_or_alignof_type (tree type, enum tree_code op, int complain) { if (type_code == VOID_TYPE && complain && (pedantic || warn_pointer_arith)) - pedwarn ("invalid application of `%s' to a void type", op_name); + pedwarn ("invalid application of %qs to a void type", op_name); value = size_one_node; } else if (!COMPLETE_TYPE_P (type)) { if (complain) - error ("invalid application of `%s' to incomplete type `%T' ", + error ("invalid application of %qs to incomplete type %qT ", op_name, type); value = size_zero_node; } @@ -2806,7 +2806,7 @@ c_alignof_expr (tree expr) else if (TREE_CODE (expr) == COMPONENT_REF && DECL_C_BIT_FIELD (TREE_OPERAND (expr, 1))) { - error ("`__alignof' applied to a bit-field"); + error ("%<__alignof%> applied to a bit-field"); t = size_one_node; } else if (TREE_CODE (expr) == COMPONENT_REF @@ -3249,7 +3249,7 @@ void disable_builtin_function (const char *name) { if (strncmp (name, "__builtin_", strlen ("__builtin_")) == 0) - error ("cannot disable built-in function `%s'", name); + error ("cannot disable built-in function %qs", name); else { disabled_builtin *new_disabled_builtin = XNEW (disabled_builtin); @@ -3657,10 +3657,10 @@ match_case_to_enum_1 (tree key, tree type, tree label) TREE_INT_CST_HIGH (key), TREE_INT_CST_LOW (key)); if (TYPE_NAME (type) == 0) - warning ("%Jcase value `%s' not in enumerated type", + warning ("%Jcase value %qs not in enumerated type", CASE_LABEL (label), buf); else - warning ("%Jcase value `%s' not in enumerated type `%T'", + warning ("%Jcase value %qs not in enumerated type %qT", CASE_LABEL (label), buf, type); } @@ -3761,7 +3761,7 @@ c_do_switch_warnings (splay_tree cases, tree switch_stmt) { /* Warn if there are enumerators that don't correspond to case expressions. */ - warning ("%Henumeration value `%E' not handled in switch", + warning ("%Henumeration value %qE not handled in switch", &switch_location, TREE_PURPOSE (chain)); } } @@ -3957,7 +3957,7 @@ handle_packed_attribute (tree *node, tree name, tree ARG_UNUSED (args), that changes what the typedef is typing. */ else { - warning ("`%s' attribute ignored", IDENTIFIER_POINTER (name)); + warning ("%qs attribute ignored", IDENTIFIER_POINTER (name)); *no_add_attrs = true; } @@ -3976,7 +3976,7 @@ handle_nocommon_attribute (tree *node, tree name, DECL_COMMON (*node) = 0; else { - warning ("`%s' attribute ignored", IDENTIFIER_POINTER (name)); + warning ("%qs attribute ignored", IDENTIFIER_POINTER (name)); *no_add_attrs = true; } @@ -3994,7 +3994,7 @@ handle_common_attribute (tree *node, tree name, tree ARG_UNUSED (args), DECL_COMMON (*node) = 1; else { - warning ("`%s' attribute ignored", IDENTIFIER_POINTER (name)); + warning ("%qs attribute ignored", IDENTIFIER_POINTER (name)); *no_add_attrs = true; } @@ -4021,7 +4021,7 @@ handle_noreturn_attribute (tree *node, tree name, tree ARG_UNUSED (args), TYPE_READONLY (TREE_TYPE (type)), 1)); else { - warning ("`%s' attribute ignored", IDENTIFIER_POINTER (name)); + warning ("%qs attribute ignored", IDENTIFIER_POINTER (name)); *no_add_attrs = true; } @@ -4040,7 +4040,7 @@ handle_noinline_attribute (tree *node, tree name, DECL_UNINLINABLE (*node) = 1; else { - warning ("`%s' attribute ignored", IDENTIFIER_POINTER (name)); + warning ("%qs attribute ignored", IDENTIFIER_POINTER (name)); *no_add_attrs = true; } @@ -4063,7 +4063,7 @@ handle_always_inline_attribute (tree *node, tree name, } else { - warning ("`%s' attribute ignored", IDENTIFIER_POINTER (name)); + warning ("%qs attribute ignored", IDENTIFIER_POINTER (name)); *no_add_attrs = true; } @@ -4087,7 +4087,7 @@ handle_used_attribute (tree *pnode, tree name, tree ARG_UNUSED (args), } else { - warning ("`%s' attribute ignored", IDENTIFIER_POINTER (name)); + warning ("%qs attribute ignored", IDENTIFIER_POINTER (name)); *no_add_attrs = true; } @@ -4113,7 +4113,7 @@ handle_unused_attribute (tree *node, tree name, tree ARG_UNUSED (args), TREE_USED (decl) = 1; else { - warning ("`%s' attribute ignored", IDENTIFIER_POINTER (name)); + warning ("%qs attribute ignored", IDENTIFIER_POINTER (name)); *no_add_attrs = true; } } @@ -4147,7 +4147,7 @@ handle_const_attribute (tree *node, tree name, tree ARG_UNUSED (args), TREE_THIS_VOLATILE (TREE_TYPE (type)))); else { - warning ("`%s' attribute ignored", IDENTIFIER_POINTER (name)); + warning ("%qs attribute ignored", IDENTIFIER_POINTER (name)); *no_add_attrs = true; } @@ -4191,7 +4191,7 @@ handle_transparent_union_attribute (tree *node, tree name, DECL_TRANSPARENT_UNION (decl) = 1; else { - warning ("`%s' attribute ignored", IDENTIFIER_POINTER (name)); + warning ("%qs attribute ignored", IDENTIFIER_POINTER (name)); *no_add_attrs = true; } @@ -4219,7 +4219,7 @@ handle_constructor_attribute (tree *node, tree name, } else { - warning ("`%s' attribute ignored", IDENTIFIER_POINTER (name)); + warning ("%qs attribute ignored", IDENTIFIER_POINTER (name)); *no_add_attrs = true; } @@ -4247,7 +4247,7 @@ handle_destructor_attribute (tree *node, tree name, } else { - warning ("`%s' attribute ignored", IDENTIFIER_POINTER (name)); + warning ("%qs attribute ignored", IDENTIFIER_POINTER (name)); *no_add_attrs = true; } @@ -4266,7 +4266,7 @@ handle_mode_attribute (tree *node, tree name, tree args, *no_add_attrs = true; if (TREE_CODE (TREE_VALUE (args)) != IDENTIFIER_NODE) - warning ("`%s' attribute ignored", IDENTIFIER_POINTER (name)); + warning ("%qs attribute ignored", IDENTIFIER_POINTER (name)); else { int j; @@ -4367,7 +4367,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 '%s' for enumeral types", + error ("cannot use mode %qs for enumeral types", GET_MODE_NAME (mode)); return NULL_TREE; } @@ -4417,7 +4417,7 @@ handle_section_attribute (tree *node, tree ARG_UNUSED (name), tree args, && strcmp (TREE_STRING_POINTER (DECL_SECTION_NAME (decl)), TREE_STRING_POINTER (TREE_VALUE (args))) != 0) { - error ("%Jsection of '%D' conflicts with previous declaration", + error ("%Jsection of %qD conflicts with previous declaration", *node, *node); *no_add_attrs = true; } @@ -4426,7 +4426,7 @@ handle_section_attribute (tree *node, tree ARG_UNUSED (name), tree args, } else { - error ("%Jsection attribute not allowed for '%D'", *node, *node); + error ("%Jsection attribute not allowed for %qD", *node, *node); *no_add_attrs = true; } } @@ -4506,7 +4506,7 @@ handle_aligned_attribute (tree *node, tree ARG_UNUSED (name), tree args, else if (TREE_CODE (decl) != VAR_DECL && TREE_CODE (decl) != FIELD_DECL) { - error ("%Jalignment may not be specified for '%D'", decl, decl); + error ("%Jalignment may not be specified for %qD", decl, decl); *no_add_attrs = true; } else @@ -4544,7 +4544,7 @@ handle_alias_attribute (tree *node, tree name, tree args, if ((TREE_CODE (decl) == FUNCTION_DECL && DECL_INITIAL (decl)) || (TREE_CODE (decl) != FUNCTION_DECL && ! DECL_EXTERNAL (decl))) { - error ("%J'%D' defined both normally and as an alias", decl, decl); + error ("%J%qD defined both normally and as an alias", decl, decl); *no_add_attrs = true; } @@ -4578,7 +4578,7 @@ handle_alias_attribute (tree *node, tree name, tree args, } else { - warning ("`%s' attribute ignored", IDENTIFIER_POINTER (name)); + warning ("%qs attribute ignored", IDENTIFIER_POINTER (name)); *no_add_attrs = true; } @@ -4602,14 +4602,14 @@ handle_visibility_attribute (tree *node, tree name, tree args, { if (TREE_CODE (*node) != RECORD_TYPE && TREE_CODE (*node) != UNION_TYPE) { - warning ("`%s' attribute ignored on non-class types", + warning ("%qs attribute ignored on non-class types", IDENTIFIER_POINTER (name)); return NULL_TREE; } } else if (decl_function_context (decl) != 0 || ! TREE_PUBLIC (decl)) { - warning ("`%s' attribute ignored", IDENTIFIER_POINTER (name)); + warning ("%qs attribute ignored", IDENTIFIER_POINTER (name)); return NULL_TREE; } @@ -4695,7 +4695,7 @@ handle_tls_model_attribute (tree *node, tree name, tree args, if (! DECL_THREAD_LOCAL (decl)) { - warning ("`%s' attribute ignored", IDENTIFIER_POINTER (name)); + warning ("%qs attribute ignored", IDENTIFIER_POINTER (name)); *no_add_attrs = true; } else @@ -4736,12 +4736,12 @@ handle_no_instrument_function_attribute (tree *node, tree name, if (TREE_CODE (decl) != FUNCTION_DECL) { - error ("%J'%E' attribute applies only to functions", decl, name); + error ("%J%qE attribute applies only to functions", decl, name); *no_add_attrs = true; } else if (DECL_INITIAL (decl)) { - error ("%Jcan't set '%E' attribute after definition", decl, name); + error ("%Jcan%'t set %qE attribute after definition", decl, name); *no_add_attrs = true; } else @@ -4762,7 +4762,7 @@ handle_malloc_attribute (tree *node, tree name, tree ARG_UNUSED (args), /* ??? TODO: Support types. */ else { - warning ("`%s' attribute ignored", IDENTIFIER_POINTER (name)); + warning ("%qs attribute ignored", IDENTIFIER_POINTER (name)); *no_add_attrs = true; } @@ -4782,12 +4782,12 @@ handle_no_limit_stack_attribute (tree *node, tree name, if (TREE_CODE (decl) != FUNCTION_DECL) { - error ("%J'%E' attribute applies only to functions", decl, name); + error ("%J%qE attribute applies only to functions", decl, name); *no_add_attrs = true; } else if (DECL_INITIAL (decl)) { - error ("%Jcan't set '%E' attribute after definition", decl, name); + error ("%Jcan%'t set %qE attribute after definition", decl, name); *no_add_attrs = true; } else @@ -4808,7 +4808,7 @@ handle_pure_attribute (tree *node, tree name, tree ARG_UNUSED (args), /* ??? TODO: Support types. */ else { - warning ("`%s' attribute ignored", IDENTIFIER_POINTER (name)); + warning ("%qs attribute ignored", IDENTIFIER_POINTER (name)); *no_add_attrs = true; } @@ -4863,10 +4863,10 @@ handle_deprecated_attribute (tree *node, tree name, what = IDENTIFIER_POINTER (DECL_NAME (TYPE_NAME (type))); } if (what) - warning ("`%s' attribute ignored for `%s'", + warning ("%qs attribute ignored for %qs", IDENTIFIER_POINTER (name), what); else - warning ("`%s' attribute ignored", + warning ("%qs attribute ignored", IDENTIFIER_POINTER (name)); } @@ -4895,7 +4895,7 @@ handle_vector_size_attribute (tree *node, tree name, tree args, if (! host_integerp (size, 1)) { - warning ("`%s' attribute ignored", IDENTIFIER_POINTER (name)); + warning ("%qs attribute ignored", IDENTIFIER_POINTER (name)); return NULL_TREE; } @@ -4924,7 +4924,7 @@ handle_vector_size_attribute (tree *node, tree name, tree args, && GET_MODE_CLASS (orig_mode) != MODE_INT) || ! host_integerp (TYPE_SIZE_UNIT (type), 1)) { - error ("invalid vector type for attribute `%s'", + error ("invalid vector type for attribute %qs", IDENTIFIER_POINTER (name)); return NULL_TREE; } @@ -5174,7 +5174,7 @@ handle_nothrow_attribute (tree *node, tree name, tree ARG_UNUSED (args), /* ??? TODO: Support types. */ else { - warning ("`%s' attribute ignored", IDENTIFIER_POINTER (name)); + warning ("%qs attribute ignored", IDENTIFIER_POINTER (name)); *no_add_attrs = true; } @@ -5197,7 +5197,7 @@ handle_cleanup_attribute (tree *node, tree name, tree args, we'd be missing too much, since we do have attribute constructor. */ if (TREE_CODE (decl) != VAR_DECL || TREE_STATIC (decl)) { - warning ("`%s' attribute ignored", IDENTIFIER_POINTER (name)); + warning ("%qs attribute ignored", IDENTIFIER_POINTER (name)); *no_add_attrs = true; return NULL_TREE; } @@ -5236,7 +5236,7 @@ handle_warn_unused_result_attribute (tree *node, tree name, /* Ignore the attribute for functions not returning any value. */ if (VOID_TYPE_P (TREE_TYPE (*node))) { - warning ("`%s' attribute ignored", IDENTIFIER_POINTER (name)); + warning ("%qs attribute ignored", IDENTIFIER_POINTER (name)); *no_add_attrs = true; } @@ -5253,7 +5253,7 @@ handle_sentinel_attribute (tree *node, tree name, tree args, if (!params) { - warning ("`%s' attribute requires prototypes with named arguments", + warning ("%qs attribute requires prototypes with named arguments", IDENTIFIER_POINTER (name)); *no_add_attrs = true; } @@ -5264,7 +5264,7 @@ handle_sentinel_attribute (tree *node, tree name, tree args, if (VOID_TYPE_P (TREE_VALUE (params))) { - warning ("`%s' attribute only applies to variadic functions", + warning ("%qs attribute only applies to variadic functions", IDENTIFIER_POINTER (name)); *no_add_attrs = true; } @@ -5489,7 +5489,7 @@ c_parse_error (const char *msgid, enum cpp_ttype token, tree value) else if (token == CPP_NAME) error ("%s before \"%s\"", string, IDENTIFIER_POINTER (value)); else if (token < N_TTYPES) - error ("%s before '%s' token", string, cpp_type2name (token)); + error ("%s before %qs token", string, cpp_type2name (token)); else error ("%s", string); } @@ -5551,7 +5551,7 @@ c_warn_unused_result (tree *top_p) if (lookup_attribute ("warn_unused_result", TYPE_ATTRIBUTES (ftype))) { if (fdecl) - warning ("%Hignoring return value of `%D', " + warning ("%Hignoring return value of %qD, " "declared with attribute warn_unused_result", EXPR_LOCUS (t), fdecl); else @@ -5595,7 +5595,7 @@ fold_offsetof_1 (tree expr) if (DECL_C_BIT_FIELD (t)) { error ("attempt to take address of bit-field structure " - "member `%s'", IDENTIFIER_POINTER (DECL_NAME (t))); + "member %qs", IDENTIFIER_POINTER (DECL_NAME (t))); return error_mark_node; } off = size_binop (PLUS_EXPR, DECL_FIELD_OFFSET (t), diff --git a/gcc/c-decl.c b/gcc/c-decl.c index 60b613fe1d3..7d986cdf24d 100644 --- a/gcc/c-decl.c +++ b/gcc/c-decl.c @@ -521,7 +521,7 @@ c_finish_incomplete_decl (tree decl) && ! DECL_EXTERNAL (decl) && TYPE_DOMAIN (type) == 0) { - warning ("%Jarray '%D' assumed to have one element", decl, decl); + warning ("%Jarray %qD assumed to have one element", decl, decl); complete_array_type (type, NULL_TREE, 1); @@ -718,15 +718,15 @@ pop_scope (void) /* Warnings for unused labels, errors for undefined labels. */ if (TREE_USED (p) && !DECL_INITIAL (p)) { - error ("%Jlabel `%D' used but not defined", p, p); + error ("%Jlabel %qD used but not defined", p, p); DECL_INITIAL (p) = error_mark_node; } else if (!TREE_USED (p) && warn_unused_label) { if (DECL_INITIAL (p)) - warning ("%Jlabel `%D' defined but not used", p, p); + warning ("%Jlabel %qD defined but not used", p, p); else - warning ("%Jlabel `%D' declared but not defined", p, p); + warning ("%Jlabel %qD declared but not defined", p, p); } /* Labels go in BLOCK_VARS. */ TREE_CHAIN (p) = BLOCK_VARS (block); @@ -771,7 +771,7 @@ pop_scope (void) || (TREE_STATIC (p) && !TREE_PUBLIC (p) && !TREE_THIS_VOLATILE (p))) && scope != external_scope) - warning ("%Junused variable `%D'", p, p); + warning ("%Junused variable %qD", p, p); if (b->inner_comp) { @@ -1050,13 +1050,13 @@ validate_proto_after_old_defn (tree newdecl, tree newtype, tree oldtype) agree on the number of arguments. */ if (END_OF_ARGLIST (oldargtype)) { - error ("%Jprototype for '%D' declares more arguments " + error ("%Jprototype for %qD declares more arguments " "than previous old-style definition", newdecl, newdecl); return false; } else if (END_OF_ARGLIST (newargtype)) { - error ("%Jprototype for '%D' declares fewer arguments " + error ("%Jprototype for %qD declares fewer arguments " "than previous old-style definition", newdecl, newdecl); return false; } @@ -1065,7 +1065,7 @@ validate_proto_after_old_defn (tree newdecl, tree newtype, tree oldtype) for the arg. */ else if (! comptypes (oldargtype, newargtype)) { - error ("%Jprototype for '%D' declares arg %d with incompatible type", + error ("%Jprototype for %qD declares arg %d with incompatible type", newdecl, newdecl, i); return false; } @@ -1077,7 +1077,7 @@ validate_proto_after_old_defn (tree newdecl, tree newtype, tree oldtype) /* If we get here, no errors were found, but do issue a warning for this poor-style construct. */ - warning ("%Jprototype for '%D' follows non-prototype definition", + warning ("%Jprototype for %qD follows non-prototype definition", newdecl, newdecl); return true; #undef END_OF_ARGLIST @@ -1092,11 +1092,11 @@ locate_old_decl (tree decl, void (*diag)(const char *, ...)) if (TREE_CODE (decl) == FUNCTION_DECL && DECL_BUILT_IN (decl)) ; else if (DECL_INITIAL (decl)) - diag (N_("%Jprevious definition of '%D' was here"), decl, decl); + diag (N_("%Jprevious definition of %qD was here"), decl, decl); else if (C_DECL_IMPLICIT (decl)) - diag (N_("%Jprevious implicit declaration of '%D' was here"), decl, decl); + diag (N_("%Jprevious implicit declaration of %qD was here"), decl, decl); else - diag (N_("%Jprevious declaration of '%D' was here"), decl, decl); + diag (N_("%Jprevious declaration of %qD was here"), decl, decl); } /* Subroutine of duplicate_decls. Compare NEWDECL to OLDDECL. @@ -1132,15 +1132,15 @@ diagnose_mismatched_decls (tree newdecl, tree olddecl, && DECL_BUILT_IN (olddecl) && !C_DECL_DECLARED_BUILTIN (olddecl))) { - error ("%J'%D' redeclared as different kind of symbol", + error ("%J%qD redeclared as different kind of symbol", newdecl, newdecl); locate_old_decl (olddecl, error); } else if (TREE_PUBLIC (newdecl)) - warning ("%Jbuilt-in function '%D' declared as non-function", + warning ("%Jbuilt-in function %qD declared as non-function", newdecl, newdecl); else if (warn_shadow) - warning ("%Jdeclaration of '%D' shadows a built-in function", + warning ("%Jdeclaration of %qD shadows a built-in function", newdecl, newdecl); return false; } @@ -1161,7 +1161,7 @@ diagnose_mismatched_decls (tree newdecl, tree olddecl, /* If types don't match for a built-in, throw away the built-in. No point in calling locate_old_decl here, it won't print anything. */ - warning ("%Jconflicting types for built-in function '%D'", + warning ("%Jconflicting types for built-in function %qD", newdecl, newdecl); return false; } @@ -1185,7 +1185,7 @@ diagnose_mismatched_decls (tree newdecl, tree olddecl, && TYPE_MAIN_VARIANT (TREE_TYPE (newtype)) == integer_type_node && C_FUNCTION_IMPLICIT_INT (newdecl)) { - pedwarn ("%Jconflicting types for '%D'", newdecl, newdecl); + pedwarn ("%Jconflicting types for %qD", newdecl, newdecl); /* Make sure we keep void as the return type. */ TREE_TYPE (newdecl) = *newtypep = newtype = oldtype; C_FUNCTION_IMPLICIT_INT (newdecl) = 0; @@ -1194,9 +1194,9 @@ diagnose_mismatched_decls (tree newdecl, tree olddecl, else { if (TYPE_QUALS (newtype) != TYPE_QUALS (oldtype)) - error ("%J conflicting type qualifiers for '%D'", newdecl, newdecl); + error ("%J conflicting type qualifiers for %qD", newdecl, newdecl); else - error ("%Jconflicting types for '%D'", newdecl, newdecl); + error ("%Jconflicting types for %qD", newdecl, newdecl); diagnose_arglist_conflict (newdecl, olddecl, newtype, oldtype); locate_old_decl (olddecl, error); return false; @@ -1211,7 +1211,7 @@ diagnose_mismatched_decls (tree newdecl, tree olddecl, if (DECL_IN_SYSTEM_HEADER (newdecl) || DECL_IN_SYSTEM_HEADER (olddecl)) return true; /* Allow OLDDECL to continue in use. */ - error ("%Jredefinition of typedef '%D'", newdecl, newdecl); + error ("%Jredefinition of typedef %qD", newdecl, newdecl); locate_old_decl (olddecl, error); return false; } @@ -1235,7 +1235,7 @@ diagnose_mismatched_decls (tree newdecl, tree olddecl, && !TYPE_ARG_TYPES (TREE_TYPE (newdecl))))) { if (warn_shadow) - warning ("%Jdeclaration of '%D' shadows a built-in function", + warning ("%Jdeclaration of %qD shadows a built-in function", newdecl, newdecl); /* Discard the old built-in function. */ return false; @@ -1250,7 +1250,7 @@ diagnose_mismatched_decls (tree newdecl, tree olddecl, && DECL_EXTERNAL (newdecl) && same_translation_unit_p (olddecl, newdecl)))) { - error ("%Jredefinition of '%D'", newdecl, newdecl); + error ("%Jredefinition of %qD", newdecl, newdecl); locate_old_decl (olddecl, error); return false; } @@ -1285,7 +1285,7 @@ diagnose_mismatched_decls (tree newdecl, tree olddecl, && !(DECL_EXTERNAL (olddecl) && DECL_DECLARED_INLINE_P (olddecl))) { - error ("%Jstatic declaration of '%D' follows " + error ("%Jstatic declaration of %qD follows " "non-static declaration", newdecl, newdecl); locate_old_decl (olddecl, error); } @@ -1295,14 +1295,14 @@ diagnose_mismatched_decls (tree newdecl, tree olddecl, { if (DECL_CONTEXT (olddecl)) { - error ("%Jnon-static declaration of '%D' follows " + error ("%Jnon-static declaration of %qD follows " "static declaration", newdecl, newdecl); locate_old_decl (olddecl, error); return false; } else if (warn_traditional) { - warning ("%Jnon-static declaration of '%D' follows " + warning ("%Jnon-static declaration of %qD follows " "static declaration", newdecl, newdecl); warned = true; } @@ -1315,10 +1315,10 @@ diagnose_mismatched_decls (tree newdecl, tree olddecl, if (DECL_THREAD_LOCAL (newdecl) != DECL_THREAD_LOCAL (olddecl)) { if (DECL_THREAD_LOCAL (newdecl)) - error ("%Jthread-local declaration of '%D' follows " + error ("%Jthread-local declaration of %qD follows " "non-thread-local declaration", newdecl, newdecl); else - error ("%Jnon-thread-local declaration of '%D' follows " + error ("%Jnon-thread-local declaration of %qD follows " "thread-local declaration", newdecl, newdecl); locate_old_decl (olddecl, error); @@ -1328,7 +1328,7 @@ diagnose_mismatched_decls (tree newdecl, tree olddecl, /* Multiple initialized definitions are not allowed (6.9p3,5). */ if (DECL_INITIAL (newdecl) && DECL_INITIAL (olddecl)) { - error ("%Jredefinition of '%D'", newdecl, newdecl); + error ("%Jredefinition of %qD", newdecl, newdecl); locate_old_decl (olddecl, error); return false; } @@ -1355,7 +1355,7 @@ diagnose_mismatched_decls (tree newdecl, tree olddecl, } else if (warn_traditional) { - warning ("%Jnon-static declaration of '%D' follows " + warning ("%Jnon-static declaration of %qD follows " "static declaration", newdecl, newdecl); warned = true; } @@ -1363,10 +1363,10 @@ diagnose_mismatched_decls (tree newdecl, tree olddecl, else { if (TREE_PUBLIC (newdecl)) - error ("%Jnon-static declaration of '%D' follows " + error ("%Jnon-static declaration of %qD follows " "static declaration", newdecl, newdecl); else - error ("%Jstatic declaration of '%D' follows " + error ("%Jstatic declaration of %qD follows " "non-static declaration", newdecl, newdecl); locate_old_decl (olddecl, error); @@ -1384,13 +1384,13 @@ diagnose_mismatched_decls (tree newdecl, tree olddecl, } else if (DECL_EXTERNAL (olddecl)) { - error ("%Jdeclaration of '%D' with no linkage follows " + error ("%Jdeclaration of %qD with no linkage follows " "extern declaration", newdecl, newdecl); locate_old_decl (olddecl, error); } else { - error ("%Jredeclaration of '%D' with no linkage", + error ("%Jredeclaration of %qD with no linkage", newdecl, newdecl); locate_old_decl (olddecl, error); } @@ -1404,7 +1404,7 @@ diagnose_mismatched_decls (tree newdecl, tree olddecl, if (DECL_VISIBILITY_SPECIFIED (newdecl) && DECL_VISIBILITY_SPECIFIED (olddecl) && DECL_VISIBILITY (newdecl) != DECL_VISIBILITY (olddecl)) { - warning ("%Jredeclaration of '%D' with different visibility " + warning ("%Jredeclaration of %qD with different visibility " "(old visibility preserved)", newdecl, newdecl); warned = true; } @@ -1415,14 +1415,14 @@ diagnose_mismatched_decls (tree newdecl, tree olddecl, if (DECL_DECLARED_INLINE_P (newdecl) && lookup_attribute ("noinline", DECL_ATTRIBUTES (olddecl))) { - warning ("%Jinline declaration of '%D' follows " + warning ("%Jinline declaration of %qD follows " "declaration with attribute noinline", newdecl, newdecl); warned = true; } else if (DECL_DECLARED_INLINE_P (olddecl) && lookup_attribute ("noinline", DECL_ATTRIBUTES (newdecl))) { - warning ("%Jdeclaration of '%D' with attribute noinline follows " + warning ("%Jdeclaration of %qD with attribute noinline follows " "inline declaration ", newdecl, newdecl); warned = true; } @@ -1437,13 +1437,13 @@ diagnose_mismatched_decls (tree newdecl, tree olddecl, { if (TREE_USED (olddecl)) { - warning ("%J'%D' declared inline after being called", + warning ("%J%qD declared inline after being called", olddecl, olddecl); warned = true; } else if (DECL_INITIAL (olddecl)) { - warning ("%J'%D' declared inline after its definition", + warning ("%J%qD declared inline after its definition", olddecl, olddecl); warned = true; } @@ -1463,7 +1463,7 @@ diagnose_mismatched_decls (tree newdecl, tree olddecl, if (TREE_CODE (newdecl) == PARM_DECL && (!TREE_ASM_WRITTEN (olddecl) || TREE_ASM_WRITTEN (newdecl))) { - error ("%Jredefinition of parameter '%D'", newdecl, newdecl); + error ("%Jredefinition of parameter %qD", newdecl, newdecl); locate_old_decl (olddecl, error); return false; } @@ -1487,7 +1487,7 @@ diagnose_mismatched_decls (tree newdecl, tree olddecl, && !(TREE_CODE (newdecl) == PARM_DECL && TREE_ASM_WRITTEN (olddecl) && !TREE_ASM_WRITTEN (newdecl))) { - warning ("%Jredundant redeclaration of '%D'", newdecl, newdecl); + warning ("%Jredundant redeclaration of %qD", newdecl, newdecl); warned = true; } @@ -1793,17 +1793,17 @@ warn_if_shadowing (tree new_decl) tree old_decl = b->decl; if (TREE_CODE (old_decl) == PARM_DECL) - warning ("%Jdeclaration of '%D' shadows a parameter", + warning ("%Jdeclaration of %qD shadows a parameter", new_decl, new_decl); else if (DECL_FILE_SCOPE_P (old_decl)) - warning ("%Jdeclaration of '%D' shadows a global declaration", + warning ("%Jdeclaration of %qD shadows a global declaration", new_decl, new_decl); else if (TREE_CODE (old_decl) == FUNCTION_DECL && DECL_BUILT_IN (old_decl)) - warning ("%Jdeclaration of '%D' shadows a built-in function", + warning ("%Jdeclaration of %qD shadows a built-in function", new_decl, new_decl); else - warning ("%Jdeclaration of '%D' shadows a previous local", + warning ("%Jdeclaration of %qD shadows a previous local", new_decl, new_decl); if (TREE_CODE (old_decl) != FUNCTION_DECL @@ -1962,7 +1962,7 @@ pushdecl (tree x) if (warn_nested_externs && scope != file_scope && !DECL_IN_SYSTEM_HEADER (x)) - warning ("nested extern declaration of '%D'", x); + warning ("nested extern declaration of %qD", x); while (b && !B_IN_EXTERNAL_SCOPE (b)) { @@ -2051,7 +2051,7 @@ pushdecl (tree x) && !TREE_PUBLIC (x) && !DECL_INITIAL (x)) { if (warn_nested_externs && !DECL_IN_SYSTEM_HEADER (x)) - warning ("nested static declaration of '%D'", x); + warning ("nested static declaration of %qD", x); while (b && !B_IN_FILE_SCOPE (b)) b = b->shadowed; @@ -2146,7 +2146,7 @@ implicit_decl_warning (tree id, tree olddecl) default: gcc_unreachable (); } - diag (N_("implicit declaration of function '%E'"), id); + diag (N_("implicit declaration of function %qE"), id); if (olddecl) locate_old_decl (olddecl, diag); } @@ -2261,12 +2261,12 @@ undeclared_variable (tree id) if (current_function_decl == 0) { - error ("'%E' undeclared here (not in a function)", id); + error ("%qE undeclared here (not in a function)", id); scope = current_scope; } else { - error ("'%E' undeclared (first use in this function)", id); + error ("%qE undeclared (first use in this function)", id); if (! already) { @@ -2309,7 +2309,7 @@ lookup_label (tree name) if (current_function_decl == 0) { - error ("label %s referenced outside of any function", + error ("label %qs referenced outside of any function", IDENTIFIER_POINTER (name)); return 0; } @@ -2352,7 +2352,7 @@ declare_label (tree name) at this scope */ if (b && B_IN_CURRENT_SCOPE (b)) { - error ("duplicate label declaration `%s'", IDENTIFIER_POINTER (name)); + error ("duplicate label declaration %qs", IDENTIFIER_POINTER (name)); locate_old_decl (b->decl, error); /* Just use the previous declaration. */ @@ -2387,7 +2387,7 @@ define_label (location_t location, tree name) || (DECL_CONTEXT (label) != current_function_decl && C_DECLARED_LABEL_FLAG (label)))) { - error ("%Hduplicate label `%D'", &location, label); + error ("%Hduplicate label %qD", &location, label); locate_old_decl (label, error); return 0; } @@ -2410,7 +2410,7 @@ define_label (location_t location, tree name) if (warn_traditional && !in_system_header && lookup_name (name)) warning ("%Htraditional C lacks a separate namespace for labels, " - "identifier `%s' conflicts", &location, + "identifier %qs conflicts", &location, IDENTIFIER_POINTER (name)); /* Mark label as having been defined. */ @@ -2475,7 +2475,7 @@ void pending_xref_error (void) { if (pending_invalid_xref != 0) - error ("%H`%s' defined as wrong kind of tag", + error ("%H%qs defined as wrong kind of tag", &pending_invalid_xref_location, IDENTIFIER_POINTER (pending_invalid_xref)); pending_invalid_xref = 0; @@ -2808,12 +2808,13 @@ build_array_declarator (tree expr, struct c_declspecs *quals, bool static_p, if (pedantic && !flag_isoc99) { if (static_p || quals != NULL) - pedwarn ("ISO C90 does not support `static' or type qualifiers in parameter array declarators"); + pedwarn ("ISO C90 does not support % or type " + "qualifiers in parameter array declarators"); if (vla_unspec_p) - pedwarn ("ISO C90 does not support `[*]' array declarators"); + pedwarn ("ISO C90 does not support %<[*]%> array declarators"); } if (vla_unspec_p) - warning ("GCC does not yet properly implement `[*]' array declarators"); + warning ("GCC does not yet properly implement %<[*]%> array declarators"); return declarator; } @@ -2888,7 +2889,7 @@ start_decl (struct c_declarator *declarator, struct c_declspecs *declspecs, if (warn_main > 0 && TREE_CODE (decl) != FUNCTION_DECL && MAIN_NAME_P (DECL_NAME (decl))) - warning ("%J'%D' is usually a function", decl, decl); + warning ("%J%qD is usually a function", decl, decl); if (initialized) /* Is it valid for this decl to have an initializer at all? @@ -2897,18 +2898,18 @@ start_decl (struct c_declarator *declarator, struct c_declspecs *declspecs, switch (TREE_CODE (decl)) { case TYPE_DECL: - error ("typedef '%D' is initialized (use __typeof__ instead)", decl); + error ("typedef %qD is initialized (use __typeof__ instead)", decl); initialized = 0; break; case FUNCTION_DECL: - error ("function '%D' is initialized like a variable", decl); + error ("function %qD is initialized like a variable", decl); initialized = 0; break; case PARM_DECL: /* DECL_INITIAL in a PARM_DECL is really DECL_ARG_TYPE. */ - error ("parameter '%D' is initialized", decl); + error ("parameter %qD is initialized", decl); initialized = 0; break; @@ -2933,12 +2934,12 @@ start_decl (struct c_declarator *declarator, struct c_declspecs *declspecs, } else if (TREE_CODE (TREE_TYPE (decl)) != ARRAY_TYPE) { - error ("variable '%D' has initializer but incomplete type", decl); + error ("variable %qD has initializer but incomplete type", decl); initialized = 0; } else if (!COMPLETE_TYPE_P (TREE_TYPE (TREE_TYPE (decl)))) { - error ("elements of array '%D' have incomplete type", decl); + error ("elements of array %qD have incomplete type", decl); initialized = 0; } } @@ -3005,7 +3006,7 @@ 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 ("%Jinline function '%D' given attribute noinline", decl, decl); + warning ("%Jinline function %qD given attribute noinline", decl, decl); /* Add this decl to the current scope. TEM may equal DECL or it may be a previous decl of the same name. */ @@ -3069,12 +3070,12 @@ finish_decl (tree decl, tree init, tree asmspec_tree) type = TREE_TYPE (decl); if (failure == 1) - error ("%Jinitializer fails to determine size of '%D'", decl, decl); + error ("%Jinitializer fails to determine size of %qD", decl, decl); else if (failure == 2) { if (do_default) - error ("%Jarray size missing in '%D'", decl, decl); + error ("%Jarray size missing in %qD", decl, decl); /* If a `static' var's size isn't known, make it extern as well as static, so it does not get allocated. @@ -3090,7 +3091,7 @@ finish_decl (tree decl, tree init, tree asmspec_tree) warn only if the value is less than zero. */ else if (pedantic && TYPE_DOMAIN (type) != 0 && tree_int_cst_sgn (TYPE_MAX_VALUE (TYPE_DOMAIN (type))) < 0) - error ("%Jzero or negative size array '%D'", decl, decl); + error ("%Jzero or negative size array %qD", decl, decl); layout_decl (decl, 0); } @@ -3116,7 +3117,7 @@ finish_decl (tree decl, tree init, tree asmspec_tree) is an error. */ : !DECL_EXTERNAL (decl))) { - error ("%Jstorage size of '%D' isn't known", decl, decl); + error ("%Jstorage size of %qD isn%'t known", decl, decl); TREE_TYPE (decl) = error_mark_node; } @@ -3126,7 +3127,7 @@ finish_decl (tree decl, tree init, tree asmspec_tree) if (TREE_CODE (DECL_SIZE (decl)) == INTEGER_CST) constant_expression_warning (DECL_SIZE (decl)); else - error ("%Jstorage size of '%D' isn't constant", decl, decl); + error ("%Jstorage size of %qD isn%'t constant", decl, decl); } if (TREE_USED (type)) @@ -3182,7 +3183,7 @@ finish_decl (tree decl, tree init, tree asmspec_tree) && !C_DECL_REGISTER (decl) && !TREE_STATIC (decl)) warning ("%Jignoring asm-specifier for non-static local " - "variable '%D'", decl, decl); + "variable %qD", decl, decl); else if (C_DECL_REGISTER (decl)) change_decl_assembler_name (decl, get_identifier (asmspec)); else @@ -3533,7 +3534,7 @@ check_bitfield_type_and_width (tree *type, tree *width, const char *orig_name) field widths. */ if (TREE_CODE (*width) != INTEGER_CST) { - error ("bit-field `%s' width not an integer constant", name); + error ("bit-field %qs width not an integer constant", name); *width = integer_one_node; } else @@ -3541,12 +3542,12 @@ check_bitfield_type_and_width (tree *type, tree *width, const char *orig_name) constant_expression_warning (*width); if (tree_int_cst_sgn (*width) < 0) { - error ("negative width in bit-field `%s'", name); + error ("negative width in bit-field %qs", name); *width = integer_one_node; } else if (integer_zerop (*width) && orig_name) { - error ("zero width for bit-field `%s'", name); + error ("zero width for bit-field %qs", name); *width = integer_one_node; } } @@ -3556,7 +3557,7 @@ check_bitfield_type_and_width (tree *type, tree *width, const char *orig_name) && TREE_CODE (*type) != BOOLEAN_TYPE && TREE_CODE (*type) != ENUMERAL_TYPE) { - error ("bit-field `%s' has invalid type", name); + error ("bit-field %qs has invalid type", name); *type = unsigned_type_node; } @@ -3565,7 +3566,7 @@ check_bitfield_type_and_width (tree *type, tree *width, const char *orig_name) && type_mv != integer_type_node && type_mv != unsigned_type_node && type_mv != boolean_type_node) - pedwarn ("type of bit-field `%s' is a GCC extension", name); + pedwarn ("type of bit-field %qs is a GCC extension", name); if (type_mv == boolean_type_node) max_width = CHAR_TYPE_SIZE; @@ -3574,7 +3575,7 @@ check_bitfield_type_and_width (tree *type, tree *width, const char *orig_name) if (0 < compare_tree_int (*width, max_width)) { - error ("width of `%s' exceeds its type", name); + error ("width of %qs exceeds its type", name); w = max_width; *width = build_int_cst (NULL_TREE, w); } @@ -3587,7 +3588,7 @@ check_bitfield_type_and_width (tree *type, tree *width, const char *orig_name) if (!lt || w < min_precision (lt->enum_min, TYPE_UNSIGNED (*type)) || w < min_precision (lt->enum_max, TYPE_UNSIGNED (*type))) - warning ("`%s' is narrower than values of its type", name); + warning ("%qs is narrower than values of its type", name); } } @@ -3723,7 +3724,7 @@ grokdeclarator (const struct c_declarator *declarator, && funcdef_flag) warn_about_return_type = 1; else if (warn_implicit_int || flag_isoc99) - pedwarn_c99 ("type defaults to `int' in declaration of `%s'", + pedwarn_c99 ("type defaults to % in declaration of %qs", name); } @@ -3752,36 +3753,36 @@ grokdeclarator (const struct c_declarator *declarator, if ((specbits & 1 << (int) RID_LONG) && (specbits & 1 << (int) RID_SHORT)) - error ("both long and short specified for `%s'", name); + error ("both long and short specified for %qs", name); else if (((specbits & 1 << (int) RID_LONG) || (specbits & 1 << (int) RID_SHORT)) && declspecs->explicit_char_p) - error ("long or short specified with char for `%s'", name); + error ("long or short specified with char for %qs", name); else if (((specbits & 1 << (int) RID_LONG) || (specbits & 1 << (int) RID_SHORT)) && TREE_CODE (type) == REAL_TYPE) { static int already = 0; - error ("long or short specified with floating type for `%s'", name); + error ("long or short specified with floating type for %qs", name); if (! already && ! pedantic) { - error ("the only valid combination is `long double'"); + error ("the only valid combination is %"); already = 1; } } else if ((specbits & 1 << (int) RID_SIGNED) && (specbits & 1 << (int) RID_UNSIGNED)) - error ("both signed and unsigned specified for `%s'", name); + error ("both signed and unsigned specified for %qs", name); else if (TREE_CODE (type) != INTEGER_TYPE) - error ("long, short, signed or unsigned invalid for `%s'", name); + error ("long, short, signed or unsigned invalid for %qs", name); else { ok = 1; if (!declspecs->explicit_int_p && !defaulted_int && !declspecs->explicit_char_p) { - error ("long, short, signed or unsigned used invalidly for `%s'", + error ("long, short, signed or unsigned used invalidly for %qs", name); ok = 0; } @@ -3799,7 +3800,7 @@ grokdeclarator (const struct c_declarator *declarator, if ((specbits & (1 << (int) RID_COMPLEX)) && TREE_CODE (type) != INTEGER_TYPE && TREE_CODE (type) != REAL_TYPE) { - error ("complex invalid for `%s'", name); + error ("complex invalid for %qs", name); specbits &= ~(1 << (int) RID_COMPLEX); } @@ -3853,7 +3854,8 @@ grokdeclarator (const struct c_declarator *declarator, | (1 << (int) RID_UNSIGNED)))) { if (pedantic) - pedwarn ("ISO C does not support plain `complex' meaning `double complex'"); + pedwarn ("ISO C does not support plain % meaning " + "%"); type = complex_double_type_node; } else if (type == integer_type_node) @@ -3900,11 +3902,11 @@ grokdeclarator (const struct c_declarator *declarator, if (pedantic && !flag_isoc99) { if (constp > 1) - pedwarn ("duplicate `const'"); + pedwarn ("duplicate %"); if (restrictp > 1) - pedwarn ("duplicate `restrict'"); + pedwarn ("duplicate %"); if (volatilep > 1) - pedwarn ("duplicate `volatile'"); + pedwarn ("duplicate %"); } if (! flag_gen_aux_info && (TYPE_QUALS (type))) type = TYPE_MAIN_VARIANT (type); @@ -3972,14 +3974,14 @@ grokdeclarator (const struct c_declarator *declarator, else if (current_scope == file_scope) { if (storage_class == csc_auto) - error ("file-scope declaration of `%s' specifies `auto'", name); + error ("file-scope declaration of %qs specifies %", name); if (pedantic && storage_class == csc_register) pedwarn ("file-scope declaration of %qs specifies %", name); } else { if (storage_class == csc_extern && funcdef_flag) - error ("nested function `%s' declared `extern'", name); + error ("nested function %qs declared %", name); else if (threadp && storage_class == csc_none) { error ("function-scope %qs implicitly auto and declared " @@ -4065,13 +4067,13 @@ grokdeclarator (const struct c_declarator *declarator, if (VOID_TYPE_P (type)) { - error ("declaration of `%s' as array of voids", name); + error ("declaration of %qs as array of voids", name); type = error_mark_node; } if (TREE_CODE (type) == FUNCTION_TYPE) { - error ("declaration of `%s' as array of functions", name); + error ("declaration of %qs as array of functions", name); type = error_mark_node; } @@ -4096,19 +4098,19 @@ grokdeclarator (const struct c_declarator *declarator, if (! INTEGRAL_TYPE_P (TREE_TYPE (size))) { - error ("size of array `%s' has non-integer type", name); + error ("size of array %qs has non-integer type", name); size = integer_one_node; } if (pedantic && integer_zerop (size)) - pedwarn ("ISO C forbids zero-size array `%s'", name); + pedwarn ("ISO C forbids zero-size array %qs", name); if (TREE_CODE (size) == INTEGER_CST) { constant_expression_warning (size); if (tree_int_cst_sgn (size) < 0) { - error ("size of array `%s' is negative", name); + error ("size of array %qs is negative", name); size = integer_one_node; } } @@ -4122,10 +4124,11 @@ grokdeclarator (const struct c_declarator *declarator, if (!flag_isoc99 && pedantic) { if (TREE_CONSTANT (size)) - pedwarn ("ISO C90 forbids array `%s' whose size can't be evaluated", + pedwarn ("ISO C90 forbids array %qs whose size " + "can%'t be evaluated", name); else - pedwarn ("ISO C90 forbids variable-size array `%s'", + pedwarn ("ISO C90 forbids variable-size array %qs", name); } } @@ -4158,7 +4161,7 @@ grokdeclarator (const struct c_declarator *declarator, complication. */ if (TREE_OVERFLOW (itype)) { - error ("size of array `%s' is too large", name); + error ("size of array %qs is too large", name); type = error_mark_node; continue; } @@ -4241,12 +4244,12 @@ grokdeclarator (const struct c_declarator *declarator, /* Warn about some types functions can't return. */ if (TREE_CODE (type) == FUNCTION_TYPE) { - error ("`%s' declared as function returning a function", name); + error ("%qs declared as function returning a function", name); type = integer_type_node; } if (TREE_CODE (type) == ARRAY_TYPE) { - error ("`%s' declared as function returning an array", name); + error ("%qs declared as function returning an array", name); type = integer_type_node; } @@ -4342,7 +4345,7 @@ grokdeclarator (const struct c_declarator *declarator, && COMPLETE_TYPE_P (type) && TREE_OVERFLOW (TYPE_SIZE (type))) { - error ("size of array `%s' is too large", name); + error ("size of array %qs is too large", name); /* If we proceed with the array type as it is, we'll eventually crash in tree_low_cst(). */ type = error_mark_node; @@ -4412,7 +4415,7 @@ grokdeclarator (const struct c_declarator *declarator, && !(storage_class == csc_static || storage_class == csc_register))))) { - error ("variable or field `%s' declared void", name); + error ("variable or field %qs declared void", name); type = integer_type_node; } @@ -4499,13 +4502,13 @@ grokdeclarator (const struct c_declarator *declarator, if (TREE_CODE (type) == FUNCTION_TYPE) { - error ("field `%s' declared as a function", name); + error ("field %qs declared as a function", name); type = build_pointer_type (type); } else if (TREE_CODE (type) != ERROR_MARK && !COMPLETE_OR_UNBOUND_ARRAY_TYPE_P (type)) { - error ("field `%s' has incomplete type", name); + error ("field %qs has incomplete type", name); type = error_mark_node; } /* Move type qualifiers down to element of an array. */ @@ -4522,7 +4525,7 @@ grokdeclarator (const struct c_declarator *declarator, else if (TREE_CODE (type) == FUNCTION_TYPE) { if (storage_class == csc_register || threadp) - error ("invalid storage class for function `%s'", name); + error ("invalid storage class for function %qs", name); else if (current_scope != file_scope) { /* Function declaration not at file scope. Storage @@ -4533,10 +4536,10 @@ grokdeclarator (const struct c_declarator *declarator, if (storage_class == csc_auto) { if (pedantic) - pedwarn ("invalid storage class for function `%s'", name); + pedwarn ("invalid storage class for function %qs", name); } if (storage_class == csc_static) - error ("invalid storage class for function `%s'", name); + error ("invalid storage class for function %qs", name); } decl = build_decl (FUNCTION_DECL, declarator->u.id, type); @@ -4551,7 +4554,7 @@ grokdeclarator (const struct c_declarator *declarator, that the function does not return. */ if ((type_quals & TYPE_QUAL_VOLATILE) && !VOID_TYPE_P (TREE_TYPE (TREE_TYPE (decl)))) - warning ("`noreturn' function returns non-void value"); + warning ("% function returns non-void value"); /* Every function declaration is an external reference (DECL_EXTERNAL) except for those which are not at file @@ -4579,7 +4582,7 @@ grokdeclarator (const struct c_declarator *declarator, if (MAIN_NAME_P (declarator->u.id)) { if (declspecs->inline_p) - warning ("cannot inline function `main'"); + warning ("cannot inline function %"); } else if (declspecs->inline_p) { @@ -4636,8 +4639,8 @@ grokdeclarator (const struct c_declarator *declarator, && global_decl != visible_decl && TREE_CODE (global_decl) == VAR_DECL && !TREE_PUBLIC (global_decl)) - error ("variable previously declared 'static' redeclared " - "'extern'"); + error ("variable previously declared % redeclared " + "%"); } decl = build_decl (VAR_DECL, declarator->u.id, type); @@ -4645,7 +4648,7 @@ grokdeclarator (const struct c_declarator *declarator, C_DECL_VARIABLE_SIZE (decl) = 1; if (declspecs->inline_p) - pedwarn ("%Jvariable '%D' declared `inline'", decl, decl); + pedwarn ("%Jvariable %qD declared %", decl, decl); /* At file scope, an initialized extern declaration may follow a static declaration. In that case, DECL_EXTERNAL will be @@ -4738,7 +4741,7 @@ grokparms (struct c_arg_info *arg_info, bool funcdef_flag) if (warn_strict_prototypes && arg_types == 0 && !funcdef_flag && !in_system_header) - warning ("function declaration isn't a prototype"); + warning ("function declaration isn%'t a prototype"); if (arg_types == error_mark_node) return 0; /* don't set TYPE_ARG_TYPES in this case */ @@ -4775,7 +4778,7 @@ grokparms (struct c_arg_info *arg_info, bool funcdef_flag) if (funcdef_flag) { if (DECL_NAME (parm)) - error ("%Jparameter %u ('%D') has incomplete type", + error ("%Jparameter %u (%qD) has incomplete type", parm, parmno, parm); else error ("%Jparameter %u has incomplete type", @@ -4787,7 +4790,7 @@ grokparms (struct c_arg_info *arg_info, bool funcdef_flag) else { if (DECL_NAME (parm)) - warning ("%Jparameter %u ('%D') has incomplete type", + warning ("%Jparameter %u (%qD) has incomplete type", parm, parmno, parm); else warning ("%Jparameter %u has incomplete type", @@ -4847,11 +4850,11 @@ get_parm_info (bool ellipsis) if (TREE_THIS_VOLATILE (b->decl) || TREE_READONLY (b->decl) || C_DECL_REGISTER (b->decl)) - error ("'void' as only parameter may not be qualified"); + error ("% as only parameter may not be qualified"); /* There cannot be an ellipsis. */ if (ellipsis) - error ("'void' must be the only parameter"); + error ("% must be the only parameter"); arg_info->types = void_list_node; return arg_info; @@ -4879,14 +4882,14 @@ get_parm_info (bool ellipsis) /* Check for forward decls that never got their actual decl. */ if (TREE_ASM_WRITTEN (decl)) - error ("%Jparameter '%D' has just a forward declaration", + error ("%Jparameter %qD has just a forward declaration", decl, decl); /* Check for (..., void, ...) and issue an error. */ else if (VOID_TYPE_P (type) && !DECL_NAME (decl)) { if (!gave_void_only_once_err) { - error ("'void' must be the only parameter"); + error ("% must be the only parameter"); gave_void_only_once_err = true; } } @@ -4925,7 +4928,7 @@ get_parm_info (bool ellipsis) { if (b->id) /* The %s will be one of 'struct', 'union', or 'enum'. */ - warning ("'%s %E' declared inside parameter list", + warning ("%<%s %E%> declared inside parameter list", keyword, b->id); else /* The %s will be one of 'struct', 'union', or 'enum'. */ @@ -5048,9 +5051,9 @@ start_struct (enum tree_code code, tree name) if (TYPE_FIELDS (ref)) { if (code == UNION_TYPE) - error ("redefinition of `union %s'", IDENTIFIER_POINTER (name)); + error ("redefinition of %", IDENTIFIER_POINTER (name)); else - error ("redefinition of `struct %s'", IDENTIFIER_POINTER (name)); + error ("redefinition of %", IDENTIFIER_POINTER (name)); } } else @@ -5166,7 +5169,7 @@ detect_field_duplicates (tree fieldlist) for (y = fieldlist; y != x; y = TREE_CHAIN (y)) if (DECL_NAME (y) == DECL_NAME (x)) { - error ("%Jduplicate member '%D'", x, x); + error ("%Jduplicate member %qD", x, x); DECL_NAME (x) = NULL_TREE; } } @@ -5182,7 +5185,7 @@ detect_field_duplicates (tree fieldlist) slot = htab_find_slot (htab, y, INSERT); if (*slot) { - error ("%Jduplicate member '%D'", x, x); + error ("%Jduplicate member %qD", x, x); DECL_NAME (x) = NULL_TREE; } *slot = y; @@ -5260,7 +5263,7 @@ finish_struct (tree t, tree fieldlist, tree attributes) /* Detect invalid nested redefinition. */ if (TREE_TYPE (x) == t) - error ("nested redefinition of `%s'", + error ("nested redefinition of %qs", IDENTIFIER_POINTER (TYPE_NAME (t))); if (DECL_INITIAL (x)) @@ -5470,7 +5473,7 @@ start_enum (tree name) if (TYPE_VALUES (enumtype) != 0) { /* This enum is a named one that has been declared already. */ - error ("redeclaration of `enum %s'", IDENTIFIER_POINTER (name)); + error ("redeclaration of %", IDENTIFIER_POINTER (name)); /* Completely replace its old definition. The old enumerators remain defined, however. */ @@ -5649,7 +5652,7 @@ build_enumerator (tree name, tree value) value = 0; else if (TREE_CODE (value) != INTEGER_CST) { - error ("enumerator value for '%E' is not an integer constant", name); + error ("enumerator value for %qE is not an integer constant", name); value = 0; } else @@ -5671,7 +5674,7 @@ build_enumerator (tree name, tree value) if (pedantic && ! int_fits_type_p (value, integer_type_node)) { - pedwarn ("ISO C restricts enumerator values to range of `int'"); + pedwarn ("ISO C restricts enumerator values to range of %"); /* XXX This causes -pedantic to change the meaning of the program. Remove? -zw 2004-03-15 */ value = convert (integer_type_node, value); @@ -5741,7 +5744,7 @@ start_function (struct c_declspecs *declspecs, struct c_declarator *declarator, if (DECL_DECLARED_INLINE_P (decl1) && DECL_UNINLINABLE (decl1) && lookup_attribute ("noinline", DECL_ATTRIBUTES (decl1))) - warning ("%Jinline function '%D' given attribute noinline", decl1, decl1); + warning ("%Jinline function %qD given attribute noinline", decl1, decl1); announce_function (decl1); @@ -5755,7 +5758,7 @@ start_function (struct c_declspecs *declspecs, struct c_declarator *declarator, } if (warn_about_return_type) - pedwarn_c99 ("return type defaults to `int'"); + pedwarn_c99 ("return type defaults to %"); /* Make the init_value nonzero so pushdecl knows this is not tentative. error_mark_node is replaced below (in pop_scope) with the BLOCK. */ @@ -5780,32 +5783,32 @@ start_function (struct c_declspecs *declspecs, struct c_declarator *declarator, if (warn_strict_prototypes && TYPE_ARG_TYPES (TREE_TYPE (decl1)) == 0 && C_DECL_ISNT_PROTOTYPE (old_decl)) - warning ("function declaration isn't a prototype"); + warning ("function declaration isn%'t a prototype"); /* Optionally warn of any global def with no previous prototype. */ else if (warn_missing_prototypes && TREE_PUBLIC (decl1) && ! MAIN_NAME_P (DECL_NAME (decl1)) && C_DECL_ISNT_PROTOTYPE (old_decl)) - warning ("%Jno previous prototype for '%D'", decl1, decl1); + warning ("%Jno previous prototype for %qD", decl1, decl1); /* Optionally warn of any def with no previous prototype if the function has already been used. */ else if (warn_missing_prototypes && old_decl != 0 && TREE_USED (old_decl) && TYPE_ARG_TYPES (TREE_TYPE (old_decl)) == 0) - warning ("%J'%D' was used with no prototype before its definition", + warning ("%J%qD was used with no prototype before its definition", decl1, decl1); /* Optionally warn of any global def with no previous declaration. */ else if (warn_missing_declarations && TREE_PUBLIC (decl1) && old_decl == 0 && ! MAIN_NAME_P (DECL_NAME (decl1))) - warning ("%Jno previous declaration for '%D'", decl1, decl1); + warning ("%Jno previous declaration for %qD", decl1, decl1); /* Optionally warn of any def with no previous declaration if the function has already been used. */ else if (warn_missing_declarations && old_decl != 0 && TREE_USED (old_decl) && C_DECL_IMPLICIT (old_decl)) - warning ("%J`%D' was used with no declaration before its definition", + warning ("%J%qD was used with no declaration before its definition", decl1, decl1); /* This is a definition, not a reference. @@ -5838,7 +5841,7 @@ start_function (struct c_declspecs *declspecs, struct c_declarator *declarator, if (TYPE_MAIN_VARIANT (TREE_TYPE (TREE_TYPE (decl1))) != integer_type_node) - pedwarn ("%Jreturn type of '%D' is not `int'", decl1, decl1); + pedwarn ("%Jreturn type of %qD is not %", decl1, decl1); for (args = TYPE_ARG_TYPES (TREE_TYPE (decl1)); args; args = TREE_CHAIN (args)) @@ -5853,7 +5856,7 @@ start_function (struct c_declspecs *declspecs, struct c_declarator *declarator, { case 1: if (TYPE_MAIN_VARIANT (type) != integer_type_node) - pedwarn ("%Jfirst argument of '%D' should be `int'", + pedwarn ("%Jfirst argument of %qD should be %", decl1, decl1); break; @@ -5862,7 +5865,7 @@ start_function (struct c_declspecs *declspecs, struct c_declarator *declarator, || TREE_CODE (TREE_TYPE (type)) != POINTER_TYPE || (TYPE_MAIN_VARIANT (TREE_TYPE (TREE_TYPE (type))) != char_type_node)) - pedwarn ("%Jsecond argument of '%D' should be 'char **'", + pedwarn ("%Jsecond argument of %qD should be %", decl1, decl1); break; @@ -5871,8 +5874,8 @@ start_function (struct c_declspecs *declspecs, struct c_declarator *declarator, || TREE_CODE (TREE_TYPE (type)) != POINTER_TYPE || (TYPE_MAIN_VARIANT (TREE_TYPE (TREE_TYPE (type))) != char_type_node)) - pedwarn ("%Jthird argument of '%D' should probably be " - "'char **'", decl1, decl1); + pedwarn ("%Jthird argument of %qD should probably be " + "%", decl1, decl1); break; } } @@ -5881,10 +5884,10 @@ start_function (struct c_declspecs *declspecs, struct c_declarator *declarator, argument because it's only mentioned in an appendix of the standard. */ if (argct > 0 && (argct < 2 || argct > 3)) - pedwarn ("%J'%D' takes only zero or two arguments", decl1, decl1); + pedwarn ("%J%qD takes only zero or two arguments", decl1, decl1); if (! TREE_PUBLIC (decl1)) - pedwarn ("%J'%D' is normally a non-static function", decl1, decl1); + pedwarn ("%J%qD is normally a non-static function", decl1, decl1); } /* Record the decl so that the function name is defined. @@ -6014,12 +6017,12 @@ store_parm_decls_oldstyle (tree fndecl, const struct c_arg_info *arg_info) decl = b->decl; /* If we got something other than a PARM_DECL it is an error. */ if (TREE_CODE (decl) != PARM_DECL) - error ("%J'%D' declared as a non-parameter", decl, decl); + error ("%J%qD declared as a non-parameter", decl, decl); /* If the declaration is already marked, we have a duplicate name. Complain and ignore the duplicate. */ else if (DECL_WEAK (decl)) { - error ("%Jmultiple parameters named '%D'", decl, decl); + error ("%Jmultiple parameters named %qD", decl, decl); TREE_PURPOSE (parm) = 0; continue; } @@ -6027,7 +6030,7 @@ store_parm_decls_oldstyle (tree fndecl, const struct c_arg_info *arg_info) an int. */ else if (VOID_TYPE_P (TREE_TYPE (decl))) { - error ("%Jparameter '%D' declared with void type", decl, decl); + error ("%Jparameter %qD declared with void type", decl, decl); TREE_TYPE (decl) = integer_type_node; DECL_ARG_TYPE (decl) = integer_type_node; layout_decl (decl, 0); @@ -6042,9 +6045,9 @@ store_parm_decls_oldstyle (tree fndecl, const struct c_arg_info *arg_info) pushdecl (decl); if (flag_isoc99) - pedwarn ("%Jtype of '%D' defaults to 'int'", decl, decl); + pedwarn ("%Jtype of %qD defaults to %", decl, decl); else if (extra_warnings) - warning ("%Jtype of '%D' defaults to 'int'", decl, decl); + warning ("%Jtype of %qD defaults to %", decl, decl); } TREE_PURPOSE (parm) = decl; @@ -6062,13 +6065,13 @@ store_parm_decls_oldstyle (tree fndecl, const struct c_arg_info *arg_info) if (!COMPLETE_TYPE_P (TREE_TYPE (parm))) { - error ("%Jparameter '%D' has incomplete type", parm, parm); + error ("%Jparameter %qD has incomplete type", parm, parm); TREE_TYPE (parm) = error_mark_node; } if (! DECL_WEAK (parm)) { - error ("%Jdeclaration for parameter '%D' but no such parameter", + error ("%Jdeclaration for parameter %qD but no such parameter", parm, parm); /* Pretend the parameter was not missing. @@ -6118,7 +6121,7 @@ store_parm_decls_oldstyle (tree fndecl, const struct c_arg_info *arg_info) if (parm == 0 || type == 0 || TYPE_MAIN_VARIANT (TREE_VALUE (type)) == void_type_node) { - error ("number of arguments doesn't match prototype"); + error ("number of arguments doesn%'t match prototype"); error ("%Hprototype declaration", ¤t_function_prototype_locus); break; @@ -6147,15 +6150,15 @@ store_parm_decls_oldstyle (tree fndecl, const struct c_arg_info *arg_info) if (pedantic) { - pedwarn ("promoted argument '%D' " - "doesn't match prototype", parm); + pedwarn ("promoted argument %qD " + "doesn%'t match prototype", parm); pedwarn ("%Hprototype declaration", ¤t_function_prototype_locus); } } else { - error ("argument '%D' doesn't match prototype", parm); + error ("argument %qD doesn%'t match prototype", parm); error ("%Hprototype declaration", ¤t_function_prototype_locus); } @@ -6335,7 +6338,7 @@ finish_function (void) /* If warn_main is 1 (-Wmain) or 2 (-Wall), we have already warned. If warn_main is -1 (-Wno-main) we don't want to be warned. */ if (!warn_main) - pedwarn ("%Jreturn type of '%D' is not `int'", fndecl, fndecl); + pedwarn ("%Jreturn type of %qD is not %", fndecl, fndecl); } else { @@ -6449,7 +6452,7 @@ check_for_loop_decls (void) /* If we get here, declarations have been used in a for loop without the C99 for loop scope. This doesn't make much sense, so don't allow it. */ - error ("'for' loop initial declaration used outside C99 mode"); + error ("% loop initial declaration used outside C99 mode"); return; } /* C99 subclause 6.8.5 paragraph 3: @@ -6478,24 +6481,27 @@ check_for_loop_decls (void) { case VAR_DECL: if (TREE_STATIC (decl)) - error ("%Jdeclaration of static variable '%D' in 'for' loop " + error ("%Jdeclaration of static variable %qD in % loop " "initial declaration", decl, decl); else if (DECL_EXTERNAL (decl)) - error ("%Jdeclaration of 'extern' variable '%D' in 'for' loop " + error ("%Jdeclaration of % variable %qD in % loop " "initial declaration", decl, decl); break; case RECORD_TYPE: - error ("'struct %E' declared in 'for' loop initial declaration", id); + error ("% declared in % loop initial declaration", + id); break; case UNION_TYPE: - error ("'union %E' declared in 'for' loop initial declaration", id); + error ("% declared in % loop initial declaration", + id); break; case ENUMERAL_TYPE: - error ("'enum %E' declared in 'for' loop initial declaration", id); + error ("% declared in % loop initial declaration", + id); break; default: - error ("%Jdeclaration of non-variable '%D' in 'for' loop " + error ("%Jdeclaration of non-variable %qD in % loop " "initial declaration", decl, decl); } } @@ -6968,7 +6974,7 @@ c_write_global_declarations_1 (tree globals) && !TREE_PUBLIC (decl) && C_DECL_USED (decl)) { - pedwarn ("%J%<%F%> used but never defined", decl, decl); + pedwarn ("%J%qF used but never defined", decl, decl); TREE_NO_WARNING (decl) = 1; } } diff --git a/gcc/c-lex.c b/gcc/c-lex.c index 5a2d947be05..d8eaddf015f 100644 --- a/gcc/c-lex.c +++ b/gcc/c-lex.c @@ -584,7 +584,7 @@ interpret_integer (const cpp_token *token, unsigned int flags) if (itk > itk_unsigned_long && (flags & CPP_N_WIDTH) != CPP_N_LARGE && ! in_system_header && ! flag_isoc99) - pedwarn ("integer constant is too large for \"%s\" type", + pedwarn ("integer constant is too large for %qs type", (flags & CPP_N_UNSIGNED) ? "unsigned long" : "long"); value = build_int_cst_wide (type, integer.low, integer.high); @@ -650,7 +650,7 @@ interpret_float (const cpp_token *token, unsigned int flags) ??? That's a dubious reason... is this a mandatory diagnostic or isn't it? -- zw, 2001-08-21. */ if (REAL_VALUE_ISINF (real) && pedantic) - warning ("floating constant exceeds range of \"%s\"", type_name); + warning ("floating constant exceeds range of %<%s%>", type_name); /* Create a node with determined type and value. */ value = build_real (type, real); diff --git a/gcc/c-objc-common.c b/gcc/c-objc-common.c index 9d05a6d97bf..d59aed10beb 100644 --- a/gcc/c-objc-common.c +++ b/gcc/c-objc-common.c @@ -78,7 +78,7 @@ c_cannot_inline_tree_fn (tree *fnp) && lookup_attribute ("always_inline", DECL_ATTRIBUTES (fn)) == NULL) { if (do_warning) - warning ("%Jfunction '%F' can never be inlined because it " + warning ("%Jfunction %qF can never be inlined because it " "is suppressed using -fno-inline", fn, fn); goto cannot_inline; } @@ -88,7 +88,7 @@ c_cannot_inline_tree_fn (tree *fnp) if (!DECL_DECLARED_INLINE_P (fn) && !targetm.binds_local_p (fn)) { if (do_warning) - warning ("%Jfunction '%F' can never be inlined because it might not " + warning ("%Jfunction %qF can never be inlined because it might not " "be bound within this unit of translation", fn, fn); goto cannot_inline; } @@ -96,7 +96,7 @@ c_cannot_inline_tree_fn (tree *fnp) if (! function_attribute_inlinable_p (fn)) { if (do_warning) - warning ("%Jfunction '%F' can never be inlined because it uses " + warning ("%Jfunction %qF can never be inlined because it uses " "attributes conflicting with inlining", fn, fn); goto cannot_inline; } @@ -111,7 +111,7 @@ c_cannot_inline_tree_fn (tree *fnp) if (t) { if (do_warning) - warning ("%Jfunction '%F' can never be inlined because it has " + warning ("%Jfunction %qF can never be inlined because it has " "pending sizes", fn, fn); goto cannot_inline; } @@ -124,7 +124,7 @@ c_cannot_inline_tree_fn (tree *fnp) if (DECL_LANG_SPECIFIC (fn)->pending_sizes) { if (do_warning) - warning ("%Jnested function '%F' can never be inlined because it " + warning ("%Jnested function %qF can never be inlined because it " "has possibly saved pending sizes", fn, fn); goto cannot_inline; } diff --git a/gcc/c-opts.c b/gcc/c-opts.c index c16bebe5c38..c199c48213b 100644 --- a/gcc/c-opts.c +++ b/gcc/c-opts.c @@ -144,16 +144,16 @@ c_common_missing_argument (const char *opt, size_t code) return false; case OPT_fconstant_string_class_: - error ("no class name specified with \"%s\"", opt); + error ("no class name specified with %qs", opt); break; case OPT_A: - error ("assertion missing after \"%s\"", opt); + error ("assertion missing after %qs", opt); break; case OPT_D: case OPT_U: - error ("macro name missing after \"%s\"", opt); + error ("macro name missing after %qs", opt); break; case OPT_F: @@ -162,7 +162,7 @@ c_common_missing_argument (const char *opt, size_t code) case OPT_isysroot: case OPT_isystem: case OPT_iquote: - error ("missing path after \"%s\"", opt); + error ("missing path after %qs", opt); break; case OPT_MF: @@ -171,12 +171,12 @@ c_common_missing_argument (const char *opt, size_t code) case OPT_include: case OPT_imacros: case OPT_o: - error ("missing filename after \"%s\"", opt); + error ("missing filename after %qs", opt); break; case OPT_MQ: case OPT_MT: - error ("missing makefile target after \"%s\"", opt); + error ("missing makefile target after %qs", opt); break; } @@ -539,7 +539,7 @@ c_common_handle_option (size_t scode, const char *arg, int value) case OPT_fvtable_thunks: case OPT_fxref: case OPT_fvtable_gc: - warning ("switch \"%s\" is no longer supported", option->opt_text); + warning ("switch %qs is no longer supported", option->opt_text); break; case OPT_faccess_control: diff --git a/gcc/c-parse.in b/gcc/c-parse.in index b14a5eae6c5..4fefa1bc09e 100644 --- a/gcc/c-parse.in +++ b/gcc/c-parse.in @@ -425,7 +425,7 @@ datadef: | error '}' | ';' { if (pedantic) - pedwarn ("ISO C does not allow extra `;' outside of a function"); } + pedwarn ("ISO C does not allow extra %<;%> outside of a function"); } ; fndef: @@ -541,7 +541,7 @@ unary_expr: in_sizeof--; if (TREE_CODE ($2.value) == COMPONENT_REF && DECL_C_BIT_FIELD (TREE_OPERAND ($2.value, 1))) - error ("`sizeof' applied to a bit-field"); + error ("% applied to a bit-field"); $$ = c_expr_sizeof_expr ($2); } | sizeof '(' typename ')' %prec HYPERUNARY { skip_evaluation--; @@ -1286,7 +1286,7 @@ typespec_nonreserved_nonattr: in_typeof--; if (TREE_CODE ($3.value) == COMPONENT_REF && DECL_C_BIT_FIELD (TREE_OPERAND ($3.value, 1))) - error ("`typeof' applied to a bit-field"); + error ("% applied to a bit-field"); $$ = TREE_TYPE ($3.value); pop_maybe_used (variably_modified_type_p ($$, NULL_TREE)); } | typeof '(' typename ')' @@ -1431,11 +1431,11 @@ initelt: pedwarn ("ISO C90 forbids specifying subobject to initialize"); } | designator initval { if (pedantic) - pedwarn ("obsolete use of designated initializer without `='"); } + pedwarn ("obsolete use of designated initializer without %<=%>"); } | identifier ':' { set_init_label ($1); if (pedantic) - pedwarn ("obsolete use of designated initializer with `:'"); } + pedwarn ("obsolete use of designated initializer with %<:%>"); } initval {} | initval @@ -1675,7 +1675,7 @@ structsp_nonattr: /* In ISO C, enumerated types can be referred to only if already defined. */ if (pedantic && !COMPLETE_TYPE_P ($$)) - pedwarn ("ISO C forbids forward references to `enum' types"); } + pedwarn ("ISO C forbids forward references to % types"); } ; maybecomma: @@ -2448,7 +2448,7 @@ parmlist_2: /* empty */ $$->others = 0; /* Suppress -Wold-style-definition for this case. */ $$->types = error_mark_node; - error ("ISO C requires a named argument before `...'"); + error ("ISO C requires a named argument before %<...%>"); } | parms { $$ = get_parm_info (/*ellipsis=*/false); } @@ -3480,7 +3480,7 @@ _yylex (void) /* These tokens should not survive translation phase 4. */ case CPP_HASH: case CPP_PASTE: - error ("syntax error at '%s' token", NAME(last_token)); + error ("syntax error at %qs token", NAME(last_token)); goto get_next; default: @@ -3518,7 +3518,7 @@ yyprint (FILE *file, int yychar, YYSTYPE yyl) case SCSPEC: case STATIC: if (IDENTIFIER_POINTER (t)) - fprintf (file, " `%s'", IDENTIFIER_POINTER (t)); + fprintf (file, " '%s'", IDENTIFIER_POINTER (t)); break; case CONSTANT: diff --git a/gcc/c-pragma.c b/gcc/c-pragma.c index fe9f17ab569..0b169cf5bd1 100644 --- a/gcc/c-pragma.c +++ b/gcc/c-pragma.c @@ -145,7 +145,7 @@ handle_pragma_pack (cpp_reader * ARG_UNUSED (dummy)) enum { set, push, pop } action; if (c_lex (&x) != CPP_OPEN_PAREN) - GCC_BAD ("missing '(' after '#pragma pack' - ignored"); + GCC_BAD ("missing %<(%> after %<#pragma pack%> - ignored"); token = c_lex (&x); if (token == CPP_CLOSE_PAREN) @@ -158,14 +158,14 @@ handle_pragma_pack (cpp_reader * ARG_UNUSED (dummy)) align = TREE_INT_CST_LOW (x); action = set; if (c_lex (&x) != CPP_CLOSE_PAREN) - GCC_BAD ("malformed '#pragma pack' - ignored"); + GCC_BAD ("malformed %<#pragma pack%> - ignored"); } else if (token == CPP_NAME) { #define GCC_BAD_ACTION do { if (action != pop) \ - GCC_BAD ("malformed '#pragma pack(push[, id][, ])' - ignored"); \ + GCC_BAD ("malformed %<#pragma pack(push[, id][, ])%> - ignored"); \ else \ - GCC_BAD ("malformed '#pragma pack(pop[, id])' - ignored"); \ + GCC_BAD ("malformed %<#pragma pack(pop[, id])%> - ignored"); \ } while (0) const char *op = IDENTIFIER_POINTER (x); @@ -174,7 +174,7 @@ handle_pragma_pack (cpp_reader * ARG_UNUSED (dummy)) else if (!strcmp (op, "pop")) action = pop; else - GCC_BAD2 ("unknown action '%s' for '#pragma pack' - ignored", op); + GCC_BAD2 ("unknown action %qs for %<#pragma pack%> - ignored", op); while ((token = c_lex (&x)) == CPP_COMMA) { @@ -198,10 +198,10 @@ handle_pragma_pack (cpp_reader * ARG_UNUSED (dummy)) #undef GCC_BAD_ACTION } else - GCC_BAD ("malformed '#pragma pack' - ignored"); + GCC_BAD ("malformed %<#pragma pack%> - ignored"); if (c_lex (&x) != CPP_EOF) - warning ("junk at end of '#pragma pack'"); + warning ("junk at end of %<#pragma pack%>"); if (flag_pack_struct) GCC_BAD ("#pragma pack has no effect with -fpack-struct - ignored"); @@ -257,7 +257,7 @@ apply_pragma_weak (tree decl, tree value) if (SUPPORTS_WEAK && DECL_EXTERNAL (decl) && TREE_USED (decl) && !DECL_WEAK (decl) /* Don't complain about a redundant #pragma. */ && TREE_SYMBOL_REFERENCED (DECL_ASSEMBLER_NAME (decl))) - warning ("%Japplying #pragma weak '%D' after first use results " + warning ("%Japplying #pragma weak %qD after first use results " "in unspecified behavior", decl, decl); declare_weak (decl); @@ -578,7 +578,7 @@ handle_pragma_visibility (cpp_reader *dummy ATTRIBUTE_UNUSED) { if (!visidx) { - GCC_BAD ("No matching push for '#pragma GCC visibility pop'"); + GCC_BAD ("No matching push for %<#pragma GCC visibility pop%>"); } else { @@ -589,7 +589,7 @@ handle_pragma_visibility (cpp_reader *dummy ATTRIBUTE_UNUSED) else { if (c_lex (&x) != CPP_OPEN_PAREN) - GCC_BAD ("missing '(' after '#pragma GCC visibility push' - ignored"); + GCC_BAD ("missing %<(%> after %<#pragma GCC visibility push%> - ignored"); token = c_lex (&x); if (token != CPP_NAME) { @@ -618,11 +618,11 @@ handle_pragma_visibility (cpp_reader *dummy ATTRIBUTE_UNUSED) visibility_options.inpragma = 1; } if (c_lex (&x) != CPP_CLOSE_PAREN) - GCC_BAD ("missing '(' after '#pragma GCC visibility push' - ignored"); + GCC_BAD ("missing '(' after %<#pragma GCC visibility push%> - ignored"); } } if (c_lex (&x) != CPP_EOF) - warning ("junk at end of '#pragma GCC visibility'"); + warning ("junk at end of %<#pragma GCC visibility%>"); } #endif diff --git a/gcc/c-tree.h b/gcc/c-tree.h index 0e28dfef3c0..f8601754791 100644 --- a/gcc/c-tree.h +++ b/gcc/c-tree.h @@ -413,8 +413,6 @@ extern void set_init_index (tree, tree); extern void set_init_label (tree); extern void process_init_element (struct c_expr); extern tree build_compound_literal (tree, tree); -extern void pedwarn_c90 (const char *, ...) ATTRIBUTE_PRINTF_1; -extern void pedwarn_c99 (const char *, ...) ATTRIBUTE_PRINTF_1; extern tree c_start_case (tree); extern void c_finish_case (tree); extern tree build_asm_expr (tree, tree, tree, tree, bool); @@ -469,5 +467,13 @@ extern void c_write_global_declarations (void); diagnostic framework extensions, you must include this file before toplev.h, not after. */ #define GCC_DIAG_STYLE __gcc_cdiag__ +#if GCC_VERSION >= 3005 +#define ATTRIBUTE_GCC_CDIAG(m, n) __attribute__ ((__format__ (GCC_DIAG_STYLE, m ,n))) ATTRIBUTE_NONNULL(m) +#else +#define ATTRIBUTE_GCC_CDIAG(m, n) ATTRIBUTE_NONNULL(m) +#endif + +extern void pedwarn_c90 (const char *, ...) ATTRIBUTE_GCC_CDIAG(1,2); +extern void pedwarn_c99 (const char *, ...) ATTRIBUTE_GCC_CDIAG(1,2); #endif /* ! GCC_C_TREE_H */ diff --git a/gcc/c-typeck.c b/gcc/c-typeck.c index 85ba9ce58e2..dd842852cc7 100644 --- a/gcc/c-typeck.c +++ b/gcc/c-typeck.c @@ -125,7 +125,7 @@ c_incomplete_type_error (tree value, tree type) if (value != 0 && (TREE_CODE (value) == VAR_DECL || TREE_CODE (value) == PARM_DECL)) - error ("`%s' has an incomplete type", + error ("%qs has an incomplete type", IDENTIFIER_POINTER (DECL_NAME (value))); else { @@ -169,11 +169,11 @@ c_incomplete_type_error (tree value, tree type) } if (TREE_CODE (TYPE_NAME (type)) == IDENTIFIER_NODE) - error ("invalid use of undefined type `%s %s'", + error ("invalid use of undefined type %<%s %s%>", type_code_string, IDENTIFIER_POINTER (TYPE_NAME (type))); else /* If this type has a typedef-name, the TYPE_NAME is a TYPE_DECL. */ - error ("invalid use of incomplete typedef `%s'", + error ("invalid use of incomplete typedef %qs", IDENTIFIER_POINTER (DECL_NAME (TYPE_NAME (type)))); } } @@ -964,7 +964,7 @@ function_types_compatible_p (tree f1, tree f2) /* 'volatile' qualifiers on a function's return type used to mean the function is noreturn. */ if (TYPE_VOLATILE (ret1) != TYPE_VOLATILE (ret2)) - pedwarn ("function return types not compatible due to `volatile'"); + pedwarn ("function return types not compatible due to %"); if (TYPE_VOLATILE (ret1)) ret1 = build_qualified_type (TYPE_MAIN_VARIANT (ret1), TYPE_QUALS (ret1) & ~TYPE_QUAL_VOLATILE); @@ -1480,7 +1480,7 @@ build_component_ref (tree datum, tree component) if (!field) { - error ("%s has no member named `%s'", + error ("%s has no member named %qs", code == RECORD_TYPE ? "structure" : "union", IDENTIFIER_POINTER (component)); return error_mark_node; @@ -1517,7 +1517,7 @@ build_component_ref (tree datum, tree component) return ref; } else if (code != ERROR_MARK) - error ("request for member `%s' in something not a structure or union", + error ("request for member %qs in something not a structure or union", IDENTIFIER_POINTER (component)); return error_mark_node; @@ -1550,7 +1550,7 @@ build_indirect_ref (tree ptr, const char *errorstring) return error_mark_node; } if (VOID_TYPE_P (t) && skip_evaluation == 0) - warning ("dereferencing `void *' pointer"); + warning ("dereferencing % pointer"); /* We *must* set TREE_READONLY when dereferencing a pointer to const, so that we get the proper error message if the result is used @@ -1567,7 +1567,7 @@ build_indirect_ref (tree ptr, const char *errorstring) } } else if (TREE_CODE (pointer) != ERROR_MARK) - error ("invalid type argument of `%s'", errorstring); + error ("invalid type argument of %qs", errorstring); return error_mark_node; } @@ -1605,7 +1605,7 @@ build_array_ref (tree array, tree index) must have done so deliberately. */ if (warn_char_subscripts && TYPE_MAIN_VARIANT (TREE_TYPE (index)) == char_type_node) - warning ("array subscript has type `char'"); + warning ("array subscript has type %"); /* Apply default promotions *after* noticing character types. */ index = default_conversion (index); @@ -1646,7 +1646,7 @@ build_array_ref (tree array, tree index) while (TREE_CODE (foo) == COMPONENT_REF) foo = TREE_OPERAND (foo, 0); if (TREE_CODE (foo) == VAR_DECL && C_DECL_REGISTER (foo)) - pedwarn ("ISO C forbids subscripting `register' array"); + pedwarn ("ISO C forbids subscripting % array"); else if (! flag_isoc99 && ! lvalue_p (foo)) pedwarn ("ISO C90 forbids subscripting non-lvalue array"); } @@ -1681,7 +1681,7 @@ build_array_ref (tree array, tree index) if (warn_char_subscripts && TREE_CODE (TREE_TYPE (index)) == INTEGER_TYPE && TYPE_MAIN_VARIANT (TREE_TYPE (index)) == char_type_node) - warning ("subscript has type `char'"); + warning ("subscript has type %"); /* Put the integer in IND to simplify error checking. */ if (TREE_CODE (TREE_TYPE (ar)) == INTEGER_TYPE) @@ -1727,7 +1727,7 @@ build_external_ref (tree id, int fun) ref = decl; else if (decl != objc_ivar && !DECL_FILE_SCOPE_P (decl)) { - warning ("local declaration of `%s' hides instance variable", + warning ("local declaration of %qs hides instance variable", IDENTIFIER_POINTER (id)); ref = decl; } @@ -2035,7 +2035,7 @@ convert_arguments (tree typelist, tree values, tree name, tree fundecl) if (type == void_type_node) { if (name) - error ("too many arguments to function `%s'", + error ("too many arguments to function %qs", IDENTIFIER_POINTER (name)); else error ("too many arguments to function"); @@ -2097,7 +2097,9 @@ convert_arguments (tree typelist, tree values, tree name, tree fundecl) /* Warn if any argument is passed as `float', since without a prototype it would be `double'. */ if (formal_prec == TYPE_PRECISION (float_type_node)) - warn_for_assignment ("%s as `float' rather than `double' due to prototype", (char *) 0, name, parmnum + 1); + warn_for_assignment ("%s as % rather than " + "% due to prototype", + (char *) 0, name, parmnum + 1); } /* Detect integer changing in width or signedness. These warnings are only activated with @@ -2174,7 +2176,7 @@ convert_arguments (tree typelist, tree values, tree name, tree fundecl) if (typetail != 0 && TREE_VALUE (typetail) != void_type_node) { if (name) - error ("too few arguments to function `%s'", + error ("too few arguments to function %qs", IDENTIFIER_POINTER (name)); else error ("too few arguments to function"); @@ -2285,7 +2287,7 @@ pointer_diff (tree op0, tree op1) if (pedantic || warn_pointer_arith) { if (TREE_CODE (target_type) == VOID_TYPE) - pedwarn ("pointer of type `void *' used in subtraction"); + pedwarn ("pointer of type % used in subtraction"); if (TREE_CODE (target_type) == FUNCTION_TYPE) pedwarn ("pointer to a function used in subtraction"); } @@ -2406,7 +2408,7 @@ build_unary_op (enum tree_code code, tree xarg, int flag) { code = CONJ_EXPR; if (pedantic) - pedwarn ("ISO C does not support `~' for complex conjugation"); + pedwarn ("ISO C does not support %<~%> for complex conjugation"); if (!noconvert) arg = default_conversion (arg); } @@ -2483,7 +2485,8 @@ build_unary_op (enum tree_code code, tree xarg, int flag) tree real, imag; if (pedantic) - pedwarn ("ISO C does not support `++' and `--' on complex types"); + pedwarn ("ISO C does not support %<++%> and %<--%>" + " on complex types"); arg = stabilize_reference (arg); real = build_unary_op (REALPART_EXPR, arg, 1); @@ -2591,7 +2594,7 @@ build_unary_op (enum tree_code code, tree xarg, int flag) /* Anything not already handled and not a true memory reference or a non-lvalue array is an error. */ else if (typecode != FUNCTION_TYPE && !flag - && !lvalue_or_else (arg, "invalid lvalue in unary `&'")) + && !lvalue_or_else (arg, "invalid lvalue in unary %<&%>")) return error_mark_node; /* Ordinary case; arg is a COMPONENT_REF or a decl. */ @@ -2613,7 +2616,7 @@ build_unary_op (enum tree_code code, tree xarg, int flag) if (TREE_CODE (arg) == COMPONENT_REF && DECL_C_BIT_FIELD (TREE_OPERAND (arg, 1))) { - error ("attempt to take address of bit-field structure member `%D'", + error ("attempt to take address of bit-field structure member %qD", TREE_OPERAND (arg, 1)); return error_mark_node; } @@ -2706,11 +2709,11 @@ readonly_error (tree arg, const char *msgid) if (TYPE_READONLY (TREE_TYPE (TREE_OPERAND (arg, 0)))) readonly_error (TREE_OPERAND (arg, 0), msgid); else - error ("%s of read-only member `%s'", _(msgid), + error ("%s of read-only member %qs", _(msgid), IDENTIFIER_POINTER (DECL_NAME (TREE_OPERAND (arg, 1)))); } else if (TREE_CODE (arg) == VAR_DECL) - error ("%s of read-only variable `%s'", _(msgid), + error ("%s of read-only variable %qs", _(msgid), IDENTIFIER_POINTER (DECL_NAME (arg))); else error ("%s of read-only location", _(msgid)); @@ -2731,7 +2734,7 @@ c_mark_addressable (tree exp) case COMPONENT_REF: if (DECL_C_BIT_FIELD (TREE_OPERAND (x, 1))) { - error ("cannot take address of bit-field `%s'", + error ("cannot take address of bit-field %qs", IDENTIFIER_POINTER (DECL_NAME (TREE_OPERAND (x, 1)))); return false; } @@ -2759,23 +2762,23 @@ c_mark_addressable (tree exp) { if (TREE_PUBLIC (x) || TREE_STATIC (x) || DECL_EXTERNAL (x)) { - error ("global register variable `%s' used in nested function", + error ("global register variable %qs used in nested function", IDENTIFIER_POINTER (DECL_NAME (x))); return false; } - pedwarn ("register variable `%s' used in nested function", + pedwarn ("register variable %qs used in nested function", IDENTIFIER_POINTER (DECL_NAME (x))); } else if (C_DECL_REGISTER (x)) { if (TREE_PUBLIC (x) || TREE_STATIC (x) || DECL_EXTERNAL (x)) { - error ("address of global register variable `%s' requested", + error ("address of global register variable %qs requested", IDENTIFIER_POINTER (DECL_NAME (x))); return false; } - pedwarn ("address of register variable `%s' requested", + pedwarn ("address of register variable %qs requested", IDENTIFIER_POINTER (DECL_NAME (x))); } @@ -2890,14 +2893,16 @@ build_conditional_expr (tree ifexp, tree op1, tree op2) else if (VOID_TYPE_P (TREE_TYPE (type1))) { if (pedantic && TREE_CODE (TREE_TYPE (type2)) == FUNCTION_TYPE) - pedwarn ("ISO C forbids conditional expr between `void *' and function pointer"); + pedwarn ("ISO C forbids conditional expr between " + "% and function pointer"); result_type = build_pointer_type (qualify_type (TREE_TYPE (type1), TREE_TYPE (type2))); } else if (VOID_TYPE_P (TREE_TYPE (type2))) { if (pedantic && TREE_CODE (TREE_TYPE (type1)) == FUNCTION_TYPE) - pedwarn ("ISO C forbids conditional expr between `void *' and function pointer"); + pedwarn ("ISO C forbids conditional expr between " + "% and function pointer"); result_type = build_pointer_type (qualify_type (TREE_TYPE (type2), TREE_TYPE (type1))); } @@ -3552,7 +3557,8 @@ convert_for_assignment (tree type, tree rhs, const char *errtype, which are not ANSI null ptr constants. */ && (!integer_zerop (rhs) || TREE_CODE (rhs) == NOP_EXPR) && TREE_CODE (ttl) == FUNCTION_TYPE))) - warn_for_assignment ("ISO C forbids %s between function pointer and `void *'", + warn_for_assignment ("ISO C forbids %s between function " + "pointer and %", errtype, funname, parmnum); /* Const and volatile mean something different for function types, so the usual warnings are not appropriate. */ @@ -3626,10 +3632,10 @@ convert_for_assignment (tree type, tree rhs, const char *errtype, tree selector = objc_message_selector (); if (selector && parmnum > 2) - error ("incompatible type for argument %d of `%s'", + error ("incompatible type for argument %d of %qs", parmnum - 2, IDENTIFIER_POINTER (selector)); else - error ("incompatible type for argument %d of `%s'", + error ("incompatible type for argument %d of %qs", parmnum, IDENTIFIER_POINTER (funname)); } else @@ -3693,7 +3699,7 @@ warn_for_assignment (const char *msgid, const char *opname, tree function, if (function) { /* Function name is known; supply it. */ - const char *const argstring = _("passing arg of `%s'"); + const char *const argstring = _("passing arg of '%s'"); new_opname = (char *) alloca (IDENTIFIER_LENGTH (function) + strlen (argstring) + 1 + 1); sprintf (new_opname, argstring, @@ -3710,7 +3716,7 @@ warn_for_assignment (const char *msgid, const char *opname, tree function, else if (function) { /* Function name is known; supply it. */ - const char *const argstring = _("passing arg %d of `%s'"); + const char *const argstring = _("passing arg %d of '%s'"); new_opname = (char *) alloca (IDENTIFIER_LENGTH (function) + strlen (argstring) + 1 + 25 /*%d*/ + 1); sprintf (new_opname, argstring, argnum, @@ -3943,7 +3949,7 @@ error_init (const char *msgid) error ("%s", _(msgid)); ofwhat = print_spelling ((char *) alloca (spelling_length () + 1)); if (*ofwhat) - error ("(near initialization for `%s')", ofwhat); + error ("(near initialization for %qs)", ofwhat); } /* Issue a pedantic warning for a bad initializer component. @@ -3958,7 +3964,7 @@ pedwarn_init (const char *msgid) pedwarn ("%s", _(msgid)); ofwhat = print_spelling ((char *) alloca (spelling_length () + 1)); if (*ofwhat) - pedwarn ("(near initialization for `%s')", ofwhat); + pedwarn ("(near initialization for %qs)", ofwhat); } /* Issue a warning for a bad initializer component. @@ -3973,7 +3979,7 @@ warning_init (const char *msgid) warning ("%s", _(msgid)); ofwhat = print_spelling ((char *) alloca (spelling_length () + 1)); if (*ofwhat) - warning ("(near initialization for `%s')", ofwhat); + warning ("(near initialization for %qs)", ofwhat); } /* If TYPE is an array type and EXPR is a parenthesized string @@ -5144,7 +5150,7 @@ set_init_label (tree fieldname) } if (tail == 0) - error ("unknown field `%s' specified in initializer", + error ("unknown field %qs specified in initializer", IDENTIFIER_POINTER (fieldname)); else { @@ -6313,7 +6319,7 @@ tree c_finish_goto_ptr (tree expr) { if (pedantic) - pedwarn ("ISO C forbids `goto *expr;'"); + pedwarn ("ISO C forbids %"); expr = convert (ptr_type_node, expr); return add_stmt (build1 (GOTO_EXPR, void_type_node, expr)); } @@ -6327,20 +6333,21 @@ c_finish_return (tree retval) tree valtype = TREE_TYPE (TREE_TYPE (current_function_decl)); if (TREE_THIS_VOLATILE (current_function_decl)) - warning ("function declared `noreturn' has a `return' statement"); + warning ("function declared % has a % statement"); if (!retval) { current_function_returns_null = 1; if ((warn_return_type || flag_isoc99) && valtype != 0 && TREE_CODE (valtype) != VOID_TYPE) - pedwarn_c99 ("`return' with no value, in function returning non-void"); + pedwarn_c99 ("% with no value, in " + "function returning non-void"); } else if (valtype == 0 || TREE_CODE (valtype) == VOID_TYPE) { current_function_returns_null = 1; if (pedantic || TREE_CODE (TREE_TYPE (retval)) != VOID_TYPE) - pedwarn ("`return' with a value, in function returning void"); + pedwarn ("% with a value, in function returning void"); } else { @@ -6468,7 +6475,8 @@ c_start_case (tree exp) if (warn_traditional && !in_system_header && (type == long_integer_type_node || type == long_unsigned_type_node)) - warning ("`long' switch expression not converted to `int' in ISO C"); + warning ("% switch expression not converted to " + "% in ISO C"); exp = default_conversion (exp); type = TREE_TYPE (exp); @@ -6506,7 +6514,7 @@ do_case (tree low_value, tree high_value) else if (low_value) error ("case label not within a switch statement"); else - error ("`default' label not within a switch statement"); + error ("% label not within a switch statement"); return label; } @@ -6570,7 +6578,7 @@ c_finish_if_stmt (location_t if_locus, tree cond, tree then_block, found: if (COND_EXPR_ELSE (inner_if)) - warning ("%Hsuggest explicit braces to avoid ambiguous `else'", + warning ("%Hsuggest explicit braces to avoid ambiguous %", &if_locus); } @@ -7227,13 +7235,15 @@ build_binary_op (enum tree_code code, tree orig_op0, tree orig_op1, whose value is 0 but which isn't a valid null ptr const. */ if (pedantic && (!integer_zerop (op0) || op0 != orig_op0) && TREE_CODE (tt1) == FUNCTION_TYPE) - pedwarn ("ISO C forbids comparison of `void *' with function pointer"); + pedwarn ("ISO C forbids comparison of %" + " with function pointer"); } else if (VOID_TYPE_P (tt1)) { if (pedantic && (!integer_zerop (op1) || op1 != orig_op1) && TREE_CODE (tt0) == FUNCTION_TYPE) - pedwarn ("ISO C forbids comparison of `void *' with function pointer"); + pedwarn ("ISO C forbids comparison of %" + " with function pointer"); } else pedwarn ("comparison of distinct pointer types lacks a cast"); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 8abd183b614..e26e4c26d73 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2004-09-13 Joseph S. Myers + + * g++.dg/warn/Wswitch-1.C, g++.dg/warn/Wswitch-2.C, + gcc.dg/Wswitch-2.c, gcc.dg/Wswitch-enum.c, gcc.dg/Wswitch.c, + gcc.dg/declspec-9.c, gcc.dg/declspec-10.c, gcc.dg/declspec-11.c, + gcc.dg/m-un-2.c, gcc.dg/noreturn-1.c, gcc.dg/wtr-conversion-1.c: + Update expected messages. + 2004-09-13 Hans-Peter Nilsson * gcc.dg/asmreg-1.c (__syscall_getdents64): Adjust signedness diff --git a/gcc/testsuite/g++.dg/warn/Wswitch-1.C b/gcc/testsuite/g++.dg/warn/Wswitch-1.C index 4f44e12576e..9b05cd16c5d 100644 --- a/gcc/testsuite/g++.dg/warn/Wswitch-1.C +++ b/gcc/testsuite/g++.dg/warn/Wswitch-1.C @@ -19,14 +19,14 @@ foo (int i, int j, enum e ei, enum e ej, enum e ek, enum e el, case 4: return 3; default: break; } - switch (ei) /* { dg-warning "enumeration value `e1' not handled in switch" "enum e1" } */ - { /* { dg-warning "enumeration value `e2' not handled in switch" "enum e2" { target *-*-* } 22 } */ + switch (ei) /* { dg-warning "enumeration value 'e1' not handled in switch" "enum e1" } */ + { /* { dg-warning "enumeration value 'e2' not handled in switch" "enum e2" { target *-*-* } 22 } */ } switch (ej) { default: break; } - switch (ek) /* { dg-warning "enumeration value `e2' not handled in switch" "enum e2" } */ + switch (ek) /* { dg-warning "enumeration value 'e2' not handled in switch" "enum e2" } */ { case e1: return 1; } @@ -50,7 +50,7 @@ foo (int i, int j, enum e ei, enum e ej, enum e ek, enum e el, { case e1: return 1; case e2: return 2; - case 3: return 3; /* { dg-warning "case value `3' not in enumerated type `e'" "excess 3" } */ + case 3: return 3; /* { dg-warning "case value '3' not in enumerated type 'e'" "excess 3" } */ } switch (ep) { diff --git a/gcc/testsuite/g++.dg/warn/Wswitch-2.C b/gcc/testsuite/g++.dg/warn/Wswitch-2.C index 9bc7d022b46..79ba4bdcb84 100644 --- a/gcc/testsuite/g++.dg/warn/Wswitch-2.C +++ b/gcc/testsuite/g++.dg/warn/Wswitch-2.C @@ -13,7 +13,7 @@ foo (enum e ei, int j) case e3: return 2; case e4: return 3; } /* No warning here since e2 has the same value as e3. */ - switch (ei) /* { dg-warning "enumeration value `e4' not handled in switch" "enum e4" } */ + switch (ei) /* { dg-warning "enumeration value 'e4' not handled in switch" "enum e4" } */ { case e1: return 1; case e2: return 2; @@ -22,7 +22,7 @@ foo (enum e ei, int j) { case e1: return 1; } /* No warning here since switch condition was cast to int. */ - switch ((enum e) j) /* { dg-warning "enumeration value `e1' not handled in switch" "enum e1" } */ + switch ((enum e) j) /* { dg-warning "enumeration value 'e1' not handled in switch" "enum e1" } */ { case e2: return 1; case e4: return 2; diff --git a/gcc/testsuite/gcc.dg/Wswitch-2.c b/gcc/testsuite/gcc.dg/Wswitch-2.c index 9bc7d022b46..79ba4bdcb84 100644 --- a/gcc/testsuite/gcc.dg/Wswitch-2.c +++ b/gcc/testsuite/gcc.dg/Wswitch-2.c @@ -13,7 +13,7 @@ foo (enum e ei, int j) case e3: return 2; case e4: return 3; } /* No warning here since e2 has the same value as e3. */ - switch (ei) /* { dg-warning "enumeration value `e4' not handled in switch" "enum e4" } */ + switch (ei) /* { dg-warning "enumeration value 'e4' not handled in switch" "enum e4" } */ { case e1: return 1; case e2: return 2; @@ -22,7 +22,7 @@ foo (enum e ei, int j) { case e1: return 1; } /* No warning here since switch condition was cast to int. */ - switch ((enum e) j) /* { dg-warning "enumeration value `e1' not handled in switch" "enum e1" } */ + switch ((enum e) j) /* { dg-warning "enumeration value 'e1' not handled in switch" "enum e1" } */ { case e2: return 1; case e4: return 2; diff --git a/gcc/testsuite/gcc.dg/Wswitch-enum.c b/gcc/testsuite/gcc.dg/Wswitch-enum.c index 24fc26261e6..28c60d879ae 100644 --- a/gcc/testsuite/gcc.dg/Wswitch-enum.c +++ b/gcc/testsuite/gcc.dg/Wswitch-enum.c @@ -19,18 +19,18 @@ foo (int i, int j, enum e ei, enum e ej, enum e ek, enum e el, case 4: return 3; default: break; } - switch (ei) /* { dg-warning "enumeration value `e1' not handled in switch" "enum e1" } */ - { /* { dg-warning "enumeration value `e2' not handled in switch" "enum e2" { target *-*-* } 22 } */ + switch (ei) /* { dg-warning "enumeration value 'e1' not handled in switch" "enum e1" } */ + { /* { dg-warning "enumeration value 'e2' not handled in switch" "enum e2" { target *-*-* } 22 } */ } - switch (ej) /* { dg-warning "enumeration value `e1' not handled in switch" "enum e1" } */ - { /* { dg-warning "enumeration value `e2' not handled in switch" "enum e2" { target *-*-* } 25 } */ + switch (ej) /* { dg-warning "enumeration value 'e1' not handled in switch" "enum e1" } */ + { /* { dg-warning "enumeration value 'e2' not handled in switch" "enum e2" { target *-*-* } 25 } */ default: break; } - switch (ek) /* { dg-warning "enumeration value `e2' not handled in switch" "enum e2" } */ + switch (ek) /* { dg-warning "enumeration value 'e2' not handled in switch" "enum e2" } */ { case e1: return 1; } - switch (el) /* { dg-warning "enumeration value `e2' not handled in switch" "enum e2" } */ + switch (el) /* { dg-warning "enumeration value 'e2' not handled in switch" "enum e2" } */ { case e1: return 1; default: break; @@ -50,13 +50,13 @@ foo (int i, int j, enum e ei, enum e ej, enum e ek, enum e el, { case e1: return 1; case e2: return 2; - case 3: return 3; /* { dg-warning "case value `3' not in enumerated type `enum e'" "excess 3" } */ + case 3: return 3; /* { dg-warning "case value '3' not in enumerated type 'enum e'" "excess 3" } */ } switch (ep) { case e1: return 1; case e2: return 2; - case 3: return 3; /* { dg-warning "case value `3' not in enumerated type `enum e'" "excess 3" } */ + case 3: return 3; /* { dg-warning "case value '3' not in enumerated type 'enum e'" "excess 3" } */ default: break; } return 0; diff --git a/gcc/testsuite/gcc.dg/Wswitch.c b/gcc/testsuite/gcc.dg/Wswitch.c index 9ba12d6d3c0..686fd41614c 100644 --- a/gcc/testsuite/gcc.dg/Wswitch.c +++ b/gcc/testsuite/gcc.dg/Wswitch.c @@ -19,14 +19,14 @@ foo (int i, int j, enum e ei, enum e ej, enum e ek, enum e el, case 4: return 3; default: break; } - switch (ei) /* { dg-warning "enumeration value `e1' not handled in switch" "enum e1" } */ - { /*{ dg-warning "enumeration value `e2' not handled in switch" "enum e2" { target *-*-* } 22 } */ + switch (ei) /* { dg-warning "enumeration value 'e1' not handled in switch" "enum e1" } */ + { /*{ dg-warning "enumeration value 'e2' not handled in switch" "enum e2" { target *-*-* } 22 } */ } switch (ej) { default: break; } - switch (ek) /* { dg-warning "enumeration value `e2' not handled in switch" "enum e2" } */ + switch (ek) /* { dg-warning "enumeration value 'e2' not handled in switch" "enum e2" } */ { case e1: return 1; } @@ -50,7 +50,7 @@ foo (int i, int j, enum e ei, enum e ej, enum e ek, enum e el, { case e1: return 1; case e2: return 2; - case 3: return 3; /* { dg-warning "case value `3' not in enumerated type `enum e'" "excess 3" } */ + case 3: return 3; /* { dg-warning "case value '3' not in enumerated type 'enum e'" "excess 3" } */ } switch (ep) { diff --git a/gcc/testsuite/gcc.dg/declspec-10.c b/gcc/testsuite/gcc.dg/declspec-10.c index 454cb1d5480..5a76764abfb 100644 --- a/gcc/testsuite/gcc.dg/declspec-10.c +++ b/gcc/testsuite/gcc.dg/declspec-10.c @@ -15,31 +15,31 @@ void f5 (register int); void f6 (static int); /* { dg-error "error: storage class specified for parameter 'type name'" } */ void f7 (typedef int); /* { dg-error "error: storage class specified for parameter 'type name'" } */ -auto int x; /* { dg-error "error: file-scope declaration of `x' specifies `auto'" } */ +auto int x; /* { dg-error "error: file-scope declaration of 'x' specifies 'auto'" } */ register int y; /* { dg-warning "warning: file-scope declaration of 'y' specifies 'register'" } */ -void h (void) { extern void x (void) {} } /* { dg-error "error: nested function `x' declared `extern'" } */ +void h (void) { extern void x (void) {} } /* { dg-error "error: nested function 'x' declared 'extern'" } */ /* { dg-warning "warning: ISO C forbids nested functions" "nested" { target *-*-* } 21 } */ void g (void) { - void a; /* { dg-error "error: variable or field `a' declared void" } */ - const void b; /* { dg-error "error: variable or field `b' declared void" } */ - static void c; /* { dg-error "error: variable or field `c' declared void" } */ + void a; /* { dg-error "error: variable or field 'a' declared void" } */ + const void b; /* { dg-error "error: variable or field 'b' declared void" } */ + static void c; /* { dg-error "error: variable or field 'c' declared void" } */ } void p; const void p1; extern void q; extern const void q1; -static void r; /* { dg-error "error: variable or field `r' declared void" } */ -static const void r1; /* { dg-error "error: variable or field `r1' declared void" } */ +static void r; /* { dg-error "error: variable or field 'r' declared void" } */ +static const void r1; /* { dg-error "error: variable or field 'r1' declared void" } */ -register void f8 (void); /* { dg-error "error: invalid storage class for function `f8'" } */ +register void f8 (void); /* { dg-error "error: invalid storage class for function 'f8'" } */ /* { dg-warning "warning: file-scope declaration of 'f8' specifies 'register'" "register function" { target *-*-* } 39 } */ void i (void) { auto void y (void) {} } /* { dg-warning "warning: ISO C forbids nested functions" } */ /* { dg-warning "warning: function definition declared 'auto'" "nested" { target *-*-* } 42 } */ -inline int main (void) { return 0; } /* { dg-warning "warning: cannot inline function `main'" } */ +inline int main (void) { return 0; } /* { dg-warning "warning: cannot inline function 'main'" } */ diff --git a/gcc/testsuite/gcc.dg/declspec-11.c b/gcc/testsuite/gcc.dg/declspec-11.c index c418de135d6..2f4eaff3b25 100644 --- a/gcc/testsuite/gcc.dg/declspec-11.c +++ b/gcc/testsuite/gcc.dg/declspec-11.c @@ -15,31 +15,31 @@ void f5 (register int); void f6 (static int); /* { dg-error "error: storage class specified for parameter 'type name'" } */ void f7 (typedef int); /* { dg-error "error: storage class specified for parameter 'type name'" } */ -auto int x; /* { dg-error "error: file-scope declaration of `x' specifies `auto'" } */ +auto int x; /* { dg-error "error: file-scope declaration of 'x' specifies 'auto'" } */ register int y; /* { dg-error "error: file-scope declaration of 'y' specifies 'register'" } */ -void h (void) { extern void x (void) {} } /* { dg-error "error: nested function `x' declared `extern'" } */ +void h (void) { extern void x (void) {} } /* { dg-error "error: nested function 'x' declared 'extern'" } */ /* { dg-error "error: ISO C forbids nested functions" "nested" { target *-*-* } 21 } */ void g (void) { - void a; /* { dg-error "error: variable or field `a' declared void" } */ - const void b; /* { dg-error "error: variable or field `b' declared void" } */ - static void c; /* { dg-error "error: variable or field `c' declared void" } */ + void a; /* { dg-error "error: variable or field 'a' declared void" } */ + const void b; /* { dg-error "error: variable or field 'b' declared void" } */ + static void c; /* { dg-error "error: variable or field 'c' declared void" } */ } void p; const void p1; extern void q; extern const void q1; -static void r; /* { dg-error "error: variable or field `r' declared void" } */ -static const void r1; /* { dg-error "error: variable or field `r1' declared void" } */ +static void r; /* { dg-error "error: variable or field 'r' declared void" } */ +static const void r1; /* { dg-error "error: variable or field 'r1' declared void" } */ -register void f8 (void); /* { dg-error "error: invalid storage class for function `f8'" } */ +register void f8 (void); /* { dg-error "error: invalid storage class for function 'f8'" } */ /* { dg-error "error: file-scope declaration of 'f8' specifies 'register'" "register function" { target *-*-* } 39 } */ void i (void) { auto void y (void) {} } /* { dg-error "error: ISO C forbids nested functions" } */ /* { dg-error "error: function definition declared 'auto'" "nested" { target *-*-* } 42 } */ -inline int main (void) { return 0; } /* { dg-warning "warning: cannot inline function `main'" } */ +inline int main (void) { return 0; } /* { dg-warning "warning: cannot inline function 'main'" } */ diff --git a/gcc/testsuite/gcc.dg/declspec-9.c b/gcc/testsuite/gcc.dg/declspec-9.c index 855393c943d..e5dd5b2b6c5 100644 --- a/gcc/testsuite/gcc.dg/declspec-9.c +++ b/gcc/testsuite/gcc.dg/declspec-9.c @@ -16,28 +16,28 @@ void f5 (register int); void f6 (static int); /* { dg-error "error: storage class specified for parameter 'type name'" } */ void f7 (typedef int); /* { dg-error "error: storage class specified for parameter 'type name'" } */ -auto int x; /* { dg-error "error: file-scope declaration of `x' specifies `auto'" } */ +auto int x; /* { dg-error "error: file-scope declaration of 'x' specifies 'auto'" } */ register int y; -void h (void) { extern void x (void) {} } /* { dg-error "error: nested function `x' declared `extern'" } */ +void h (void) { extern void x (void) {} } /* { dg-error "error: nested function 'x' declared 'extern'" } */ void g (void) { - void a; /* { dg-error "error: variable or field `a' declared void" } */ - const void b; /* { dg-error "error: variable or field `b' declared void" } */ - static void c; /* { dg-error "error: variable or field `c' declared void" } */ + void a; /* { dg-error "error: variable or field 'a' declared void" } */ + const void b; /* { dg-error "error: variable or field 'b' declared void" } */ + static void c; /* { dg-error "error: variable or field 'c' declared void" } */ } void p; const void p1; extern void q; extern const void q1; -static void r; /* { dg-error "error: variable or field `r' declared void" } */ -static const void r1; /* { dg-error "error: variable or field `r1' declared void" } */ +static void r; /* { dg-error "error: variable or field 'r' declared void" } */ +static const void r1; /* { dg-error "error: variable or field 'r1' declared void" } */ -register void f8 (void); /* { dg-error "error: invalid storage class for function `f8'" } */ +register void f8 (void); /* { dg-error "error: invalid storage class for function 'f8'" } */ void i (void) { auto void y (void) {} } -inline int main (void) { return 0; } /* { dg-warning "warning: cannot inline function `main'" } */ +inline int main (void) { return 0; } /* { dg-warning "warning: cannot inline function 'main'" } */ diff --git a/gcc/testsuite/gcc.dg/m-un-2.c b/gcc/testsuite/gcc.dg/m-un-2.c index bb617369163..d957f868405 100644 --- a/gcc/testsuite/gcc.dg/m-un-2.c +++ b/gcc/testsuite/gcc.dg/m-un-2.c @@ -16,7 +16,7 @@ struct vtable mtable = { malloc, free }; /* { dg-warning "missing initializer" "warning regression" { target *-*-* } {18} } */ - /* { dg-warning "initialization for `mtable._realloc'" "warning regression" { target *-*-* } {18} } */ + /* { dg-warning "initialization for 'mtable._realloc'" "warning regression" { target *-*-* } {18} } */ /* With designated initializers, we assume you meant to leave out the initialization of any blank fields. */ diff --git a/gcc/testsuite/gcc.dg/noreturn-1.c b/gcc/testsuite/gcc.dg/noreturn-1.c index 21ad2fa8e53..952e906ce9a 100644 --- a/gcc/testsuite/gcc.dg/noreturn-1.c +++ b/gcc/testsuite/gcc.dg/noreturn-1.c @@ -34,7 +34,7 @@ extern void foo5(void) __attribute__ ((__noreturn__)); void foo5(void) { - return; /* { dg-warning "`noreturn' has a `return' statement" "detect invalid return" } */ + return; /* { dg-warning "'noreturn' has a 'return' statement" "detect invalid return" } */ } /* { dg-warning "function does return" "detect return from noreturn" } */ extern void foo6(void); diff --git a/gcc/testsuite/gcc.dg/wtr-conversion-1.c b/gcc/testsuite/gcc.dg/wtr-conversion-1.c index 18d26165f2a..15086f245fe 100644 --- a/gcc/testsuite/gcc.dg/wtr-conversion-1.c +++ b/gcc/testsuite/gcc.dg/wtr-conversion-1.c @@ -23,8 +23,8 @@ testfunc1 () foo_i (cd); /* { dg-warning "as integer rather than complex" "prototype conversion warning" } */ foo_f (i); /* { dg-warning "as floating rather than integer" "prototype conversion warning" } */ - foo_f (f); /* { dg-warning "as `float' rather than `double'" "prototype conversion warning" } */ - foo_f (ld); /* { dg-warning "as `float' rather than `double'" "prototype conversion warning" } */ + foo_f (f); /* { dg-warning "as 'float' rather than 'double'" "prototype conversion warning" } */ + foo_f (ld); /* { dg-warning "as 'float' rather than 'double'" "prototype conversion warning" } */ foo_f (cd); /* { dg-warning "as floating rather than complex" "prototype conversion warning" } */ foo_ld (i); /* { dg-warning "as floating rather than integer" "prototype conversion warning" } */