https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91033
--- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> --- (In reply to Richard Biener from comment #3) > 08:57 < richi> jakub: can we delay scatter/gather store recog to > vectorizable_store/load, thus always detect the dataref > pattern > but only later decide if we can vectorize it? > 08:58 < richi> jakub: this way we could also decide, based on cost, to do > strided accesses / vector construction instead (might be > profitable for V2DF for example) Had a look at this, and I doubt it is possible, while the gather_scatter_info gs_info; if (!vect_check_gather_scatter (stmt_info, as_a <loop_vec_info> (vinfo), &gs_info) || !get_vectype_for_scalar_type (TREE_TYPE (gs_info.offset))) return opt_result::failure_at (stmt_info->stmt, (gatherscatter == GATHER) ? "not vectorized: not suitable for gather load %G" : "not vectorized: not suitable for scatter store %G", stmt_info->stmt); hunk could be moved from vect_analyze_data_refs slightly later, I'm afraid we need it already in vect_mark_stmts_to_be_vectorized so that we can call process_use there. And that call is still in the fatal = true; area (furthermore, for SLP we don't really call that).