Commit 3bf1b082 by Jim Wilson Committed by Jim Wilson

Patches to fix minor optimizer bugs

Patches to fix minor optimizer bugs
	* expmed.c (extract_bit_field): Don't make flag_force_mem disable
	extzv for memory operands.
	* cse.c (simplify_ternary_operation, case IF_THEN_ELSE): Collapse
	redundant conditional moves to single operand.

From-SVN: r16129
parent ded17aad
Mon Oct 20 16:47:08 1997 Jim Wilson <wilson@cygnus.com>
* expmed.c (extract_bit_field): Don't make flag_force_mem disable
extzv for memory operands.
* cse.c (simplify_ternary_operation, case IF_THEN_ELSE): Collapse
redundant conditional moves to single operand.
Mon Oct 20 15:30:26 1997 Nick Clifton <nickc@cygnus.com> Mon Oct 20 15:30:26 1997 Nick Clifton <nickc@cygnus.com>
* v850.h: Move define of __v850__ from CPP_PREDEFINES * v850.h: Move define of __v850__ from CPP_PREDEFINES
......
...@@ -4669,6 +4669,16 @@ simplify_ternary_operation (code, mode, op0_mode, op0, op1, op2) ...@@ -4669,6 +4669,16 @@ simplify_ternary_operation (code, mode, op0_mode, op0, op1, op2)
case IF_THEN_ELSE: case IF_THEN_ELSE:
if (GET_CODE (op0) == CONST_INT) if (GET_CODE (op0) == CONST_INT)
return op0 != const0_rtx ? op1 : op2; return op0 != const0_rtx ? op1 : op2;
/* Convert a == b ? b : a to "a". */
if (GET_CODE (op0) == NE && ! side_effects_p (op0)
&& rtx_equal_p (XEXP (op0, 0), op1)
&& rtx_equal_p (XEXP (op0, 1), op2))
return op1;
else if (GET_CODE (op0) == EQ && ! side_effects_p (op0)
&& rtx_equal_p (XEXP (op0, 1), op1)
&& rtx_equal_p (XEXP (op0, 0), op2))
return op2;
break; break;
default: default:
......
...@@ -1084,9 +1084,8 @@ extract_bit_field (str_rtx, bitsize, bitnum, unsignedp, ...@@ -1084,9 +1084,8 @@ extract_bit_field (str_rtx, bitsize, bitnum, unsignedp,
volatile_ok = 1; volatile_ok = 1;
/* Is the memory operand acceptable? */ /* Is the memory operand acceptable? */
if (flag_force_mem if (! ((*insn_operand_predicate[(int) CODE_FOR_extzv][1])
|| ! ((*insn_operand_predicate[(int) CODE_FOR_extzv][1]) (xop0, GET_MODE (xop0))))
(xop0, GET_MODE (xop0))))
{ {
/* No, load into a reg and extract from there. */ /* No, load into a reg and extract from there. */
enum machine_mode bestmode; enum machine_mode bestmode;
......
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