------- Comment #6 from manu at gcc dot gnu dot org 2007-01-22 08:28 ------- (In reply to comment #5) > (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++). >
But in the example shown, it is true always, since b == 2 at compile time. Can't we detect that? I know that there is no dataflow solving in the front-ends. But as you said, tree_expr_nonnegative_p is part of the middle-end. Perhaps we should have dataflow info at the front-end. It will make our warnings much smarter. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11492