This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
no warning on mixing unsigned and signed
- From: Peter Barada <pbarada at mail dot wm dot sps dot mot dot com>
- To: gcc at gcc dot gnu dot org
- Date: Tue, 19 Mar 2002 18:49:42 -0500
- Subject: no warning on mixing unsigned and signed
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...
I would have expected a warning along the lines of "comparison of
unsigned expression < 0 is always false".
--
Peter Barada Peter.Barada@motorola.com
Wizard 781-852-2768 (direct)
WaveMark Solutions(wholly owned by Motorola) 781-270-0193 (fax)