diff options
author | Richard Sandiford <richard.sandiford@linaro.org> | 2011-04-14 11:54:30 +0000 |
---|---|---|
committer | Richard Sandiford <rsandifo@gcc.gnu.org> | 2011-04-14 11:54:30 +0000 |
commit | 5ce1ee7fdd558b1bb5f02f84cbc435acf8184c9b (patch) | |
tree | b71a2da6bf826c44d0ffe09bd7c48e495a212e53 /gcc | |
parent | 6438fe334cf36158cc9ca407f6cbb102ae5de4fa (diff) | |
download | gcc-5ce1ee7fdd558b1bb5f02f84cbc435acf8184c9b.zip gcc-5ce1ee7fdd558b1bb5f02f84cbc435acf8184c9b.tar.gz gcc-5ce1ee7fdd558b1bb5f02f84cbc435acf8184c9b.tar.bz2 |
tree-vect-stmts.c (vectorizable_load): Allocate and free dr_chain within the per-copy loop.
gcc/
* tree-vect-stmts.c (vectorizable_load): Allocate and free dr_chain
within the per-copy loop.
From-SVN: r172422
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/tree-vect-stmts.c | 12 |
2 files changed, 10 insertions, 7 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f813f74..572b6af 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,10 @@ 2011-04-14 Richard Sandiford <richard.sandiford@linaro.org> + * tree-vect-stmts.c (vectorizable_load): Allocate and free dr_chain + within the per-copy loop. + +2011-04-14 Richard Sandiford <richard.sandiford@linaro.org> + * tree-vect-stmts.c (vectorizable_load): Print the number of copies in the dump file. diff --git a/gcc/tree-vect-stmts.c b/gcc/tree-vect-stmts.c index 9e9a0bb..eeb9223 100644 --- a/gcc/tree-vect-stmts.c +++ b/gcc/tree-vect-stmts.c @@ -3961,8 +3961,6 @@ vectorizable_load (gimple stmt, gimple_stmt_iterator *gsi, gimple *vec_stmt, } else vec_num = group_size; - - dr_chain = VEC_alloc (tree, heap, vec_num); } else { @@ -4116,6 +4114,9 @@ vectorizable_load (gimple stmt, gimple_stmt_iterator *gsi, gimple *vec_stmt, dataref_ptr = bump_vector_ptr (dataref_ptr, ptr_incr, gsi, stmt, NULL_TREE); + if (strided_load || slp_perm) + dr_chain = VEC_alloc (tree, heap, vec_num); + for (i = 0; i < vec_num; i++) { if (i > 0) @@ -4325,8 +4326,6 @@ vectorizable_load (gimple stmt, gimple_stmt_iterator *gsi, gimple *vec_stmt, return false; *vec_stmt = STMT_VINFO_VEC_STMT (stmt_info); - VEC_free (tree, heap, dr_chain); - dr_chain = VEC_alloc (tree, heap, group_size); } else { @@ -4337,11 +4336,10 @@ vectorizable_load (gimple stmt, gimple_stmt_iterator *gsi, gimple *vec_stmt, prev_stmt_info = vinfo_for_stmt (new_stmt); } } + if (dr_chain) + VEC_free (tree, heap, dr_chain); } - if (dr_chain) - VEC_free (tree, heap, dr_chain); - return true; } |