This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH C/C++] Fix some diagnostics problems
On 06/11/2010 06:03 PM, Manuel LÃpez-IbÃÃez wrote:
On 11 June 2010 11:54, Shujing Zhao <pearly.zhao@oracle.com> wrote:
I agree with your last comment to use %qP for parmnum.
About this issue, I think the comment is not wrong when FNDECL is non-NULL.
How about to add the case when FNDECL is NULL? just as the following:
/* If FNDECL is non-NULL, we are doing the conversion in order to pass the
PARMNUMth argument of FNDECL. If FNDECL is NULL, we are doing the conversion
in function pointer argument passing, conversion in initialization, etc. */
If you agree with it, I'll submit the patch.
In that function, fndecl is only used for providing better
diagnostics. Right now, the diagnostic is less informative when using
a pointer than when not. I think it should be equally informative.
That said, your proposal is better than nothing of course.
Manuel.
Jason,
This patch is to use %qP for parnum and fix the comment of
convert_for_assignment and convert_for_initialization.
Retested on 1686-pc-linux-gnu. Is it ok?
Thanks
Pearly
2010-06-12 Shujing Zhao <pearly.zhao@oracle.com>
* typeck.c (convert_for_assignment): Fix comment. Change message
format from %d to %qP.
(convert_for_initialization): Fix comment.
Index: typeck.c
===================================================================
--- typeck.c (revision 160644)
+++ typeck.c (working copy)
@@ -7186,10 +7186,11 @@ delta_from_ptrmemfunc (tree t)
}
/* Convert value RHS to type TYPE as preparation for an assignment to
- an lvalue of type TYPE. ERRTYPE is a string to use in error
- messages: "assignment", "return", etc. If FNDECL is non-NULL, we
- are doing the conversion in order to pass the PARMNUMth argument of
- FNDECL. */
+ an lvalue of type TYPE. ERRTYPE indicates what kind of error the
+ implicit conversion is. If FNDECL is non-NULL, we are doing the
+ conversion in order to pass the PARMNUMth argument of FNDECL.
+ If FNDECL is NULL, we are doing the conversion in function pointer
+ argument passing, conversion in initialization, etc. */
static tree
convert_for_assignment (tree type, tree rhs,
@@ -7331,7 +7332,7 @@ convert_for_assignment (tree type, tree
case ICR_DEFAULT_ARGUMENT:
if (fndecl)
warning (OPT_Wmissing_format_attribute,
- "parameter %d of %qD might be a candidate "
+ "parameter %qP of %qD might be a candidate "
"for a format attribute", parmnum, fndecl);
else
warning (OPT_Wmissing_format_attribute,
@@ -7386,7 +7387,7 @@ convert_for_assignment (tree type, tree
/* Convert RHS to be of type TYPE.
If EXP is nonzero, it is the target of the initialization.
- ERRTYPE is a string to use in error messages.
+ ERRTYPE indicates what kind of error the implicit conversion is.
Two major differences between the behavior of
`convert_for_assignment' and `convert_for_initialization'