fold-const.c (negate_expr_p): We can optimize -((int)X>>C) where C is an integer...
authorRoger Sayle <roger@eyesopen.com>
Thu, 11 Mar 2004 17:45:03 +0000 (17:45 +0000)
committerRoger Sayle <sayle@gcc.gnu.org>
Thu, 11 Mar 2004 17:45:03 +0000 (17:45 +0000)
commit239a625ee83ff08df15beab3ca2f1b37881e7f10
tree53c0a411f358defff23d8e0c39b1dc0819424479
parent4b0b51c9706b25603247ec6e48d8ac53e8db64f3
fold-const.c (negate_expr_p): We can optimize -((int)X>>C) where C is an integer constant one bit less than...

* fold-const.c (negate_expr_p) <RSHIFT_EXPR>: We can optimize
-((int)X>>C) where C is an integer constant one bit less than the
size of X into (unsigned)X>>C.  Similarly for unsigned->signed.
(negate_expr) <RSHIFT_EXPR>: Implement the above transformations.

* simplify-rtx.c (simplify_unary_operation): Also implement the
above transformations at the RTL level.

* gcc.c-torture/execute/20040311-1.c: New test case.

From-SVN: r79334
gcc/ChangeLog
gcc/fold-const.c
gcc/simplify-rtx.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.c-torture/execute/20040311-1.c [new file with mode: 0644]