aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMartin Liska <mliska@suse.cz>2016-05-19 17:08:02 +0200
committerMartin Liska <marxin@gcc.gnu.org>2016-05-19 15:08:02 +0000
commit00426f9a9e57175d6373359aec3e7956a6d2a1c1 (patch)
tree323c7e285b171c20a125b50781eb07684d653c34 /gcc
parent4089c3402ca61f129c426c2a312a1849981dfb46 (diff)
downloadgcc-00426f9a9e57175d6373359aec3e7956a6d2a1c1.zip
gcc-00426f9a9e57175d6373359aec3e7956a6d2a1c1.tar.gz
gcc-00426f9a9e57175d6373359aec3e7956a6d2a1c1.tar.bz2
Fix memory leak in tree-vect-stmts.c
* tree-vect-stmts.c (vectorizable_simd_clone_call): Utilize auto_vec instead of vec. From-SVN: r236472
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/tree-vect-stmts.c21
2 files changed, 10 insertions, 16 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 8b30dea..883892b 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,10 @@
2016-05-19 Martin Liska <mliska@suse.cz>
+ * tree-vect-stmts.c (vectorizable_simd_clone_call): Utilize
+ auto_vec instead of vec.
+
+2016-05-19 Martin Liska <mliska@suse.cz>
+
* tree-parloops.c (oacc_entry_exit_ok): Release a vector.
2016-05-19 Martin Liska <mliska@suse.cz>
diff --git a/gcc/tree-vect-stmts.c b/gcc/tree-vect-stmts.c
index 9ab4af4..3bcd0ce 100644
--- a/gcc/tree-vect-stmts.c
+++ b/gcc/tree-vect-stmts.c
@@ -2755,7 +2755,7 @@ vectorizable_simd_clone_call (gimple *stmt, gimple_stmt_iterator *gsi,
gimple *def_stmt;
gimple *new_stmt = NULL;
int ncopies, j;
- vec<simd_call_arg_info> arginfo = vNULL;
+ auto_vec<simd_call_arg_info> arginfo;
vec<tree> vargs = vNULL;
size_t i, nargs;
tree lhs, rtype, ratype;
@@ -2802,7 +2802,7 @@ vectorizable_simd_clone_call (gimple *stmt, gimple_stmt_iterator *gsi,
if (nargs == 0)
return false;
- arginfo.create (nargs);
+ arginfo.reserve (nargs, true);
for (i = 0; i < nargs; i++)
{
@@ -2822,7 +2822,6 @@ vectorizable_simd_clone_call (gimple *stmt, gimple_stmt_iterator *gsi,
if (dump_enabled_p ())
dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
"use not simple.\n");
- arginfo.release ();
return false;
}
@@ -2978,10 +2977,7 @@ vectorizable_simd_clone_call (gimple *stmt, gimple_stmt_iterator *gsi,
}
if (bestn == NULL)
- {
- arginfo.release ();
- return false;
- }
+ return false;
for (i = 0; i < nargs; i++)
if ((arginfo[i].dt == vect_constant_def
@@ -2994,10 +2990,7 @@ vectorizable_simd_clone_call (gimple *stmt, gimple_stmt_iterator *gsi,
if (arginfo[i].vectype == NULL
|| (TYPE_VECTOR_SUBPARTS (arginfo[i].vectype)
> bestn->simdclone->simdlen))
- {
- arginfo.release ();
- return false;
- }
+ return false;
}
fndecl = bestn->decl;
@@ -3009,10 +3002,7 @@ vectorizable_simd_clone_call (gimple *stmt, gimple_stmt_iterator *gsi,
performed using SIMD instructions. */
if ((loop == NULL || (unsigned) loop->safelen < nunits)
&& gimple_vuse (stmt))
- {
- arginfo.release ();
- return false;
- }
+ return false;
/* Sanity check: make sure that at least one copy of the vectorized stmt
needs to be generated. */
@@ -3041,7 +3031,6 @@ vectorizable_simd_clone_call (gimple *stmt, gimple_stmt_iterator *gsi,
dump_printf_loc (MSG_NOTE, vect_location,
"=== vectorizable_simd_clone_call ===\n");
/* vect_model_simple_cost (stmt_info, ncopies, dt, NULL, NULL); */
- arginfo.release ();
return true;
}