re PR tree-optimization/18270 (internal compiler error: in tree_redirect_edge_and_branch, at tree-cfg.c:4146)

2004-11-03  Andrew MacLeod  <amacleod@redhat.com>

	PR tree-optimization/18270
	* tree-outof-ssa.c (analyze_edges_for_bb): If a block has any incoming
	abnormal edges, simply commit any pending stmts on all incoming edges.

From-SVN: r90031
This commit is contained in:
Andrew MacLeod 2004-11-03 18:56:35 +00:00 committed by Andrew Macleod
parent a85a902471
commit b00e4c238b
2 changed files with 25 additions and 0 deletions

View File

@ -1,3 +1,9 @@
2004-11-03 Andrew MacLeod <amacleod@redhat.com>
PR tree-optimization/18270
* tree-outof-ssa.c (analyze_edges_for_bb): If a block has incoming
abnormal edges, commit all pending stmts on incoming edges.
2004-11-03 Ulrich Weigand <uweigand@de.ibm.com>
* tree-ssa-loop-ivopts.c (get_address_cost): Offset zero does not

View File

@ -2024,6 +2024,25 @@ analyze_edges_for_bb (basic_block bb, FILE *debug_file)
bool is_label;
count = 0;
/* Blocks which contain at least one abnormal edge cannot use
make_forwarder_block. Look for these blocks, and commit any PENDING_STMTs
found on edges in these block. */
have_opportunity = true;
FOR_EACH_EDGE (e, ei, bb->preds)
if (e->flags & EDGE_ABNORMAL)
{
have_opportunity = false;
break;
}
if (!have_opportunity)
{
FOR_EACH_EDGE (e, ei, bb->preds)
if (PENDING_STMT (e))
bsi_commit_one_edge_insert (e, NULL);
return false;
}
/* Find out how many edges there are with interesting pending stmts on them.
Commit the stmts on edges we are not interested in. */
FOR_EACH_EDGE (e, ei, bb->preds)