aboutsummaryrefslogtreecommitdiff
path: root/gcc/combine.c
diff options
context:
space:
mode:
authorRichard Henderson <rth@gcc.gnu.org>2000-09-18 10:55:38 -0700
committerRichard Henderson <rth@gcc.gnu.org>2000-09-18 10:55:38 -0700
commita191f0ee83fb815187657cadac361e883f496f01 (patch)
tree15eac562db9eb775cc5d5a1937b5f0e2fb7f5ce0 /gcc/combine.c
parent42d5d0f171ae6a0f933ed7d6cf3adeb653db19c5 (diff)
downloadgcc-a191f0ee83fb815187657cadac361e883f496f01.zip
gcc-a191f0ee83fb815187657cadac361e883f496f01.tar.gz
gcc-a191f0ee83fb815187657cadac361e883f496f01.tar.bz2
machmode.def: Add BImode.
* machmode.def: Add BImode. Add a column for bitsize. * machmode.h (DEF_MACHMODE): Adjust for extra column. (GET_MODE_BITSIZE): Use it. * rtl.c (DEF_MACHMODE): Adjust for extra column. (mode_bitsize): New. (mode_mask_array): Use bitsize. * combine.c (combine_simplify_rtx): Require inner and outer modes to match on nonzero_bits optimizations. From-SVN: r36501
Diffstat (limited to 'gcc/combine.c')
-rw-r--r--gcc/combine.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/gcc/combine.c b/gcc/combine.c
index 478aab2..be73be3 100644
--- a/gcc/combine.c
+++ b/gcc/combine.c
@@ -4347,13 +4347,16 @@ combine_simplify_rtx (x, op0_mode, last, in_dest)
if (STORE_FLAG_VALUE == 1
&& new_code == NE && GET_MODE_CLASS (mode) == MODE_INT
- && op1 == const0_rtx && nonzero_bits (op0, mode) == 1)
+ && op1 == const0_rtx
+ && mode == GET_MODE (op0)
+ && nonzero_bits (op0, mode) == 1)
return gen_lowpart_for_combine (mode,
expand_compound_operation (op0));
else if (STORE_FLAG_VALUE == 1
&& new_code == NE && GET_MODE_CLASS (mode) == MODE_INT
&& op1 == const0_rtx
+ && mode == GET_MODE (op0)
&& (num_sign_bit_copies (op0, mode)
== GET_MODE_BITSIZE (mode)))
{
@@ -4365,6 +4368,7 @@ combine_simplify_rtx (x, op0_mode, last, in_dest)
else if (STORE_FLAG_VALUE == 1
&& new_code == EQ && GET_MODE_CLASS (mode) == MODE_INT
&& op1 == const0_rtx
+ && mode == GET_MODE (op0)
&& nonzero_bits (op0, mode) == 1)
{
op0 = expand_compound_operation (op0);
@@ -4376,6 +4380,7 @@ combine_simplify_rtx (x, op0_mode, last, in_dest)
else if (STORE_FLAG_VALUE == 1
&& new_code == EQ && GET_MODE_CLASS (mode) == MODE_INT
&& op1 == const0_rtx
+ && mode == GET_MODE (op0)
&& (num_sign_bit_copies (op0, mode)
== GET_MODE_BITSIZE (mode)))
{
@@ -4396,6 +4401,7 @@ combine_simplify_rtx (x, op0_mode, last, in_dest)
else if (STORE_FLAG_VALUE == -1
&& new_code == NE && GET_MODE_CLASS (mode) == MODE_INT
&& op1 == const0_rtx
+ && mode == GET_MODE (op0)
&& nonzero_bits (op0, mode) == 1)
{
op0 = expand_compound_operation (op0);
@@ -4406,6 +4412,7 @@ combine_simplify_rtx (x, op0_mode, last, in_dest)
else if (STORE_FLAG_VALUE == -1
&& new_code == EQ && GET_MODE_CLASS (mode) == MODE_INT
&& op1 == const0_rtx
+ && mode == GET_MODE (op0)
&& (num_sign_bit_copies (op0, mode)
== GET_MODE_BITSIZE (mode)))
{
@@ -4418,6 +4425,7 @@ combine_simplify_rtx (x, op0_mode, last, in_dest)
else if (STORE_FLAG_VALUE == -1
&& new_code == EQ && GET_MODE_CLASS (mode) == MODE_INT
&& op1 == const0_rtx
+ && mode == GET_MODE (op0)
&& nonzero_bits (op0, mode) == 1)
{
op0 = expand_compound_operation (op0);