re PR middle-end/30322 (((-i-1) + i) +1) is turned into ~i + (i+1) and never into...
authorRoger Sayle <roger@eyesopen.com>
Sun, 31 Dec 2006 16:17:49 +0000 (16:17 +0000)
committerRoger Sayle <sayle@gcc.gnu.org>
Sun, 31 Dec 2006 16:17:49 +0000 (16:17 +0000)
commit870aa1ebe0d3e05912f763ece1ed4491282d34e2
treeb1cf895f653525f285670f935e58e7beff2a7eef
parent7c2da05e604c27549afadf4df26c679aead5f414
re PR middle-end/30322 (((-i-1) + i) +1) is turned into ~i + (i+1) and never into 0 on the tree level)

PR middle-end/30322
* fold-const.c (fold_binary): Fold X + ~X and ~X + X into -1 when
we don't care about trapping overflow.  Only convert -A - 1 into ~A
when we don't care about trapping overflow.

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

From-SVN: r120300
gcc/ChangeLog
gcc/fold-const.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/fold-plusnot-1.c [new file with mode: 0644]