diff options
author | Jakub Jelinek <jakub@redhat.com> | 2010-11-09 12:54:32 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2010-11-09 12:54:32 +0100 |
commit | 277dc8106a0e984c7183d650283515cfe49045b4 (patch) | |
tree | 1266db03a7c5be51f082e7ae4130491500777996 /gcc/tree-ssa-propagate.c | |
parent | 8810610ef1ef35a9f731c5b9c700c05b68799a4a (diff) | |
download | gcc-277dc8106a0e984c7183d650283515cfe49045b4.zip gcc-277dc8106a0e984c7183d650283515cfe49045b4.tar.gz gcc-277dc8106a0e984c7183d650283515cfe49045b4.tar.bz2 |
re PR middle-end/46360 (ICE in release_defs, at tree-ssanames.c:313)
PR middle-end/46360
* tree-ssa-propagate.c (update_call_from_tree): Fix for use
not in SSA mode.
* gcc.c-torture/compile/pr46360.c: New test.
From-SVN: r166482
Diffstat (limited to 'gcc/tree-ssa-propagate.c')
-rw-r--r-- | gcc/tree-ssa-propagate.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/gcc/tree-ssa-propagate.c b/gcc/tree-ssa-propagate.c index c97960c..7f1d84e 100644 --- a/gcc/tree-ssa-propagate.c +++ b/gcc/tree-ssa-propagate.c @@ -760,8 +760,11 @@ update_call_from_tree (gimple_stmt_iterator *si_p, tree expr) /* No value is expected, and EXPR has no effect. Replace it with an empty statement. */ new_stmt = gimple_build_nop (); - unlink_stmt_vdef (stmt); - release_defs (stmt); + if (gimple_in_ssa_p (cfun)) + { + unlink_stmt_vdef (stmt); + release_defs (stmt); + } } else { @@ -773,7 +776,8 @@ update_call_from_tree (gimple_stmt_iterator *si_p, tree expr) lhs = create_tmp_var (TREE_TYPE (expr), NULL); new_stmt = gimple_build_assign (lhs, expr); add_referenced_var (lhs); - lhs = make_ssa_name (lhs, new_stmt); + if (gimple_in_ssa_p (cfun)) + lhs = make_ssa_name (lhs, new_stmt); gimple_assign_set_lhs (new_stmt, lhs); gimple_set_vuse (new_stmt, gimple_vuse (stmt)); gimple_set_vdef (new_stmt, gimple_vdef (stmt)); |