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