diff options
author | Richard Sandiford <richard.sandiford@arm.com> | 2018-07-31 14:21:32 +0000 |
---|---|---|
committer | Richard Sandiford <rsandifo@gcc.gnu.org> | 2018-07-31 14:21:32 +0000 |
commit | 79cc8302f73a56dd1e84e87a26d35ed7e5bfea53 (patch) | |
tree | ffc5cfc6e866b380448c60cfcef1d1439dd8a726 | |
parent | 83a400d0a57c998508c31389286d6fb427985139 (diff) | |
download | gcc-79cc8302f73a56dd1e84e87a26d35ed7e5bfea53.zip gcc-79cc8302f73a56dd1e84e87a26d35ed7e5bfea53.tar.gz gcc-79cc8302f73a56dd1e84e87a26d35ed7e5bfea53.tar.bz2 |
[05/46] Fix make_ssa_name call in vectorizable_reduction
The usual vectoriser dance to create new assignments is:
new_stmt = gimple_build_assign (vec_dest, ...);
new_temp = make_ssa_name (vec_dest, new_stmt);
gimple_assign_set_lhs (new_stmt, new_temp);
but one site in vectorizable_reduction used:
new_temp = make_ssa_name (vec_dest, new_stmt);
before creating new_stmt.
This method of creating statements probably needs cleaning up, but
that's for another day...
2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
gcc/
* tree-vect-loop.c (vectorizable_reduction): Fix an instance in
which make_ssa_name was called with new_stmt before new_stmt
had been created.
From-SVN: r263120
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/tree-vect-loop.c | 5 |
2 files changed, 9 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 122d99f..9a1956a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,11 @@ 2018-07-31 Richard Sandiford <richard.sandiford@arm.com> + * tree-vect-loop.c (vectorizable_reduction): Fix an instance in + which make_ssa_name was called with new_stmt before new_stmt + had been created. + +2018-07-31 Richard Sandiford <richard.sandiford@arm.com> + * tree-vect-loop.c (vect_valid_reduction_input_p): New function, split out from... (vect_is_slp_reduction): ...here... diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c index dbb14ee..bb89bf0 100644 --- a/gcc/tree-vect-loop.c +++ b/gcc/tree-vect-loop.c @@ -7210,9 +7210,10 @@ vectorizable_reduction (gimple *stmt, gimple_stmt_iterator *gsi, if (op_type == ternary_op) vop[2] = vec_oprnds2[i]; - new_temp = make_ssa_name (vec_dest, new_stmt); - new_stmt = gimple_build_assign (new_temp, code, + new_stmt = gimple_build_assign (vec_dest, code, vop[0], vop[1], vop[2]); + new_temp = make_ssa_name (vec_dest, new_stmt); + gimple_assign_set_lhs (new_stmt, new_temp); } vect_finish_stmt_generation (stmt, new_stmt, gsi); |