From 0f4714ef3f971d773c19668af45de1bda12727d3 Mon Sep 17 00:00:00 2001 From: paolo Date: Sun, 26 Jul 2015 09:17:03 +0000 Subject: [PATCH] 2015-07-26 Paolo Carlini MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit * decl.c (poplevel): Use Use DECL_SOURCE_LOCATION and "%qD" in warning_at instead of "%q+D" in warning. (warn_extern_redeclared_static): Likewise for inform. (check_redeclaration_no_default_args): Likewise for permerror. (duplicate_decls): Likewise. (check_previous_goto_1): Likewise for inform. (check_goto, start_decl, check_for_uninitialized_const_var, start_preparsed_function, finish_function§): Likewise. * decl2.c (build_anon_union_vars, c_parse_final_cleanups): Likewise. * init.c (sort_mem_initializers): Likewise. * typeck.c (convert_for_initialization): Likewise for inform. (maybe_warn_about_returning_address_of_local): Likewise. * typeck2.c (abstract_virtuals_error_sfinae): Likewise for inform. (cxx_incomplete_type_diagnostic): Likewise for emit_diagnostic. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@226234 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/cp/ChangeLog | 17 +++++++++++ gcc/cp/decl.c | 86 +++++++++++++++++++++++++++++++++----------------------- gcc/cp/decl2.c | 12 +++++--- gcc/cp/init.c | 8 ++++-- gcc/cp/typeck.c | 20 +++++++------ gcc/cp/typeck2.c | 6 ++-- 6 files changed, 96 insertions(+), 53 deletions(-) diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index f7669d3ac07..94955195c4a 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,20 @@ +2015-07-26 Paolo Carlini + + * decl.c (poplevel): Use Use DECL_SOURCE_LOCATION and "%qD" + in warning_at instead of "%q+D" in warning. + (warn_extern_redeclared_static): Likewise for inform. + (check_redeclaration_no_default_args): Likewise for permerror. + (duplicate_decls): Likewise. + (check_previous_goto_1): Likewise for inform. + (check_goto, start_decl, check_for_uninitialized_const_var, + start_preparsed_function, finish_function§): Likewise. + * decl2.c (build_anon_union_vars, c_parse_final_cleanups): Likewise. + * init.c (sort_mem_initializers): Likewise. + * typeck.c (convert_for_initialization): Likewise for inform. + (maybe_warn_about_returning_address_of_local): Likewise. + * typeck2.c (abstract_virtuals_error_sfinae): Likewise for inform. + (cxx_incomplete_type_diagnostic): Likewise for emit_diagnostic. + 2015-07-25 Patrick Palka PR c++/66857 diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index 01b81200596..b7fe8ef1e7b 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -640,14 +640,16 @@ poplevel (int keep, int reverse, int functionbody) TYPE_ATTRIBUTES (TREE_TYPE (decl))))) { if (! TREE_USED (decl)) - warning (OPT_Wunused_variable, "unused variable %q+D", decl); + warning_at (DECL_SOURCE_LOCATION (decl), + OPT_Wunused_variable, "unused variable %qD", decl); else if (DECL_CONTEXT (decl) == current_function_decl // For -Wunused-but-set-variable leave references alone. && TREE_CODE (TREE_TYPE (decl)) != REFERENCE_TYPE && errorcount == unused_but_set_errorcount) { - warning (OPT_Wunused_but_set_variable, - "variable %q+D set but not used", decl); + warning_at (DECL_SOURCE_LOCATION (decl), + OPT_Wunused_but_set_variable, + "variable %qD set but not used", decl); unused_but_set_errorcount = errorcount; } } @@ -1157,7 +1159,8 @@ warn_extern_redeclared_static (tree newdecl, tree olddecl) if (permerror (DECL_SOURCE_LOCATION (newdecl), "%qD was declared % and later %", newdecl)) - inform (input_location, "previous declaration of %q+D", olddecl); + inform (DECL_SOURCE_LOCATION (olddecl), + "previous declaration of %qD", olddecl); } /* NEW_DECL is a redeclaration of OLD_DECL; both are functions or @@ -1254,8 +1257,8 @@ check_redeclaration_no_default_args (tree decl) t && t != void_list_node; t = TREE_CHAIN (t)) if (TREE_PURPOSE (t)) { - permerror (input_location, - "redeclaration of %q+#D may not have default " + permerror (DECL_SOURCE_LOCATION (decl), + "redeclaration of %q#D may not have default " "arguments", decl); return; } @@ -1328,8 +1331,9 @@ duplicate_decls (tree newdecl, tree olddecl, bool newdecl_is_friend) && DECL_UNINLINABLE (olddecl) && lookup_attribute ("noinline", DECL_ATTRIBUTES (olddecl))) { - if (warning (OPT_Wattributes, "function %q+D redeclared as inline", - newdecl)) + if (warning_at (DECL_SOURCE_LOCATION (newdecl), + OPT_Wattributes, "function %qD redeclared as inline", + newdecl)) inform (DECL_SOURCE_LOCATION (olddecl), "previous declaration of %qD with attribute noinline", olddecl); @@ -1338,8 +1342,9 @@ duplicate_decls (tree newdecl, tree olddecl, bool newdecl_is_friend) && DECL_UNINLINABLE (newdecl) && lookup_attribute ("noinline", DECL_ATTRIBUTES (newdecl))) { - if (warning (OPT_Wattributes, "function %q+D redeclared with " - "attribute noinline", newdecl)) + if (warning_at (DECL_SOURCE_LOCATION (newdecl), + OPT_Wattributes, "function %qD redeclared with " + "attribute noinline", newdecl)) inform (DECL_SOURCE_LOCATION (olddecl), "previous declaration of %qD was inline", olddecl); @@ -1436,8 +1441,9 @@ duplicate_decls (tree newdecl, tree olddecl, bool newdecl_is_friend) /* A near match; override the builtin. */ if (TREE_PUBLIC (newdecl)) - warning (0, "new declaration %q+#D ambiguates built-in " - "declaration %q#D", newdecl, olddecl); + warning_at (DECL_SOURCE_LOCATION (newdecl), 0, + "new declaration %q#D ambiguates built-in " + "declaration %q#D", newdecl, olddecl); else warning (OPT_Wshadow, DECL_BUILT_IN (olddecl) @@ -1665,10 +1671,10 @@ duplicate_decls (tree newdecl, tree olddecl, bool newdecl_is_friend) { error_at (DECL_SOURCE_LOCATION (newdecl), errmsg, newdecl); if (DECL_NAME (olddecl) != NULL_TREE) - inform (input_location, + inform (DECL_SOURCE_LOCATION (olddecl), (DECL_INITIAL (olddecl) && namespace_bindings_p ()) - ? G_("%q+#D previously defined here") - : G_("%q+#D previously declared here"), olddecl); + ? G_("%q#D previously defined here") + : G_("%q#D previously declared here"), olddecl); return error_mark_node; } else if (TREE_CODE (olddecl) == FUNCTION_DECL @@ -1678,7 +1684,7 @@ duplicate_decls (tree newdecl, tree olddecl, bool newdecl_is_friend) { /* Prototype decl follows defn w/o prototype. */ if (warning_at (DECL_SOURCE_LOCATION (newdecl), 0, - "prototype specified for %q+#D", newdecl)) + "prototype specified for %q#D", newdecl)) inform (DECL_SOURCE_LOCATION (olddecl), "previous non-prototype definition here"); } @@ -1831,9 +1837,10 @@ duplicate_decls (tree newdecl, tree olddecl, bool newdecl_is_friend) && (! DECL_TEMPLATE_SPECIALIZATION (newdecl) || DECL_TEMPLATE_SPECIALIZATION (olddecl))) { - if (warning (OPT_Wredundant_decls, - "redundant redeclaration of %q+D in same scope", - newdecl)) + if (warning_at (DECL_SOURCE_LOCATION (newdecl), + OPT_Wredundant_decls, + "redundant redeclaration of %qD in same scope", + newdecl)) inform (DECL_SOURCE_LOCATION (olddecl), "previous declaration of %qD", olddecl); } @@ -2946,10 +2953,11 @@ check_previous_goto_1 (tree decl, cp_binding_level* level, tree names, if (complained) { if (problem > 1) - inform (input_location, - " crosses initialization of %q+#D", new_decls); + inform (DECL_SOURCE_LOCATION (new_decls), + " crosses initialization of %q#D", new_decls); else - inform (input_location, " enters scope of %q+#D which has " + inform (DECL_SOURCE_LOCATION (new_decls), + " enters scope of %q#D which has " "non-trivial destructor", new_decls); } } @@ -3052,7 +3060,8 @@ check_goto (tree decl) if (ent->in_try_scope || ent->in_catch_scope || ent->in_omp_scope || !vec_safe_is_empty (ent->bad_decls)) { - complained = permerror (input_location, "jump to label %q+D", decl); + complained = permerror (DECL_SOURCE_LOCATION (decl), + "jump to label %qD", decl); if (complained) inform (input_location, " from here"); identified = true; @@ -3072,9 +3081,11 @@ check_goto (tree decl) else if (complained) { if (u > 1) - inform (input_location, " skips initialization of %q+#D", bad); + inform (DECL_SOURCE_LOCATION (bad), + " skips initialization of %q#D", bad); else - inform (input_location, " enters scope of %q+#D which has " + inform (DECL_SOURCE_LOCATION (bad), + " enters scope of %q#D which has " "non-trivial destructor", bad); } } @@ -3103,8 +3114,8 @@ check_goto (tree decl) { if (!identified) { - complained = permerror (input_location, - "jump to label %q+D", decl); + complained = permerror (DECL_SOURCE_LOCATION (decl), + "jump to label %qD", decl); if (complained) inform (input_location, " from here"); identified = true; @@ -4738,7 +4749,8 @@ start_decl (const cp_declarator *declarator, && DECL_DECLARED_INLINE_P (decl) && DECL_UNINLINABLE (decl) && lookup_attribute ("noinline", DECL_ATTRIBUTES (decl))) - warning (0, "inline function %q+D given attribute noinline", decl); + warning_at (DECL_SOURCE_LOCATION (decl), 0, + "inline function %qD given attribute noinline", decl); if (TYPE_P (context) && COMPLETE_TYPE_P (complete_type (context))) { @@ -5291,8 +5303,9 @@ check_for_uninitialized_const_var (tree decl) inform (DECL_SOURCE_LOCATION (defaulted_ctor), "constructor is not user-provided because it is " "explicitly defaulted in the class body"); - inform (0, "and the implicitly-defined constructor does not " - "initialize %q+#D", field); + inform (DECL_SOURCE_LOCATION (field), + "and the implicitly-defined constructor does not " + "initialize %q#D", field); } } } @@ -13375,7 +13388,8 @@ start_preparsed_function (tree decl1, tree attrs, int flags) if (DECL_DECLARED_INLINE_P (decl1) && lookup_attribute ("noinline", attrs)) - warning (0, "inline function %q+D given attribute noinline", decl1); + warning_at (DECL_SOURCE_LOCATION (decl1), 0, + "inline function %qD given attribute noinline", decl1); /* Handle gnu_inline attribute. */ if (GNU_INLINE_P (decl1)) @@ -13516,8 +13530,9 @@ start_preparsed_function (tree decl1, tree attrs, int flags) } if (context == NULL) - warning (OPT_Wmissing_declarations, - "no previous declaration for %q+D", decl1); + warning_at (DECL_SOURCE_LOCATION (decl1), + OPT_Wmissing_declarations, + "no previous declaration for %qD", decl1); } decl1 = olddecl; @@ -14327,8 +14342,9 @@ finish_function (int flags) && TREE_CODE (TREE_TYPE (decl)) != REFERENCE_TYPE && (!CLASS_TYPE_P (TREE_TYPE (decl)) || !TYPE_HAS_NONTRIVIAL_DESTRUCTOR (TREE_TYPE (decl)))) - warning (OPT_Wunused_but_set_parameter, - "parameter %q+D set but not used", decl); + warning_at (DECL_SOURCE_LOCATION (decl), + OPT_Wunused_but_set_parameter, + "parameter %qD set but not used", decl); unused_but_set_errorcount = errorcount; } diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c index cac0508f881..a45755ec8de 100644 --- a/gcc/cp/decl2.c +++ b/gcc/cp/decl2.c @@ -1531,15 +1531,18 @@ build_anon_union_vars (tree type, tree object) continue; if (TREE_CODE (field) != FIELD_DECL) { - permerror (input_location, "%q+#D invalid; an anonymous union can only " + permerror (DECL_SOURCE_LOCATION (field), + "%q#D invalid; an anonymous union can only " "have non-static data members", field); continue; } if (TREE_PRIVATE (field)) - permerror (input_location, "private member %q+#D in anonymous union", field); + permerror (DECL_SOURCE_LOCATION (field), + "private member %q#D in anonymous union", field); else if (TREE_PROTECTED (field)) - permerror (input_location, "protected member %q+#D in anonymous union", field); + permerror (DECL_SOURCE_LOCATION (field), + "protected member %q#D in anonymous union", field); if (processing_template_decl) ref = build_min_nt_loc (UNKNOWN_LOCATION, COMPONENT_REF, object, @@ -4764,7 +4767,8 @@ c_parse_final_cleanups (void) && DECL_INITIAL (DECL_TEMPLATE_RESULT (template_for_substitution (decl))))) { - warning (0, "inline function %q+D used but never defined", decl); + warning_at (DECL_SOURCE_LOCATION (decl), 0, + "inline function %qD used but never defined", decl); /* Avoid a duplicate warning from check_global_declaration. */ TREE_NO_WARNING (decl) = 1; } diff --git a/gcc/cp/init.c b/gcc/cp/init.c index dbbe7d5d02b..1ed8f6c625e 100644 --- a/gcc/cp/init.c +++ b/gcc/cp/init.c @@ -936,13 +936,15 @@ sort_mem_initializers (tree t, tree mem_inits) if (warn_reorder && !subobject_init) { if (TREE_CODE (TREE_PURPOSE (next_subobject)) == FIELD_DECL) - warning (OPT_Wreorder, "%q+D will be initialized after", - TREE_PURPOSE (next_subobject)); + warning_at (DECL_SOURCE_LOCATION (TREE_PURPOSE (next_subobject)), + OPT_Wreorder, "%qD will be initialized after", + TREE_PURPOSE (next_subobject)); else warning (OPT_Wreorder, "base %qT will be initialized after", TREE_PURPOSE (next_subobject)); if (TREE_CODE (subobject) == FIELD_DECL) - warning (OPT_Wreorder, " %q+#D", subobject); + warning_at (DECL_SOURCE_LOCATION (subobject), + OPT_Wreorder, " %q#D", subobject); else warning (OPT_Wreorder, " base %qT", subobject); warning_at (DECL_SOURCE_LOCATION (current_function_decl), diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c index b88a3fd42cf..86cf0866ce1 100644 --- a/gcc/cp/typeck.c +++ b/gcc/cp/typeck.c @@ -8368,8 +8368,8 @@ convert_for_initialization (tree exp, tree type, tree rhs, int flags, if (fndecl && (warningcount + werrorcount > savew || errorcount > savee)) - inform (input_location, - "in passing argument %P of %q+D", parmnum, fndecl); + inform (DECL_SOURCE_LOCATION (fndecl), + "in passing argument %P of %qD", parmnum, fndecl); return rhs; } @@ -8448,14 +8448,18 @@ maybe_warn_about_returning_address_of_local (tree retval) || TREE_PUBLIC (whats_returned))) { if (TREE_CODE (valtype) == REFERENCE_TYPE) - warning (OPT_Wreturn_local_addr, "reference to local variable %q+D returned", - whats_returned); + warning_at (DECL_SOURCE_LOCATION (whats_returned), + OPT_Wreturn_local_addr, + "reference to local variable %qD returned", + whats_returned); else if (TREE_CODE (whats_returned) == LABEL_DECL) - warning (OPT_Wreturn_local_addr, "address of label %q+D returned", - whats_returned); + warning_at (DECL_SOURCE_LOCATION (whats_returned), + OPT_Wreturn_local_addr, "address of label %qD returned", + whats_returned); else - warning (OPT_Wreturn_local_addr, "address of local variable %q+D " - "returned", whats_returned); + warning_at (DECL_SOURCE_LOCATION (whats_returned), + OPT_Wreturn_local_addr, "address of local variable %qD " + "returned", whats_returned); return true; } diff --git a/gcc/cp/typeck2.c b/gcc/cp/typeck2.c index eb51784f2cf..8a3a53720a4 100644 --- a/gcc/cp/typeck2.c +++ b/gcc/cp/typeck2.c @@ -389,7 +389,7 @@ abstract_virtuals_error_sfinae (tree decl, tree type, abstract_class_use use, FOR_EACH_VEC_ELT (*pure, ix, fn) if (! DECL_CLONED_FUNCTION_P (fn) || DECL_COMPLETE_DESTRUCTOR_P (fn)) - inform (input_location, "\t%+#D", fn); + inform (DECL_SOURCE_LOCATION (fn), "\t%#D", fn); /* Now truncate the vector. This leaves it non-null, so we know there are pure virtuals, but empty so we don't list them out @@ -473,8 +473,8 @@ cxx_incomplete_type_diagnostic (const_tree value, const_tree type, || TREE_CODE (value) == PARM_DECL || TREE_CODE (value) == FIELD_DECL)) { - complained = emit_diagnostic (diag_kind, input_location, 0, - "%q+D has incomplete type", value); + complained = emit_diagnostic (diag_kind, DECL_SOURCE_LOCATION (value), 0, + "%qD has incomplete type", value); is_decl = true; } retry: -- 2.11.4.GIT