diff options
author | Roger Sayle <roger@eyesopen.com> | 2004-03-11 17:45:03 +0000 |
---|---|---|
committer | Roger Sayle <sayle@gcc.gnu.org> | 2004-03-11 17:45:03 +0000 |
commit | 239a625ee83ff08df15beab3ca2f1b37881e7f10 (patch) | |
tree | 53c0a411f358defff23d8e0c39b1dc0819424479 /gcc/ChangeLog | |
parent | 4b0b51c9706b25603247ec6e48d8ac53e8db64f3 (diff) | |
download | gcc-239a625ee83ff08df15beab3ca2f1b37881e7f10.zip gcc-239a625ee83ff08df15beab3ca2f1b37881e7f10.tar.gz gcc-239a625ee83ff08df15beab3ca2f1b37881e7f10.tar.bz2 |
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
Diffstat (limited to 'gcc/ChangeLog')
-rw-r--r-- | gcc/ChangeLog | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 318b12f..dcaa0b6 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +2004-03-11 Roger Sayle <roger@eyesopen.com> + + * 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. + 2004-03-11 Alan Modra <amodra@bigpond.net.au> * real.c (encode_ibm_extended): Do round low word. |