2006-06-16 Richard Guenther <rguenther@suse.de>
authorrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 16 Jun 2006 14:56:34 +0000 (14:56 +0000)
committerrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 16 Jun 2006 14:56:34 +0000 (14:56 +0000)
commit58b22aa6b27e40b698a5a124ac8294e85adead64
tree7073ab53b36f03e3e04cb67e6df2ca77822bd4df
parent50e6dbf3d29376a62eb0a58068f8e794fb38d24b
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@114723 138bc75d-0d04-0410-961f-82ee72b054a4
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]