[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#190757: please add a warning for conversion from "int" to "unsigned int"



On Fri, Apr 25, 2003 at 05:41:20PM +0200, Robert Millan wrote:
> Package: gcc-3.2
> Version: 1:3.2.3-0pre9
> Severity: wishlist
> 
> the following code (compiled with -Wall -pedantic) could be
> considered "buggy", because it implicitly converts a
> signed int to unsigned int when calling "a". if you run it,
> it will print the number 2^32-1 instead of -1.
> 
> #include <stdio.h>
> int a (unsigned int b)
> {
>   return printf ("%u\n", b);
> }
> int main ()
> {
>   return a (-1);
> }
> 
> this can lead to programming bugs. to prevent a programmer from
> such, i'd appreciate if gcc said something like:
> 
> 	warning: implicit conversion from signed to unsigned
> 
> when asked to compile this code.
> 
> maybe it makes sense to warn about conversion from unsigned to
> signed too, although having problems with this is unlikely,
> since bit overflow only happens with really big numbers.

Is this roughly what you want:
drow@nevyn:~% gcc-3.2 -Wall -Wconversion -c c.c
c.c: In function `main':
c.c:8: warning: passing arg 1 of `a' as unsigned due to prototype
c.c:8: warning: negative integer implicitly converted to unsigned type

?

It's not part of -Wall because it's too noisy.

-- 
Daniel Jacobowitz
MontaVista Software                         Debian GNU/Linux Developer



Reply to: