The assert in SLP discovery when we handle masked operations is confusingly wide - all gather variants should be catched by the earlier STMT_VINFO_GATHER_SCATTER_P.
Bootstrap and regtest running on x86_64-unknown-linux-gnu. * tree-vect-slp.cc (vect_build_slp_tree_2): Only expect IFN_MASK_LOAD for masked loads that are not STMT_VINFO_GATHER_SCATTER_P. --- gcc/tree-vect-slp.cc | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/gcc/tree-vect-slp.cc b/gcc/tree-vect-slp.cc index d030a56045b..037e718ec07 100644 --- a/gcc/tree-vect-slp.cc +++ b/gcc/tree-vect-slp.cc @@ -2020,11 +2020,7 @@ vect_build_slp_tree_2 (vec_info *vinfo, slp_tree node, if (gcall *stmt = dyn_cast <gcall *> (stmt_info->stmt)) { - gcc_assert (gimple_call_internal_p (stmt, IFN_MASK_LOAD) - || gimple_call_internal_p (stmt, IFN_GATHER_LOAD) - || gimple_call_internal_p (stmt, IFN_MASK_GATHER_LOAD) - || gimple_call_internal_p (stmt, - IFN_MASK_LEN_GATHER_LOAD)); + gcc_assert (gimple_call_internal_p (stmt, IFN_MASK_LOAD)); bool has_gaps = false; if (STMT_VINFO_GROUPED_ACCESS (stmt_info)) for (stmt_vec_info si = DR_GROUP_NEXT_ELEMENT (first_stmt_info); -- 2.43.0