------- Comment #5 from pinskia at gcc dot gnu dot org 2005-11-15 16:19 ------- (In reply to comment #1) > "1000" is a signed integer constant, so b*1000 is a signed integer too. I > guess the warning is ok, then.
That is only true for unsigned multiplication and signed when overflow is undefined (-fno-wrapv which is default for C and C++). The reason why this is middle-end and not C is because tree_expr_nonnegative_p is part of the middle-end and not part of the C front-end. Fixing tree_expr_nonnegative_p will also provide some optimization opertunites also. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11492