This removes a useless local variable in emit_to_new_bb_before coming from a
patch that was later reverted, thus restoring the original code, changes the
type of locations in try_forward_edges to location_t and fixes inconsistent
comments I added to rtl_merge_blocks and cfg_layout_merge_blocks.
Tested on x86_64-suse-linux, applied on the mainline as obvious.
2014-05-14 Eric Botcazou <ebotca...@adacore.com>
* cfgcleanup.c (try_forward_edges): Use location_t for locations.
* cfgrtl.c (rtl_merge_blocks): Fix comment.
(cfg_layout_merge_blocks): Likewise.
* except.c (emit_to_new_bb_before): Remove prev_bb local variable.
--
Eric Botcazou
Index: except.c
===================================================================
--- except.c (revision 210410)
+++ except.c (working copy)
@@ -949,7 +949,7 @@ static basic_block
emit_to_new_bb_before (rtx seq, rtx insn)
{
rtx last;
- basic_block bb, prev_bb;
+ basic_block bb;
edge e;
edge_iterator ei;
@@ -964,8 +964,7 @@ emit_to_new_bb_before (rtx seq, rtx insn
last = emit_insn_before (seq, insn);
if (BARRIER_P (last))
last = PREV_INSN (last);
- prev_bb = BLOCK_FOR_INSN (insn)->prev_bb;
- bb = create_basic_block (seq, last, prev_bb);
+ bb = create_basic_block (seq, last, BLOCK_FOR_INSN (insn)->prev_bb);
update_bb_for_insn (bb);
bb->flags |= BB_SUPERBLOCK;
return bb;
Index: cfgcleanup.c
===================================================================
--- cfgcleanup.c (revision 210410)
+++ cfgcleanup.c (working copy)
@@ -425,7 +425,8 @@ try_forward_edges (int mode, basic_block
for (ei = ei_start (b->succs); (e = ei_safe_edge (ei)); )
{
basic_block target, first;
- int counter, goto_locus;
+ location_t goto_locus;
+ int counter;
bool threaded = false;
int nthreaded_edges = 0;
bool may_thread = first_pass || (b->flags & BB_MODIFIED) != 0;
@@ -477,8 +478,8 @@ try_forward_edges (int mode, basic_block
{
/* When not optimizing, ensure that edges or forwarder
blocks with different locus are not optimized out. */
- int new_locus = single_succ_edge (target)->goto_locus;
- int locus = goto_locus;
+ location_t new_locus = single_succ_edge (target)->goto_locus;
+ location_t locus = goto_locus;
if (new_locus != UNKNOWN_LOCATION
&& locus != UNKNOWN_LOCATION
Index: cfgrtl.c
===================================================================
--- cfgrtl.c (revision 210410)
+++ cfgrtl.c (working copy)
@@ -889,7 +889,7 @@ rtl_merge_blocks (basic_block a, basic_b
BB_HEAD (b) = b_empty ? NULL_RTX : b_head;
delete_insn_chain (del_first, del_last, true);
- /* When not optimizing CFG and the edge is the only place in RTL which holds
+ /* When not optimizing and the edge is the only place in RTL which holds
some unique locus, emit a nop with that locus in between. */
if (!optimize)
{
@@ -4564,7 +4564,7 @@ cfg_layout_merge_blocks (basic_block a,
try_redirect_by_replacing_jump (EDGE_SUCC (a, 0), b, true);
gcc_assert (!JUMP_P (BB_END (a)));
- /* When not optimizing CFG and the edge is the only place in RTL which holds
+ /* When not optimizing and the edge is the only place in RTL which holds
some unique locus, emit a nop with that locus in between. */
if (!optimize)
emit_nop_for_unique_locus_between (a, b);