combine.c (simplify_comparison): Shift a NOT out of a single bit test.
* combine.c (simplify_comparison): Shift a NOT out of a single bit test. From-SVN: r36508
This commit is contained in:
parent
1f3f36d154
commit
9f8e169eb7
2 changed files with 18 additions and 0 deletions
|
@ -1,5 +1,8 @@
|
|||
2000-09-18 Richard Henderson <rth@cygnus.com>
|
||||
|
||||
* combine.c (simplify_comparison): Shift a NOT out of a single
|
||||
bit test.
|
||||
|
||||
* combine.c (if_then_else_cond): Canonicalize BImode true to
|
||||
STORE_FLAG_VALUE.
|
||||
* explow.c (trunc_int_for_mode): Likewise.
|
||||
|
|
|
@ -10811,6 +10811,21 @@ simplify_comparison (code, pop0, pop1)
|
|||
continue;
|
||||
}
|
||||
|
||||
/* Convert (ne (and (lshiftrt (not X)) 1) 0) to
|
||||
(eq (and (lshiftrt X) 1) 0). */
|
||||
if (const_op == 0 && equality_comparison_p
|
||||
&& XEXP (op0, 1) == const1_rtx
|
||||
&& GET_CODE (XEXP (op0, 0)) == LSHIFTRT
|
||||
&& GET_CODE (XEXP (XEXP (op0, 0), 0)) == NOT)
|
||||
{
|
||||
op0 = simplify_and_const_int
|
||||
(op0, mode, gen_rtx_combine (LSHIFTRT, mode,
|
||||
XEXP (XEXP (XEXP (op0, 0), 0), 0),
|
||||
XEXP (XEXP (op0, 0), 1)),
|
||||
(HOST_WIDE_INT) 1);
|
||||
code = (code == NE ? EQ : NE);
|
||||
continue;
|
||||
}
|
||||
break;
|
||||
|
||||
case ASHIFT:
|
||||
|
|
Loading…
Add table
Reference in a new issue