Figured while running a leak check on some new SLP code.

Bootstrapped and tested on x86_64-unknown-linux-gnu, pushed.

        * tree-vect-stmts.cc (vectorizable_load): Make dr_chain
        an auto_vec, move down to where we use it to avoid creating
        it twice.
---
 gcc/tree-vect-stmts.cc | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/gcc/tree-vect-stmts.cc b/gcc/tree-vect-stmts.cc
index 07d476ac44f..748b3bcb0ab 100644
--- a/gcc/tree-vect-stmts.cc
+++ b/gcc/tree-vect-stmts.cc
@@ -9632,7 +9632,6 @@ vectorizable_load (vec_info *vinfo,
   tree msq = NULL_TREE, lsq;
   tree realignment_token = NULL_TREE;
   gphi *phi = NULL;
-  vec<tree> dr_chain = vNULL;
   bool grouped_load = false;
   stmt_vec_info first_stmt_info;
   stmt_vec_info first_stmt_info_for_drptr = NULL;
@@ -10428,7 +10427,6 @@ vectorizable_load (vec_info *vinfo,
        {
          group_gap_adj = group_size - scalar_lanes;
        }
-      dr_chain.create (vec_num);
 
       ref_type = get_group_alias_ptr_type (first_stmt_info);
     }
@@ -10764,6 +10762,8 @@ vectorizable_load (vec_info *vinfo,
     {
       gcc_assert ((!grouped_load && !ls.slp_perm) || ls.ls_type);
 
+      auto_vec<tree> dr_chain (vec_num);
+
       /* If we pun the original vectype the loads as well as costing, length,
         etc. is performed with the new type.  After loading we VIEW_CONVERT
         the data to the original vectype.  */
@@ -11261,6 +11261,7 @@ vectorizable_load (vec_info *vinfo,
                                       stmt_info, bump);
     }
 
+  auto_vec<tree> dr_chain;
   if (grouped_load || ls.slp_perm)
     dr_chain.create (vec_num);
 
@@ -11820,7 +11821,6 @@ vectorizable_load (vec_info *vinfo,
                                                  nullptr, true);
          gcc_assert (ok && ls.n_perms == n_perms2);
        }
-      dr_chain.release ();
     }
 
   if (costing_p)
-- 
2.51.0

Reply via email to