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;
              }
        }

Reply via email to