From 129677c1cf80e2fe333d21dbcfec8ca4e0a39d4e Mon Sep 17 00:00:00 2001 From: Paolo Carlini Date: Thu, 28 Mar 2013 10:00:05 +0000 Subject: [PATCH] call.c (joust): Don't call inform for a permerror returning false. 2013-03-28 Paolo Carlini * call.c (joust): Don't call inform for a permerror returning false. * parser.c (cp_parser_check_class_key): Likewise. * pt.c (tsubst_copy_and_build): Likewise. From-SVN: r197190 --- gcc/cp/ChangeLog | 6 ++++++ gcc/cp/call.c | 16 +++++++++------- gcc/cp/parser.c | 12 ++++++------ gcc/cp/pt.c | 44 +++++++++++++++++++++++--------------------- 4 files changed, 44 insertions(+), 34 deletions(-) diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 714522e5fd7..40b83ded179 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2013-03-28 Paolo Carlini + + * call.c (joust): Don't call inform for a permerror returning false. + * parser.c (cp_parser_check_class_key): Likewise. + * pt.c (tsubst_copy_and_build): Likewise. + 2013-03-27 Jason Merrill PR c++/56749 diff --git a/gcc/cp/call.c b/gcc/cp/call.c index 67d8b816ead..cff653fa14c 100644 --- a/gcc/cp/call.c +++ b/gcc/cp/call.c @@ -8650,13 +8650,15 @@ joust (struct z_candidate *cand1, struct z_candidate *cand2, bool warn, { if (complain & tf_error) { - permerror (input_location, - "default argument mismatch in " - "overload resolution"); - inform (input_location, - " candidate 1: %q+#F", cand1->fn); - inform (input_location, - " candidate 2: %q+#F", cand2->fn); + if (permerror (input_location, + "default argument mismatch in " + "overload resolution")) + { + inform (input_location, + " candidate 1: %q+#F", cand1->fn); + inform (input_location, + " candidate 2: %q+#F", cand2->fn); + } } else return 0; diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index 9ba0998f221..5e2a4e09525 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -23363,12 +23363,12 @@ cp_parser_check_class_key (enum tag_types class_key, tree type) return; if ((TREE_CODE (type) == UNION_TYPE) != (class_key == union_type)) { - permerror (input_location, "%qs tag used in naming %q#T", - class_key == union_type ? "union" - : class_key == record_type ? "struct" : "class", - type); - inform (DECL_SOURCE_LOCATION (TYPE_NAME (type)), - "%q#T was previously declared here", type); + if (permerror (input_location, "%qs tag used in naming %q#T", + class_key == union_type ? "union" + : class_key == record_type ? "struct" : "class", + type)) + inform (DECL_SOURCE_LOCATION (TYPE_NAME (type)), + "%q#T was previously declared here", type); } } diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index 393dbc9412b..59ecdcb82b1 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -14019,30 +14019,32 @@ tsubst_copy_and_build (tree t, fn = TREE_OPERAND (fn, 1); if (is_overloaded_fn (fn)) fn = get_first_fn (fn); - permerror (EXPR_LOC_OR_HERE (t), - "%qD was not declared in this scope, " - "and no declarations were found by " - "argument-dependent lookup at the point " - "of instantiation", function); - if (!DECL_P (fn)) - /* Can't say anything more. */; - else if (DECL_CLASS_SCOPE_P (fn)) + if (permerror (EXPR_LOC_OR_HERE (t), + "%qD was not declared in this scope, " + "and no declarations were found by " + "argument-dependent lookup at the point " + "of instantiation", function)) { - inform (EXPR_LOC_OR_HERE (t), - "declarations in dependent base %qT are " - "not found by unqualified lookup", - DECL_CLASS_CONTEXT (fn)); - if (current_class_ptr) - inform (EXPR_LOC_OR_HERE (t), - "use %%D%> instead", function); + if (!DECL_P (fn)) + /* Can't say anything more. */; + else if (DECL_CLASS_SCOPE_P (fn)) + { + inform (EXPR_LOC_OR_HERE (t), + "declarations in dependent base %qT are " + "not found by unqualified lookup", + DECL_CLASS_CONTEXT (fn)); + if (current_class_ptr) + inform (EXPR_LOC_OR_HERE (t), + "use %%D%> instead", function); + else + inform (EXPR_LOC_OR_HERE (t), + "use %<%T::%D%> instead", + current_class_name, function); + } else - inform (EXPR_LOC_OR_HERE (t), - "use %<%T::%D%> instead", - current_class_name, function); + inform (0, "%q+D declared here, later in the " + "translation unit", fn); } - else - inform (0, "%q+D declared here, later in the " - "translation unit", fn); function = unq; } }