Commit 898c90c0 by Eric Botcazou Committed by Eric Botcazou

cfgrtl.c (commit_one_edge_insertion): Remove always-true test and reindent the subsequent block.

	* cfgrtl.c (commit_one_edge_insertion): Remove always-true test and
	reindent the subsequent block.

From-SVN: r173685
parent cddebdb7
2011-05-11 Eric Botcazou <ebotcazou@adacore.com>
* cfgrtl.c (commit_one_edge_insertion): Remove always-true test and
reindent the subsequent block.
2011-05-11 Satoru Takabayashi <satorux@google.com> 2011-05-11 Satoru Takabayashi <satorux@google.com>
Paul Pluzhnikov <ppluzhnikov@google.com> Paul Pluzhnikov <ppluzhnikov@google.com>
......
...@@ -1465,80 +1465,76 @@ void ...@@ -1465,80 +1465,76 @@ void
commit_one_edge_insertion (edge e) commit_one_edge_insertion (edge e)
{ {
rtx before = NULL_RTX, after = NULL_RTX, insns, tmp, last; rtx before = NULL_RTX, after = NULL_RTX, insns, tmp, last;
basic_block bb = NULL; basic_block bb;
/* Pull the insns off the edge now since the edge might go away. */ /* Pull the insns off the edge now since the edge might go away. */
insns = e->insns.r; insns = e->insns.r;
e->insns.r = NULL_RTX; e->insns.r = NULL_RTX;
if (!before && !after) /* Figure out where to put these insns. If the destination has
{ one predecessor, insert there. Except for the exit block. */
/* Figure out where to put these things. If the destination has if (single_pred_p (e->dest) && e->dest != EXIT_BLOCK_PTR)
one predecessor, insert there. Except for the exit block. */ {
if (single_pred_p (e->dest) && e->dest != EXIT_BLOCK_PTR) bb = e->dest;
{
bb = e->dest; /* Get the location correct wrt a code label, and "nice" wrt
a basic block note, and before everything else. */
/* Get the location correct wrt a code label, and "nice" wrt tmp = BB_HEAD (bb);
a basic block note, and before everything else. */ if (LABEL_P (tmp))
tmp = BB_HEAD (bb); tmp = NEXT_INSN (tmp);
if (LABEL_P (tmp)) if (NOTE_INSN_BASIC_BLOCK_P (tmp))
tmp = NEXT_INSN (tmp); tmp = NEXT_INSN (tmp);
if (NOTE_INSN_BASIC_BLOCK_P (tmp)) if (tmp == BB_HEAD (bb))
tmp = NEXT_INSN (tmp); before = tmp;
if (tmp == BB_HEAD (bb)) else if (tmp)
before = tmp; after = PREV_INSN (tmp);
else if (tmp) else
after = PREV_INSN (tmp); after = get_last_insn ();
else }
after = get_last_insn ();
}
/* If the source has one successor and the edge is not abnormal,
insert there. Except for the entry block. */
else if ((e->flags & EDGE_ABNORMAL) == 0
&& single_succ_p (e->src)
&& e->src != ENTRY_BLOCK_PTR)
{
bb = e->src;
/* It is possible to have a non-simple jump here. Consider a target /* If the source has one successor and the edge is not abnormal,
where some forms of unconditional jumps clobber a register. This insert there. Except for the entry block. */
happens on the fr30 for example. else if ((e->flags & EDGE_ABNORMAL) == 0
&& single_succ_p (e->src)
&& e->src != ENTRY_BLOCK_PTR)
{
bb = e->src;
We know this block has a single successor, so we can just emit /* It is possible to have a non-simple jump here. Consider a target
the queued insns before the jump. */ where some forms of unconditional jumps clobber a register. This
if (JUMP_P (BB_END (bb))) happens on the fr30 for example.
before = BB_END (bb);
else
{
/* We'd better be fallthru, or we've lost track of
what's what. */
gcc_assert (e->flags & EDGE_FALLTHRU);
after = BB_END (bb); We know this block has a single successor, so we can just emit
} the queued insns before the jump. */
} if (JUMP_P (BB_END (bb)))
/* Otherwise we must split the edge. */ before = BB_END (bb);
else else
{ {
bb = split_edge (e); /* We'd better be fallthru, or we've lost track of what's what. */
after = BB_END (bb); gcc_assert (e->flags & EDGE_FALLTHRU);
if (flag_reorder_blocks_and_partition after = BB_END (bb);
&& targetm.have_named_sections
&& e->src != ENTRY_BLOCK_PTR
&& BB_PARTITION (e->src) == BB_COLD_PARTITION
&& !(e->flags & EDGE_CROSSING)
&& JUMP_P (after)
&& !any_condjump_p (after)
&& (single_succ_edge (bb)->flags & EDGE_CROSSING))
add_reg_note (after, REG_CROSSING_JUMP, NULL_RTX);
} }
} }
/* Now that we've found the spot, do the insertion. */ /* Otherwise we must split the edge. */
else
{
bb = split_edge (e);
after = BB_END (bb);
if (flag_reorder_blocks_and_partition
&& targetm.have_named_sections
&& e->src != ENTRY_BLOCK_PTR
&& BB_PARTITION (e->src) == BB_COLD_PARTITION
&& !(e->flags & EDGE_CROSSING)
&& JUMP_P (after)
&& !any_condjump_p (after)
&& (single_succ_edge (bb)->flags & EDGE_CROSSING))
add_reg_note (after, REG_CROSSING_JUMP, NULL_RTX);
}
/* Now that we've found the spot, do the insertion. */
if (before) if (before)
{ {
emit_insn_before_noloc (insns, before, bb); emit_insn_before_noloc (insns, before, bb);
......
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