aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorPaolo Carlini <paolo.carlini@oracle.com>2013-03-28 10:00:05 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2013-03-28 10:00:05 +0000
commit129677c1cf80e2fe333d21dbcfec8ca4e0a39d4e (patch)
tree25f7029eb5c55cf70bef65e257ea1c7614a325ec /gcc
parenta64b9c261d9d2c12b98bd14f5f1bf27e3bcb6bdd (diff)
downloadgcc-129677c1cf80e2fe333d21dbcfec8ca4e0a39d4e.zip
gcc-129677c1cf80e2fe333d21dbcfec8ca4e0a39d4e.tar.gz
gcc-129677c1cf80e2fe333d21dbcfec8ca4e0a39d4e.tar.bz2
call.c (joust): Don't call inform for a permerror returning false.
2013-03-28 Paolo Carlini <paolo.carlini@oracle.com> * 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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/call.c16
-rw-r--r--gcc/cp/parser.c12
-rw-r--r--gcc/cp/pt.c44
4 files changed, 44 insertions, 34 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 714522e..40b83de 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,9 @@
+2013-03-28 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * 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 <jason@redhat.com>
PR c++/56749
diff --git a/gcc/cp/call.c b/gcc/cp/call.c
index 67d8b81..cff653f 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 9ba0998..5e2a4e0 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 393dbc9..59ecdcb 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 %<this->%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 %<this->%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;
}
}