Hi,

while looking into an old issue I noticed that in one place we don't check the return value of permerror. I'm going to commit the below as obvious.

Thanks,
Paolo.

//////////////////
2014-07-15  Paolo Carlini  <paolo.carl...@oracle.com>

        * call.c (convert_like_real): Call print_z_candidate and inform only
        if permerror returns true.
Index: call.c
===================================================================
--- call.c      (revision 212545)
+++ call.c      (working copy)
@@ -6076,9 +6076,11 @@ convert_like_real (conversion *convs, tree expr, t
        {
          if (t->kind == ck_user && t->cand->reason)
            {
-             permerror (loc, "invalid user-defined conversion "
-                        "from %qT to %qT", TREE_TYPE (expr), totype);
-             print_z_candidate (loc, "candidate is:", t->cand);
+             complained = permerror (loc, "invalid user-defined conversion "
+                                     "from %qT to %qT", TREE_TYPE (expr),
+                                     totype);
+             if (complained)
+               print_z_candidate (loc, "candidate is:", t->cand);
              expr = convert_like_real (t, expr, fn, argnum, 1,
                                        /*issue_conversion_warnings=*/false,
                                        /*c_cast_p=*/false,
@@ -6089,7 +6091,7 @@ convert_like_real (conversion *convs, tree expr, t
                                             complain);
              else
                expr = cp_convert (totype, expr, complain);
-             if (fn)
+             if (complained && fn)
                inform (DECL_SOURCE_LOCATION (fn),
                        "  initializing argument %P of %qD", argnum, fn);
              return expr;

Reply via email to