no warning on mixing unsigned and signed
Peter Barada
pbarada@mail.wm.sps.mot.com
Tue Mar 19 16:09:00 GMT 2002
>I been alerted to a bug in gcc-3.0.4 and 2.96(yeah, I know its a
>release from RH, but I don't have a 2.95.3 version handy), the
>following code when built using '-O -Wall' doesn't warn that the
>comparison can not be false, and converts 'foo' into an empty function
>since (a-b) can not be negative:
>
>extern void bar(void);
>void foo(int a, unsigned int b)
>{
> if ((a - b) < 0)
> bar();
>}
>
>If a is unsigned, or the expression is (a < 0) the results are the same...
Arrrggghh; fat fingered that badly. It should've been:
I been alerted to a bug in gcc-3.0.4 and 2.96(yeah, I know its a
release from RH, but I don't have a 2.95.3 version handy), the
following code when built using '-O -Wall' doesn't warn that the
comparison can not be *true*, and converts 'foo' into an empty function
since (a-b) can not be negative:
extern void bar(void);
void foo(int a, unsigned int b)
{
if ((a - b) < 0)
bar();
}
If a is unsigned, *and if* the expression is (a < 0) the results are
the same...
--
Peter Barada Peter.Barada@motorola.com
Wizard 781-852-2768 (direct)
WaveMark Solutions(wholly owned by Motorola) 781-270-0193 (fax)
More information about the Gcc
mailing list