https://gcc.gnu.org/g:c7cb0dd94589ab501bca27f93641b4074e5a2e99
commit r15-1670-gc7cb0dd94589ab501bca27f93641b4074e5a2e99 Author: Richard Biener <rguent...@suse.de> Date: Wed Jun 26 19:23:26 2024 +0200 tree-optimization/115652 - amend last fix The previous fix breaks in the degenerate case when the discovered last_stmt is equal to the first stmt in the block since then we undo a required stmt advancement. PR tree-optimization/115652 * tree-vect-slp.cc (vect_schedule_slp_node): Only insert at the start of the block if that strictly dominates the discovered dependent stmt. Diff: --- gcc/tree-vect-slp.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gcc/tree-vect-slp.cc b/gcc/tree-vect-slp.cc index 1f5b3fccf41..1252b613125 100644 --- a/gcc/tree-vect-slp.cc +++ b/gcc/tree-vect-slp.cc @@ -9747,7 +9747,8 @@ vect_schedule_slp_node (vec_info *vinfo, { gimple_stmt_iterator si2 = gsi_after_labels (LOOP_VINFO_LOOP (loop_vinfo)->header); - if (vect_stmt_dominates_stmt_p (last_stmt, *si2)) + if (last_stmt != *si2 + && vect_stmt_dominates_stmt_p (last_stmt, *si2)) si = si2; } }