From 3bf1b08254ade026581bee54226b2f42d7ec3482 Mon Sep 17 00:00:00 2001 From: Jim Wilson Date: Mon, 20 Oct 1997 23:49:48 +0000 Subject: 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 --- gcc/cse.c | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'gcc/cse.c') diff --git a/gcc/cse.c b/gcc/cse.c index 425e1f1..39ce6f6 100644 --- a/gcc/cse.c +++ b/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: -- cgit v1.1