[gcc r15-1709] tree-optimization/115652 - more fixing of the fix

Richard Biener rguenth@gcc.gnu.org
Fri Jun 28 12:50:25 GMT 2024


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

commit r15-1709-gff6e8b7f09712bd7ddfcd2830b286421f23abef9
Author: Richard Biener <rguenther@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;
 	      }
 	}


More information about the Gcc-cvs mailing list