Commit 144a5f9d by Jeffrey A Law Committed by Jeff Law

jump.c (jump_optimize_1): The first operand in a relational can be a CONST_INT.


        * jump.c (jump_optimize_1): The first operand in a relational
        can be a CONST_INT.
        * optabs.c (emit_conditional_move): Handle relationals which
        have a known true/false result.

From-SVN: r31929
parent 2dd8bc01
Feb 11 12:30:53 2000 Jeffrey A Law (law@cygnus.com)
* jump.c (jump_optimize_1): The first operand in a relational
can be a CONST_INT.
* optabs.c (emit_conditional_move): Handle relationals which
have a known true/false result.
2000-02-11 Geoff Keating <geoffk@cygnus.com> 2000-02-11 Geoff Keating <geoffk@cygnus.com>
* function.c (thread_prologue_and_epilogue_insns): Don't insert * function.c (thread_prologue_and_epilogue_insns): Don't insert
......
...@@ -1305,10 +1305,16 @@ jump_optimize_1 (f, cross_jump, noop_moves, after_regscan, mark_labels_only) ...@@ -1305,10 +1305,16 @@ jump_optimize_1 (f, cross_jump, noop_moves, after_regscan, mark_labels_only)
insn? After all, we're going to delete it. We'd have insn? After all, we're going to delete it. We'd have
to modify emit_conditional_move to take a comparison rtx to modify emit_conditional_move to take a comparison rtx
instead or write a new function. */ instead or write a new function. */
cond0 = gen_reg_rtx (GET_MODE (XEXP (temp4, 0)));
/* We want the target to be able to simplify comparisons with /* We want the target to be able to simplify comparisons with
zero (and maybe other constants as well), so don't create zero (and maybe other constants as well), so don't create
pseudos for them. There's no need to either. */ pseudos for them. There's no need to either. */
if (GET_CODE (XEXP (temp4, 0)) == CONST_INT
|| GET_CODE (XEXP (temp4, 0)) == CONST_DOUBLE)
cond0 = XEXP (temp4, 0);
else
cond0 = gen_reg_rtx (GET_MODE (XEXP (temp4, 0)));
if (GET_CODE (XEXP (temp4, 1)) == CONST_INT if (GET_CODE (XEXP (temp4, 1)) == CONST_INT
|| GET_CODE (XEXP (temp4, 1)) == CONST_DOUBLE) || GET_CODE (XEXP (temp4, 1)) == CONST_DOUBLE)
cond1 = XEXP (temp4, 1); cond1 = XEXP (temp4, 1);
......
...@@ -3593,9 +3593,11 @@ emit_conditional_move (target, code, op0, op1, cmode, op2, op3, mode, ...@@ -3593,9 +3593,11 @@ emit_conditional_move (target, code, op0, op1, cmode, op2, op3, mode,
= compare_from_rtx (op0, op1, code, unsignedp, cmode, NULL_RTX, 0); = compare_from_rtx (op0, op1, code, unsignedp, cmode, NULL_RTX, 0);
/* ??? Watch for const0_rtx (nop) and const_true_rtx (unconditional)? */ /* ??? Watch for const0_rtx (nop) and const_true_rtx (unconditional)? */
/* We can get const0_rtx or const_true_rtx in some circumstances. Just
return NULL and let the caller figure out how best to deal with this
situation. */
if (GET_CODE (comparison) != code) if (GET_CODE (comparison) != code)
/* This shouldn't happen. */ return NULL_RTX;
abort ();
insn = GEN_FCN (icode) (subtarget, comparison, op2, op3); insn = GEN_FCN (icode) (subtarget, comparison, op2, op3);
......
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