diff options
author | Martin Liska <mliska@suse.cz> | 2016-05-19 17:08:02 +0200 |
---|---|---|
committer | Martin Liska <marxin@gcc.gnu.org> | 2016-05-19 15:08:02 +0000 |
commit | 00426f9a9e57175d6373359aec3e7956a6d2a1c1 (patch) | |
tree | 323c7e285b171c20a125b50781eb07684d653c34 /gcc | |
parent | 4089c3402ca61f129c426c2a312a1849981dfb46 (diff) | |
download | gcc-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/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/tree-vect-stmts.c | 21 |
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; } |