re PR tree-optimization/26447 (verify_flow_info failed, load PRE with java program)

2006-05-04  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/26447
	* tree-ssa-pre.c (realify_fake_stores): For necessary loads
	produce SSA_NAME copies before the store stmt to avoid
	breaking exception handling.

From-SVN: r113517
This commit is contained in:
Richard Guenther 2006-05-04 07:44:37 +00:00 committed by Richard Biener
parent 0d4b9fa4c8
commit 23ba9627f4
2 changed files with 19 additions and 9 deletions

View File

@ -1,3 +1,10 @@
2006-05-04 Richard Guenther <rguenther@suse.de>
PR tree-optimization/26447
* tree-ssa-pre.c (realify_fake_stores): For necessary loads
produce SSA_NAME copies before the store stmt to avoid
breaking exception handling.
2006-05-04 Jakub Jelinek <jakub@redhat.com>
PR middle-end/27388

View File

@ -3290,16 +3290,19 @@ realify_fake_stores (void)
/* Mark the temp variable as referenced */
add_referenced_tmp_var (SSA_NAME_VAR (TREE_OPERAND (stmt, 0)));
/* Put the new statement in GC memory, fix up the annotation
and SSA_NAME_DEF_STMT on it, and then put it in place of
the old statement in the IR stream. */
newstmt = unshare_expr (stmt);
SSA_NAME_DEF_STMT (TREE_OPERAND (newstmt, 0)) = newstmt;
newstmt->common.ann = stmt->common.ann;
/* Put the new statement in GC memory, fix up the
SSA_NAME_DEF_STMT on it, and then put it in place of
the old statement before the store in the IR stream
as a plain ssa name copy. */
bsi = bsi_for_stmt (stmt);
bsi_replace (&bsi, newstmt, true);
bsi_prev (&bsi);
newstmt = build2 (MODIFY_EXPR, void_type_node,
TREE_OPERAND (stmt, 0),
TREE_OPERAND (bsi_stmt (bsi), 1));
SSA_NAME_DEF_STMT (TREE_OPERAND (newstmt, 0)) = newstmt;
bsi_insert_before (&bsi, newstmt, BSI_SAME_STMT);
bsi = bsi_for_stmt (stmt);
bsi_remove (&bsi, true);
}
else
release_defs (stmt);