+2001-07-05 Jeffrey Oldham <oldham@codesourcery.com>
+
+ * flow.c: Reverse Jan Hubicka's patch of 02July2001.
+ (try_redirect_by_replacing_jump): Reverse updating properly the
+ count and frequency information. Reverse removing cc0 setter.
+ (forwarder_block_p): Reverse fixing for fallthru blocks.
+
2001-07-05 DJ Delorie <dj@redhat.com>
* gcc.c (TARGET_OPTION_TRANSLATE_TABLE): New.
forwarder_block_p (bb)
basic_block bb;
{
- rtx insn = bb->head;
+ rtx insn;
if (bb == EXIT_BLOCK_PTR || bb == ENTRY_BLOCK_PTR
|| !bb->succ || bb->succ->succ_next)
return false;
- while (insn != bb->end)
- {
- if (active_insn_p (insn))
- return false;
- insn = NEXT_INSN (insn);
- }
- return (!active_insn_p (insn)
- || (GET_CODE (insn) == JUMP_INSN && onlyjump_p (insn)));
+ insn = next_active_insn (bb->head);
+ if (!insn)
+ return false;
+ if (GET_CODE (insn) == CODE_LABEL
+ || (GET_CODE (insn) == JUMP_INSN && onlyjump_p (insn)))
+ return true;
+ return false;
}
/* Return nonzero if we can reach target from src by falling trought. */
e->flags = EDGE_FALLTHRU;
else
e->flags = 0;
- e->probability = REG_BR_PROB_BASE;
- e->count = src->count;
/* Fixup barriers. */
barrier = next_nonnote_insn (insn);
else if (!fallthru && GET_CODE (barrier) != BARRIER)
emit_barrier_after (insn);
- /* In case we've zapped an conditional jump, we need to kill the cc0
- setter too if available. */
-#ifdef HAVE_cc0
- insn = src->end;
- if (GET_CODE (insn) == JUMP_INSN)
- insn = prev_nonnote_insn (insn);
- if (sets_cc0_p (insn))
- {
- if (insn == src->end)
- src->end = PREV_INSN (insn);
- flow_delete_insn (insn);
- }
-#endif
-
if (e->dest != target)
redirect_edge_succ (e, target);
return true;
for (j = GET_NUM_ELEM (vec) - 1; j >= 0; --j)
if (XEXP (RTVEC_ELT (vec, j), 0) == old_label)
{
- RTVEC_ELT (vec, j) = gen_rtx_LABEL_REF (Pmode, new_label);
+ RTVEC_ELT (vec, j) = gen_rtx_LABEL_REF (VOIDmode, new_label);
--LABEL_NUSES (old_label);
++LABEL_NUSES (new_label);
}
if (s)
{
s->flags |= e->flags;
- s->probability += e->probability;
- s->count += e->count;
remove_edge (e);
}
else