[Bug middle-end/11492] Unsigned char promoted to signed int in for loop test for gpp but not gcc
--- 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
[Bug middle-end/11492] Unsigned char promoted to signed int in for loop test for gpp but not gcc
--- 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