This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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)


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]