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
This commit is contained in:
parent
ded17aad24
commit
3bf1b08254
@ -1,3 +1,11 @@
|
||||
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>
|
||||
|
||||
* v850.h: Move define of __v850__ from CPP_PREDEFINES
|
||||
|
10
gcc/cse.c
10
gcc/cse.c
@ -4669,6 +4669,16 @@ simplify_ternary_operation (code, mode, op0_mode, op0, op1, op2)
|
||||
case IF_THEN_ELSE:
|
||||
if (GET_CODE (op0) == CONST_INT)
|
||||
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;
|
||||
|
||||
default:
|
||||
|
@ -1084,9 +1084,8 @@ extract_bit_field (str_rtx, bitsize, bitnum, unsignedp,
|
||||
volatile_ok = 1;
|
||||
|
||||
/* Is the memory operand acceptable? */
|
||||
if (flag_force_mem
|
||||
|| ! ((*insn_operand_predicate[(int) CODE_FOR_extzv][1])
|
||||
(xop0, GET_MODE (xop0))))
|
||||
if (! ((*insn_operand_predicate[(int) CODE_FOR_extzv][1])
|
||||
(xop0, GET_MODE (xop0))))
|
||||
{
|
||||
/* No, load into a reg and extract from there. */
|
||||
enum machine_mode bestmode;
|
||||
|
Loading…
Reference in New Issue
Block a user