From c4d825b5e780cea568317b2ca2c82420b677f119 Mon Sep 17 00:00:00 2001 From: Richard Biener Date: Tue, 22 Jan 2019 08:30:51 +0000 Subject: tree-vect-loop.c (vect_analyze_loop_operations): Use auto_vec for cost vector to fix memleak. 2019-01-22 Richard Biener * tree-vect-loop.c (vect_analyze_loop_operations): Use auto_vec for cost vector to fix memleak. (vectorize_fold_left_reduction): Properly gather SLP defs. (vectorizable_comparison): Do not swap operands to properly gather SLP defs. From-SVN: r268137 --- gcc/tree-vect-loop.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) (limited to 'gcc/tree-vect-loop.c') diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c index afbf9a9..202cab9 100644 --- a/gcc/tree-vect-loop.c +++ b/gcc/tree-vect-loop.c @@ -1470,8 +1470,7 @@ vect_analyze_loop_operations (loop_vec_info loop_vinfo) DUMP_VECT_SCOPE ("vect_analyze_loop_operations"); - stmt_vector_for_cost cost_vec; - cost_vec.create (2); + auto_vec cost_vec; for (i = 0; i < nbbs; i++) { @@ -1581,7 +1580,6 @@ vect_analyze_loop_operations (loop_vec_info loop_vinfo) } /* bbs */ add_stmt_costs (loop_vinfo->target_cost_data, &cost_vec); - cost_vec.release (); /* All operations in the loop are either irrelevant (deal with loop control, or dead), or only used outside the loop and can be moved @@ -5742,8 +5740,14 @@ vectorize_fold_left_reduction (stmt_vec_info stmt_info, auto_vec vec_oprnds0; if (slp_node) { - vect_get_vec_defs (op0, NULL_TREE, stmt_info, &vec_oprnds0, NULL, - slp_node); + auto_vec > vec_defs (2); + auto_vec sops(2); + sops.quick_push (ops[0]); + sops.quick_push (ops[1]); + vect_get_slp_defs (sops, slp_node, &vec_defs); + vec_oprnds0.safe_splice (vec_defs[1 - reduc_index]); + vec_defs[0].release (); + vec_defs[1].release (); group_size = SLP_TREE_SCALAR_STMTS (slp_node).length (); scalar_dest_def_info = SLP_TREE_SCALAR_STMTS (slp_node)[group_size - 1]; } -- cgit v1.1