re PR middle-end/23470 (a*a (for floats) is not considered always postive (-ffast...
authorRoger Sayle <roger@eyesopen.com>
Wed, 1 Nov 2006 02:56:45 +0000 (02:56 +0000)
committerRoger Sayle <sayle@gcc.gnu.org>
Wed, 1 Nov 2006 02:56:45 +0000 (02:56 +0000)
commit682d039597faffc4ec84e7a569b93e9447b3e681
treed9a9688ea50ffdbd59bbb3b045ca29467f5f137c
parenta3a1ebb559bce23379e851067df080d9f103f55e
re PR middle-end/23470 (a*a (for floats) is not considered always postive (-ffast-math only))

PR middle-end/23470
* tree.h (tree_expr_nonnegative_p): Return "bool" instead of "int".
* fold-const.c (tree_expr_nonnegative_p): Likewise.  Consider
pow(x,y) and powi(x,y) to be nonnegative if either x is nonnegative
or y is an even integer.

* gcc.dg/pr23470-1.c: New test case.

From-SVN: r118355
gcc/ChangeLog
gcc/fold-const.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/pr23470-1.c [new file with mode: 0644]
gcc/tree.h