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