diff options
author | Lars Brinkhoff <lars@nocrew.org> | 2001-05-05 00:32:19 +0000 |
---|---|---|
committer | Geoffrey Keating <geoffk@gcc.gnu.org> | 2001-05-05 00:32:19 +0000 |
commit | c52c9a9ceea01062790c7a0fc1a49f10fc5196b4 (patch) | |
tree | 054f7a2f2f758e1a6b989434c1f6ff4b2a206faf | |
parent | 4264cf59cfd4f563445e36c126658541558acab6 (diff) | |
download | gcc-c52c9a9ceea01062790c7a0fc1a49f10fc5196b4.zip gcc-c52c9a9ceea01062790c7a0fc1a49f10fc5196b4.tar.gz gcc-c52c9a9ceea01062790c7a0fc1a49f10fc5196b4.tar.bz2 |
simplify-rtx.c (simplify_binary_operation): Simplify ~a + 1 into -a.
2001-05-04 Lars Brinkhoff <lars@nocrew.org>
* simplify-rtx.c (simplify_binary_operation): Simplify ~a + 1
into -a.
From-SVN: r41854
-rw-r--r-- | gcc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/simplify-rtx.c | 7 |
2 files changed, 14 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 277e58f2..bc4f951 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,6 +1,12 @@ +2001-05-04 Lars Brinkhoff <lars@nocrew.org> + + * simplify-rtx.c (simplify_binary_operation): Simplify ~a + 1 + into -a. + 2000-05-04 Franz Sirl <Franz.Sirl-kernel@lauterbach.com> - * config/rs6000/rs6000.md (ashldi3 splits): Guard with TARGET_POWERPC64. + * config/rs6000/rs6000.md (ashldi3 splits): Guard with + TARGET_POWERPC64. 2001-05-04 Stephane Carrez <Stephane.Carrez@worldnet.fr> diff --git a/gcc/simplify-rtx.c b/gcc/simplify-rtx.c index 07fb24b..0468820 100644 --- a/gcc/simplify-rtx.c +++ b/gcc/simplify-rtx.c @@ -945,6 +945,13 @@ simplify_binary_operation (code, mode, op0, op1) else if (GET_CODE (op1) == NEG) return simplify_gen_binary (MINUS, mode, op0, XEXP (op1, 0)); + /* (~a) + 1 -> -a */ + if (INTEGRAL_MODE_P (mode) + && GET_CODE (op0) == NOT + && GET_CODE (op1) == CONST_INT + && INTVAL (op1) == 1) + return gen_rtx_NEG (mode, XEXP (op0, 0)); + /* Handle both-operands-constant cases. We can only add CONST_INTs to constants since the sum of relocatable symbols can't be handled by most assemblers. Don't add CONST_INT |