re PR middle-end/27116 (Incorrect integer division (wrong sign).)
authorRichard Guenther <rguenther@suse.de>
Fri, 16 Jun 2006 14:56:34 +0000 (14:56 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Fri, 16 Jun 2006 14:56:34 +0000 (14:56 +0000)
commit1af8dcbf0b77a3e7e99c586f5e6673eead8b53b1
tree7073ab53b36f03e3e04cb67e6df2ca77822bd4df
parent2d0df1f9a8051d2a89f50e75b9555db06a9fdad8
re PR middle-end/27116 (Incorrect integer division (wrong sign).)

2006-06-16  Richard Guenther  <rguenther@suse.de>

PR middle-end/27116
* fold-const.c (negate_expr_p): Do not introduce undefined
overflow in negating INTEGER_CSTs.
(fold_negate_expr): Rename from negate_expr.  Revert last
change for folding BIT_NOT_EXPR.  Change semantics to
return NULL_TREE for non-simplified negations.  Do not
strip type conversions and unify type handling.
(negate_expr): New function, wrap around fold_negate_expr
but ensure building a tree always.  Strip type conversions
here, fold to result type.
(fold_unary): Use fold_negate_expr for folding NEGATE_EXPR.

* gcc.dg/pr15785-1.c: Revert last change.
* gcc.dg/torture/pr27116-2.c: New testcase.

From-SVN: r114723
gcc/ChangeLog
gcc/fold-const.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/pr15785-1.c
gcc/testsuite/gcc.dg/torture/pr27116-2.c [new file with mode: 0644]