On Tue, 19 Mar 2013, Jeff Law wrote:
On 03/19/2013 10:08 AM, Marc Glisse wrote:
Hello,
this patch extends the property that x*x is non-negative, which was
already known for floats, to integers with undefined overflow.
2013-03-19 Marc Glisse <marc.gli...@inria.fr>
PR tree-optimization/56355
gcc/
* fold-const.c (tree_binary_nonnegative_warnv_p) <MULT_EXPR>:
Also handle integers with undefined overflow.
gcc/testsuite/
* gcc.dg/pr56355-1.c: New file.
Fine for the trunk. Though I would suggest waiting for http service & web
archives to return before committing.
Yep.
BTW, did you check if VRP creates a non-negative range for this case as well?
It doesn't :-(
It would probably need to be done in extract_range_from_binary_expr since
extract_range_from_binary_expr_1 does not see the expression, maybe after
calling extract_range_from_binary_expr_1, and we would remove the negative
part of the interval it returned.
--
Marc Glisse