cfgcleanup.c (try_forward_edges): Use location_t for locations.
* 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. From-SVN: r210416
This commit is contained in:
parent
112903088c
commit
8a829274db
@ -1,3 +1,10 @@
|
|||||||
|
2014-05-14 Eric Botcazou <ebotcazou@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.
|
||||||
|
|
||||||
2014-05-14 Andrey Belevantsev <abel@ispras.ru>
|
2014-05-14 Andrey Belevantsev <abel@ispras.ru>
|
||||||
|
|
||||||
PR rtl-optimization/60901
|
PR rtl-optimization/60901
|
||||||
|
@ -425,7 +425,8 @@ try_forward_edges (int mode, basic_block b)
|
|||||||
for (ei = ei_start (b->succs); (e = ei_safe_edge (ei)); )
|
for (ei = ei_start (b->succs); (e = ei_safe_edge (ei)); )
|
||||||
{
|
{
|
||||||
basic_block target, first;
|
basic_block target, first;
|
||||||
int counter, goto_locus;
|
location_t goto_locus;
|
||||||
|
int counter;
|
||||||
bool threaded = false;
|
bool threaded = false;
|
||||||
int nthreaded_edges = 0;
|
int nthreaded_edges = 0;
|
||||||
bool may_thread = first_pass || (b->flags & BB_MODIFIED) != 0;
|
bool may_thread = first_pass || (b->flags & BB_MODIFIED) != 0;
|
||||||
@ -477,8 +478,8 @@ try_forward_edges (int mode, basic_block b)
|
|||||||
{
|
{
|
||||||
/* When not optimizing, ensure that edges or forwarder
|
/* When not optimizing, ensure that edges or forwarder
|
||||||
blocks with different locus are not optimized out. */
|
blocks with different locus are not optimized out. */
|
||||||
int new_locus = single_succ_edge (target)->goto_locus;
|
location_t new_locus = single_succ_edge (target)->goto_locus;
|
||||||
int locus = goto_locus;
|
location_t locus = goto_locus;
|
||||||
|
|
||||||
if (new_locus != UNKNOWN_LOCATION
|
if (new_locus != UNKNOWN_LOCATION
|
||||||
&& locus != UNKNOWN_LOCATION
|
&& locus != UNKNOWN_LOCATION
|
||||||
|
@ -889,7 +889,7 @@ rtl_merge_blocks (basic_block a, basic_block b)
|
|||||||
BB_HEAD (b) = b_empty ? NULL_RTX : b_head;
|
BB_HEAD (b) = b_empty ? NULL_RTX : b_head;
|
||||||
delete_insn_chain (del_first, del_last, true);
|
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. */
|
some unique locus, emit a nop with that locus in between. */
|
||||||
if (!optimize)
|
if (!optimize)
|
||||||
{
|
{
|
||||||
@ -4564,7 +4564,7 @@ cfg_layout_merge_blocks (basic_block a, basic_block b)
|
|||||||
try_redirect_by_replacing_jump (EDGE_SUCC (a, 0), b, true);
|
try_redirect_by_replacing_jump (EDGE_SUCC (a, 0), b, true);
|
||||||
gcc_assert (!JUMP_P (BB_END (a)));
|
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. */
|
some unique locus, emit a nop with that locus in between. */
|
||||||
if (!optimize)
|
if (!optimize)
|
||||||
emit_nop_for_unique_locus_between (a, b);
|
emit_nop_for_unique_locus_between (a, b);
|
||||||
|
@ -949,7 +949,7 @@ static basic_block
|
|||||||
emit_to_new_bb_before (rtx seq, rtx insn)
|
emit_to_new_bb_before (rtx seq, rtx insn)
|
||||||
{
|
{
|
||||||
rtx last;
|
rtx last;
|
||||||
basic_block bb, prev_bb;
|
basic_block bb;
|
||||||
edge e;
|
edge e;
|
||||||
edge_iterator ei;
|
edge_iterator ei;
|
||||||
|
|
||||||
@ -964,8 +964,7 @@ emit_to_new_bb_before (rtx seq, rtx insn)
|
|||||||
last = emit_insn_before (seq, insn);
|
last = emit_insn_before (seq, insn);
|
||||||
if (BARRIER_P (last))
|
if (BARRIER_P (last))
|
||||||
last = PREV_INSN (last);
|
last = PREV_INSN (last);
|
||||||
prev_bb = BLOCK_FOR_INSN (insn)->prev_bb;
|
bb = create_basic_block (seq, last, BLOCK_FOR_INSN (insn)->prev_bb);
|
||||||
bb = create_basic_block (seq, last, prev_bb);
|
|
||||||
update_bb_for_insn (bb);
|
update_bb_for_insn (bb);
|
||||||
bb->flags |= BB_SUPERBLOCK;
|
bb->flags |= BB_SUPERBLOCK;
|
||||||
return bb;
|
return bb;
|
||||||
|
Loading…
Reference in New Issue
Block a user