From 3230bfa8e6bc4569fba44d8c2e4807ddf2a8f06e Mon Sep 17 00:00:00 2001 From: manu Date: Thu, 28 Aug 2008 19:34:36 +0000 Subject: 2008-08-28 Manuel Lopez-Ibanez PR c/30949 * c-typeck.c (convert_for_assignment): Give a note describing what was passed and what was expected. testsuite/ * gcc.dg/pr30949.c: New. * gcc.dg/transparent-union-1.c: Update. * gcc.dg/cleanup-1.c: Update. * gcc.dg/assign-warn-2.c: Update. * gcc.dg/conv-2.c: Update. * gcc.dg/Wpointer-sign-pedantic.c: Update. * gcc.dg/Wpointer-sign-Wall.c: Update. * gcc.dg/assign-warn-1.c: Update. * gcc.dg/dfp/composite-type.c: Update. * gcc.dg/noncompile/20020213-1.c: Update. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@139729 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/c-typeck.c | 47 +++++++++++++++++++++++++---------------------- 1 file changed, 25 insertions(+), 22 deletions(-) (limited to 'gcc/c-typeck.c') diff --git a/gcc/c-typeck.c b/gcc/c-typeck.c index 9f725884e46..85a94443a6e 100644 --- a/gcc/c-typeck.c +++ b/gcc/c-typeck.c @@ -3952,28 +3952,31 @@ convert_for_assignment (tree type, tree rhs, enum impl_conv errtype, /* This macro is used to emit diagnostics to ensure that all format strings are complete sentences, visible to gettext and checked at compile time. */ -#define WARN_FOR_ASSIGNMENT(LOCATION, OPT, AR, AS, IN, RE) \ - do { \ - switch (errtype) \ - { \ - case ic_argpass: \ - pedwarn (LOCATION, OPT, AR, parmnum, rname); \ - break; \ - case ic_argpass_nonproto: \ - warning (OPT, AR, parmnum, rname); \ - break; \ - case ic_assign: \ - pedwarn (LOCATION, OPT, AS); \ - break; \ - case ic_init: \ - pedwarn (LOCATION, OPT, IN); \ - break; \ - case ic_return: \ - pedwarn (LOCATION, OPT, RE); \ - break; \ - default: \ - gcc_unreachable (); \ - } \ +#define WARN_FOR_ASSIGNMENT(LOCATION, OPT, AR, AS, IN, RE) \ + do { \ + switch (errtype) \ + { \ + case ic_argpass: \ + if (pedwarn (LOCATION, OPT, AR, parmnum, rname)) \ + inform (fundecl ? DECL_SOURCE_LOCATION (fundecl) : LOCATION, \ + "expected %qT but argument is of type %qT", \ + type, rhstype); \ + break; \ + case ic_argpass_nonproto: \ + warning (OPT, AR, parmnum, rname); \ + break; \ + case ic_assign: \ + pedwarn (LOCATION, OPT, AS); \ + break; \ + case ic_init: \ + pedwarn (LOCATION, OPT, IN); \ + break; \ + case ic_return: \ + pedwarn (LOCATION, OPT, RE); \ + break; \ + default: \ + gcc_unreachable (); \ + } \ } while (0) STRIP_TYPE_NOPS (rhs); -- cgit v1.2.1