[cfe-commits] [PATCH] Add -Wknr-promoted-parameter option
Dimitry Andric
dimitry at andric.com
Sun Dec 18 12:44:45 PST 2011
Hi,
While compiling a certain unnamed piece of mail server software, that is
a sort of mix of C99-like constructs and an extremely old K&R core, I
repeatedly received the following type of warning:
int foo(char x, int y);
int foo(x, y)
char x;
int y;
{
return x * y;
}
// $ clang -c knrpromo.c
// knrpromo.c:4:6: warning: promoted type 'int' of K&R function parameter is not compatible with the parameter type 'char' declared in a previous prototype
// char x;
// ^
// knrpromo.c:1:14: note: previous declaration is here
// int foo(char x, int y);
// ^
// 1 warning generated.
Apparently, this is because of the promotion rules for K&R function
parameters, which are always converted to int.
While this warning is fine in itself, it cannot be turned off, which is
a nuisance, as it would be very disruptive to edit all the dozens, if
not hundreds, of prototypes and definitions in the program to fix these
cases.
Therefore, I propose the attached patch, which adds a new warning option
(-Wknr-promoted-parameter) for turning it on or off. This runs through
the standard tests just fine.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: warn-knr-promoted-parameter-1.diff
Type: text/x-diff
Size: 1936 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20111218/be0ad13c/attachment.diff>
More information about the cfe-commits
mailing list