aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJeffrey Oldham <oldham@codesourcery.com>2001-07-05 20:54:29 +0000
committerJeffrey D. Oldham <oldham@gcc.gnu.org>2001-07-05 20:54:29 +0000
commit35428bb9279f37105de3bc072396cc0e7fd9f3f9 (patch)
treefe329ef8fc417ef0fb8b9a3eb11bde029ea7f519 /gcc
parent0259b07a28f451df6f509ac9d0be1cfef134487f (diff)
downloadgcc-35428bb9279f37105de3bc072396cc0e7fd9f3f9.zip
gcc-35428bb9279f37105de3bc072396cc0e7fd9f3f9.tar.gz
gcc-35428bb9279f37105de3bc072396cc0e7fd9f3f9.tar.bz2
flow.c: Reverse Jan Hubicka's patch of 02July2001.
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. From-SVN: r43788
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/flow.c37
2 files changed, 16 insertions, 28 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 9769799..3808c1d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+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.
diff --git a/gcc/flow.c b/gcc/flow.c
index 391b4b4..ab1bb7f 100644
--- a/gcc/flow.c
+++ b/gcc/flow.c
@@ -1597,19 +1597,18 @@ static bool
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. */
@@ -1700,8 +1699,6 @@ try_redirect_by_replacing_jump (e, target)
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);
@@ -1710,20 +1707,6 @@ try_redirect_by_replacing_jump (e, target)
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;
@@ -1783,7 +1766,7 @@ redirect_edge_and_branch (e, target)
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);
}
@@ -1832,8 +1815,6 @@ redirect_edge_and_branch (e, target)
if (s)
{
s->flags |= e->flags;
- s->probability += e->probability;
- s->count += e->count;
remove_edge (e);
}
else