aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Sandiford <richard.sandiford@arm.com>2018-07-31 14:21:32 +0000
committerRichard Sandiford <rsandifo@gcc.gnu.org>2018-07-31 14:21:32 +0000
commit79cc8302f73a56dd1e84e87a26d35ed7e5bfea53 (patch)
treeffc5cfc6e866b380448c60cfcef1d1439dd8a726
parent83a400d0a57c998508c31389286d6fb427985139 (diff)
downloadgcc-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/ChangeLog6
-rw-r--r--gcc/tree-vect-loop.c5
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);