(expand_return): In code for doing scc with jumps,

stick to default handling if we have corresponding scc pattern.

From-SVN: r12641
This commit is contained in:
Torbjorn Granlund 1996-08-14 23:46:53 +00:00
parent 3aba034bf0
commit 3f8b69de79

View File

@ -2734,29 +2734,51 @@ expand_return (retval)
{
/* If this is return x == y; then generate
if (x == y) return 1; else return 0;
if we can do it with explicit return insns and
branches are cheap. */
if we can do it with explicit return insns and branches are cheap,
but not if we have the corresponding scc insn. */
int has_scc = 0;
if (retval_rhs)
switch (TREE_CODE (retval_rhs))
{
case EQ_EXPR:
#ifdef HAVE_seq
has_scc = HAVE_seq;
#endif
case NE_EXPR:
#ifdef HAVE_sne
has_scc = HAVE_sne;
#endif
case GT_EXPR:
#ifdef HAVE_sgt
has_scc = HAVE_sgt;
#endif
case GE_EXPR:
#ifdef HAVE_sge
has_scc = HAVE_sge;
#endif
case LT_EXPR:
#ifdef HAVE_slt
has_scc = HAVE_slt;
#endif
case LE_EXPR:
#ifdef HAVE_sle
has_scc = HAVE_sle;
#endif
case TRUTH_ANDIF_EXPR:
case TRUTH_ORIF_EXPR:
case TRUTH_AND_EXPR:
case TRUTH_OR_EXPR:
case TRUTH_NOT_EXPR:
case TRUTH_XOR_EXPR:
op0 = gen_label_rtx ();
jumpifnot (retval_rhs, op0);
expand_value_return (const1_rtx);
emit_label (op0);
expand_value_return (const0_rtx);
return;
if (! has_scc)
{
op0 = gen_label_rtx ();
jumpifnot (retval_rhs, op0);
expand_value_return (const1_rtx);
emit_label (op0);
expand_value_return (const0_rtx);
return;
}
}
}
#endif /* HAVE_return */