Commit a0ee8b5f by Roger Sayle Committed by Roger Sayle

simplify-rtx.c (simplify_binary_operation): Optimize (and (sign_extend X) C)…

simplify-rtx.c (simplify_binary_operation): Optimize (and (sign_extend X) C) into (zero_extend (and X C)).


	* simplify-rtx.c (simplify_binary_operation) <AND>: Optimize
	(and (sign_extend X) C) into (zero_extend (and X C)).

From-SVN: r93629
parent 92018897
2005-01-13 Roger Sayle <roger@eyesopen.com>
* simplify-rtx.c (simplify_binary_operation) <AND>: Optimize
(and (sign_extend X) C) into (zero_extend (and X C)).
2005-01-13 David O'Brien <obrien@FreeBSD.org>
* config/freebsd-spec.h: Make KSE pthread lib logic the default.
2005-01-13 Richard Henderson <rth@redhat.com>
PR target/19009
......
/* RTL simplification functions for GNU compiler.
Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
This file is part of GCC.
......@@ -1910,6 +1910,23 @@ simplify_binary_operation (enum rtx_code code, enum machine_mode mode,
&& ! side_effects_p (op0)
&& GET_MODE_CLASS (mode) != MODE_CC)
return const0_rtx;
/* Transform (and (extend X) C) into (zero_extend (and X C)) if
there are no non-zero bits of C outside of X's mode. */
if ((GET_CODE (op0) == SIGN_EXTEND
|| GET_CODE (op0) == ZERO_EXTEND)
&& GET_CODE (trueop1) == CONST_INT
&& GET_MODE_BITSIZE (mode) <= HOST_BITS_PER_WIDE_INT
&& (~GET_MODE_MASK (GET_MODE (XEXP (op0, 0)))
& INTVAL (trueop1)) == 0)
{
enum machine_mode imode = GET_MODE (XEXP (op0, 0));
tem = simplify_gen_binary (AND, imode, XEXP (op0, 0),
gen_int_mode (INTVAL (trueop1),
imode));
return simplify_gen_unary (ZERO_EXTEND, mode, tem, imode);
}
/* For constants M and N, if M == (1LL << cst) - 1 && (N & M) == M,
((A & N) + B) & M -> (A + B) & M
Similarly if (N & M) == 0,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment