tree-cfg.c (remove_forwarder_block_with_phi): Look at the first label to see if it is a nonlocal label.
* tree-cfg.c (remove_forwarder_block_with_phi): Look at the first label to see if it is a nonlocal label. From-SVN: r94067
This commit is contained in:
parent
0dd973dd97
commit
28773f15a8
@ -6,6 +6,9 @@
|
||||
config/sparc/freebsd.h, config/sparc/netbsd-elf.h,
|
||||
config/sparc/sol2.h: Update copyright.
|
||||
|
||||
* tree-cfg.c (remove_forwarder_block_with_phi): Look at the
|
||||
first label to see if it is a nonlocal label.
|
||||
|
||||
2005-01-22 David Edelsohn <edelsohn@gnu.org>
|
||||
Andrew Pinski <pinskia@physics.uc.edu>
|
||||
|
||||
|
@ -4130,8 +4130,8 @@ remove_forwarder_block_with_phi (basic_block bb)
|
||||
{
|
||||
edge succ = EDGE_SUCC (bb, 0);
|
||||
basic_block dest = succ->dest;
|
||||
tree label;
|
||||
basic_block dombb, domdest, dom;
|
||||
block_stmt_iterator bsi;
|
||||
|
||||
/* We check for infinite loops already in tree_forwarder_block_p.
|
||||
However it may happen that the infinite loop is created
|
||||
@ -4141,16 +4141,11 @@ remove_forwarder_block_with_phi (basic_block bb)
|
||||
|
||||
/* If the destination block consists of a nonlocal label, do not
|
||||
merge it. */
|
||||
for (bsi = bsi_start (dest); !bsi_end_p (bsi); bsi_next (&bsi))
|
||||
{
|
||||
tree stmt = bsi_stmt (bsi);
|
||||
|
||||
if (TREE_CODE (stmt) != LABEL_EXPR)
|
||||
break;
|
||||
|
||||
if (DECL_NONLOCAL (LABEL_EXPR_LABEL (stmt)))
|
||||
return;
|
||||
}
|
||||
label = first_stmt (dest);
|
||||
if (label
|
||||
&& TREE_CODE (label) == LABEL_EXPR
|
||||
&& DECL_NONLOCAL (LABEL_EXPR_LABEL (label)))
|
||||
return;
|
||||
|
||||
/* Redirect each incoming edge to BB to DEST. */
|
||||
while (EDGE_COUNT (bb->preds) > 0)
|
||||
|
Loading…
x
Reference in New Issue
Block a user