From f0281fde20ca4d61c5e51213c096492a7c3a8acf Mon Sep 17 00:00:00 2001 From: Richard Biener Date: Mon, 17 Feb 2014 15:34:03 +0000 Subject: [PATCH] tree-vect-stmts.c (free_stmt_vec_info): Clear BB and release SSA defs of pattern stmts. 2014-02-17 Richard Biener * tree-vect-stmts.c (free_stmt_vec_info): Clear BB and release SSA defs of pattern stmts. From-SVN: r207826 --- gcc/ChangeLog | 5 +++++ gcc/tree-vect-stmts.c | 16 ++++++++++++++-- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index dcd4614734a4..c0e3b699b6ea 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2014-02-17 Richard Biener + + * tree-vect-stmts.c (free_stmt_vec_info): Clear BB and + release SSA defs of pattern stmts. + 2014-02-17 Richard Biener * tree-inline.c (expand_call_inline): Release the virtual diff --git a/gcc/tree-vect-stmts.c b/gcc/tree-vect-stmts.c index 8ed834bc5fa5..7e47feb61fcc 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); } } -- 2.47.3