From 79cc8302f73a56dd1e84e87a26d35ed7e5bfea53 Mon Sep 17 00:00:00 2001 From: Richard Sandiford Date: Tue, 31 Jul 2018 14:21:32 +0000 Subject: [PATCH] [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 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 --- gcc/ChangeLog | 6 ++++++ gcc/tree-vect-loop.c | 5 +++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 122d99f6e4a..9a1956af744 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2018-07-31 Richard Sandiford + + * 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 * tree-vect-loop.c (vect_valid_reduction_input_p): New function, diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c index dbb14ee805a..bb89bf02c91 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); -- 2.30.2