This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[05/46] Fix make_ssa_name call in vectorizable_reduction
- From: Richard Sandiford <richard dot sandiford at arm dot com>
- To: gcc-patches at gcc dot gnu dot org
- Date: Tue, 24 Jul 2018 10:54:33 +0100
- Subject: [05/46] Fix make_ssa_name call in vectorizable_reduction
- References: <87wotlrmen.fsf@arm.com>
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-24 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.
Index: gcc/tree-vect-loop.c
===================================================================
--- gcc/tree-vect-loop.c 2018-07-24 10:22:12.737465897 +0100
+++ gcc/tree-vect-loop.c 2018-07-24 10:22:16.421433184 +0100
@@ -7210,9 +7210,10 @@ vectorizable_reduction (gimple *stmt, gi
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);