https://gcc.gnu.org/g:bedf26c201894d340a4eb61927879fd0d82e3102

commit r15-6830-gbedf26c201894d340a4eb61927879fd0d82e3102
Author: Richard Biener <rguent...@suse.de>
Date:   Fri Jan 10 16:25:35 2025 +0100

    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:
---
 gcc/tree-vect-slp.cc | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/gcc/tree-vect-slp.cc b/gcc/tree-vect-slp.cc
index 337506419d92..02e7f5c4d587 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<slp_tree, 4> 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

Reply via email to