From: Richard Biener Date: Fri, 10 Jan 2025 15:25:35 +0000 (+0100) Subject: More memory leak fixes X-Git-Tag: basepoints/gcc-16~2723 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=bedf26c201894d340a4eb61927879fd0d82e3102;p=thirdparty%2Fgcc.git More memory leak fixes The following were found compiling SPEC CPU 2017 with valgrind. * tree-vect-slp.cc (vect_analyze_slp): Release saved_stmts vector. (vect_build_slp_tree_2): Release new_oprnds_info when not used. (vect_analyze_slp): Release root_stmts when gcond SLP build fails. --- diff --git a/gcc/tree-vect-slp.cc b/gcc/tree-vect-slp.cc index 337506419d9..02e7f5c4d58 100644 --- a/gcc/tree-vect-slp.cc +++ b/gcc/tree-vect-slp.cc @@ -2678,6 +2678,8 @@ out: nops = 1; has_two_operators_perm = true; } + else + vect_free_oprnd_info (new_oprnds_info); } auto_vec children; @@ -4951,8 +4953,8 @@ vect_analyze_slp (vec_info *vinfo, unsigned max_tree_size, max_tree_size, &limit, bst_map, NULL, force_single_lane); } - saved_stmts.release (); } + saved_stmts.release (); } /* Make sure to vectorize only-live stmts, usually inductions. */ @@ -5013,10 +5015,11 @@ vect_analyze_slp (vec_info *vinfo, unsigned max_tree_size, stmts.create (1); stmts.quick_push (vect_stmt_to_vectorize (varg)); - vect_build_slp_instance (vinfo, slp_inst_kind_gcond, - stmts, roots, remain, - max_tree_size, &limit, - bst_map, NULL, force_single_lane); + if (! vect_build_slp_instance (vinfo, slp_inst_kind_gcond, + stmts, roots, remain, + max_tree_size, &limit, + bst_map, NULL, force_single_lane)) + roots.release (); } /* Find and create slp instances for inductions that have been forced