https://gcc.gnu.org/g:ff6e8b7f09712bd7ddfcd2830b286421f23abef9

commit r15-1709-gff6e8b7f09712bd7ddfcd2830b286421f23abef9
Author: Richard Biener <rguent...@suse.de>
Date:   Fri Jun 28 13:29:21 2024 +0200

    tree-optimization/115652 - more fixing of the fix
    
    The following addresses the corner case of an outer loop with an empty
    header where we end up asking for the BB of a NULL stmt by
    special-casing this case.
    
            PR tree-optimization/115652
            * tree-vect-slp.cc (vect_schedule_slp_node): Handle the case
            where the outer loop header block is empty.

Diff:
---
 gcc/tree-vect-slp.cc | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/gcc/tree-vect-slp.cc b/gcc/tree-vect-slp.cc
index 174b4800fa9..dd9017e5b3a 100644
--- a/gcc/tree-vect-slp.cc
+++ b/gcc/tree-vect-slp.cc
@@ -9750,8 +9750,15 @@ vect_schedule_slp_node (vec_info *vinfo,
              {
                gimple_stmt_iterator si2
                  = gsi_after_labels (LOOP_VINFO_LOOP (loop_vinfo)->header);
-               if (last_stmt != *si2
-                   && vect_stmt_dominates_stmt_p (last_stmt, *si2))
+               if ((gsi_end_p (si2)
+                    && (LOOP_VINFO_LOOP (loop_vinfo)->header
+                        != gimple_bb (last_stmt))
+                    && dominated_by_p (CDI_DOMINATORS,
+                                       LOOP_VINFO_LOOP (loop_vinfo)->header,
+                                       gimple_bb (last_stmt)))
+                   || (!gsi_end_p (si2)
+                       && last_stmt != *si2
+                       && vect_stmt_dominates_stmt_p (last_stmt, *si2)))
                  si = si2;
              }
        }

Reply via email to