diff options
author | Richard Henderson <rth@redhat.com> | 2011-07-18 11:45:45 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2011-07-18 11:45:45 -0700 |
commit | 9f68560b1359ee9c2011f5017f8e884af30f24e7 (patch) | |
tree | f8eb7cc2abe6c98730bdf9000e51356f47e8d576 /gcc | |
parent | 031264128aa4d4fb489b687abcd980332da03e90 (diff) | |
download | gcc-9f68560b1359ee9c2011f5017f8e884af30f24e7.zip gcc-9f68560b1359ee9c2011f5017f8e884af30f24e7.tar.gz gcc-9f68560b1359ee9c2011f5017f8e884af30f24e7.tar.bz2 |
bb-reorder.c (emit_barrier_after_bb): Split out of ...
* bb-reorder.c (emit_barrier_after_bb): Split out of ...
(add_labels_and_missing_jumps): ... here.
(fix_up_fall_thru_edges, fix_crossing_conditional_branches): Use it.
From-SVN: r176416
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/bb-reorder.c | 38 |
2 files changed, 22 insertions, 22 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 6597ecd..4bfd455 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2011-07-18 Richard Henderson <rth@redhat.com> + + * bb-reorder.c (emit_barrier_after_bb): Split out of ... + (add_labels_and_missing_jumps): ... here. + (fix_up_fall_thru_edges, fix_crossing_conditional_branches): Use it. + 2011-07-18 Uros Bizjak <ubizjak@gmail.com> PR target/47744 diff --git a/gcc/bb-reorder.c b/gcc/bb-reorder.c index 81369eaf..2660551 100644 --- a/gcc/bb-reorder.c +++ b/gcc/bb-reorder.c @@ -1249,6 +1249,15 @@ find_rarely_executed_basic_blocks_and_crossing_edges (void) return crossing_edges; } +/* Emit a barrier into the footer of BB. */ + +static void +emit_barrier_after_bb (basic_block bb) +{ + rtx barrier = emit_barrier_after (BB_END (bb)); + bb->il.rtl->footer = unlink_insn_chain (barrier, barrier); +} + /* If any destination of a crossing edge does not have a label, add label; Convert any easy fall-through crossing edges to unconditional jumps. */ @@ -1262,7 +1271,7 @@ add_labels_and_missing_jumps (VEC(edge, heap) *crossing_edges) { basic_block src = e->src; basic_block dest = e->dest; - rtx label, barrier, new_jump; + rtx label, new_jump; if (dest == EXIT_BLOCK_PTR) continue; @@ -1288,10 +1297,10 @@ add_labels_and_missing_jumps (VEC(edge, heap) *crossing_edges) new_jump = emit_jump_insn_after (gen_jump (label), BB_END (src)); BB_END (src) = new_jump; - barrier = emit_barrier_after (new_jump); JUMP_LABEL (new_jump) = label; LABEL_NUSES (label) += 1; - src->il.rtl->footer = unlink_insn_chain (barrier, barrier); + + emit_barrier_after_bb (src); /* Mark edge as non-fallthru. */ e->flags &= ~EDGE_FALLTHRU; @@ -1321,7 +1330,6 @@ fix_up_fall_thru_edges (void) int invert_worked; rtx old_jump; rtx fall_thru_label; - rtx barrier; FOR_EACH_BB (cur_bb) { @@ -1451,19 +1459,7 @@ fix_up_fall_thru_edges (void) } /* Add barrier after new jump */ - - if (new_bb) - { - barrier = emit_barrier_after (BB_END (new_bb)); - new_bb->il.rtl->footer = unlink_insn_chain (barrier, - barrier); - } - else - { - barrier = emit_barrier_after (BB_END (cur_bb)); - cur_bb->il.rtl->footer = unlink_insn_chain (barrier, - barrier); - } + emit_barrier_after_bb (new_bb ? new_bb : cur_bb); } } } @@ -1537,7 +1533,6 @@ fix_crossing_conditional_branches (void) rtx old_label = NULL_RTX; rtx new_label; rtx new_jump; - rtx barrier; last_bb = EXIT_BLOCK_PTR->prev_bb; @@ -1629,11 +1624,10 @@ fix_crossing_conditional_branches (void) new_jump = emit_jump_insn_after (gen_return (), BB_END (new_bb)); } - - barrier = emit_barrier_after (new_jump); JUMP_LABEL (new_jump) = old_label; - new_bb->il.rtl->footer = unlink_insn_chain (barrier, - barrier); + BB_END (new_bb) = new_jump; + + emit_barrier_after_bb (new_bb); /* Make sure new bb is in same partition as source of conditional branch. */ |