aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-vect-stmts.c
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2014-02-17 15:34:03 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2014-02-17 15:34:03 +0000
commitf0281fde20ca4d61c5e51213c096492a7c3a8acf (patch)
treed65a08b9b082a7be9c2776a4f8f672289b40a152 /gcc/tree-vect-stmts.c
parentc742772ca24ded6be152bcfd86c0925484a08c0a (diff)
downloadgcc-f0281fde20ca4d61c5e51213c096492a7c3a8acf.zip
gcc-f0281fde20ca4d61c5e51213c096492a7c3a8acf.tar.gz
gcc-f0281fde20ca4d61c5e51213c096492a7c3a8acf.tar.bz2
tree-vect-stmts.c (free_stmt_vec_info): Clear BB and release SSA defs of pattern stmts.
2014-02-17 Richard Biener <rguenther@suse.de> * tree-vect-stmts.c (free_stmt_vec_info): Clear BB and release SSA defs of pattern stmts. From-SVN: r207826
Diffstat (limited to 'gcc/tree-vect-stmts.c')
-rw-r--r--gcc/tree-vect-stmts.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/gcc/tree-vect-stmts.c b/gcc/tree-vect-stmts.c
index 8ed834b..7e47feb 100644
--- a/gcc/tree-vect-stmts.c
+++ b/gcc/tree-vect-stmts.c
@@ -7389,13 +7389,25 @@ free_stmt_vec_info (gimple stmt)
if (patt_info)
{
gimple_seq seq = STMT_VINFO_PATTERN_DEF_SEQ (patt_info);
+ gimple patt_stmt = STMT_VINFO_STMT (patt_info);
+ gimple_set_bb (patt_stmt, NULL);
+ tree lhs = gimple_get_lhs (patt_stmt);
+ if (TREE_CODE (lhs) == SSA_NAME)
+ release_ssa_name (lhs);
if (seq)
{
gimple_stmt_iterator si;
for (si = gsi_start (seq); !gsi_end_p (si); gsi_next (&si))
- free_stmt_vec_info (gsi_stmt (si));
+ {
+ gimple seq_stmt = gsi_stmt (si);
+ gimple_set_bb (seq_stmt, NULL);
+ lhs = gimple_get_lhs (patt_stmt);
+ if (TREE_CODE (lhs) == SSA_NAME)
+ release_ssa_name (lhs);
+ free_stmt_vec_info (seq_stmt);
+ }
}
- free_stmt_vec_info (STMT_VINFO_RELATED_STMT (stmt_info));
+ free_stmt_vec_info (patt_stmt);
}
}