https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91033
--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> --- What happens is that because of -march=knl we first try to vectorize with vectorization factor 16 and that is ok, as scatter stores are supported, but with simdlen we prefer vectorization with factor 4, so try next with vectorization factor 8. As AVX512VL is not enabled, there is no scatter store support and vect_analyze_data_refs fails, but as it is still in the section where fatal = true, we decide to abort the vectorization altogether. Shall we treat all vect_analyze_data_refs failures as non-fatal (and perhaps anything after that), as it clearly is dependent on the vf? Or at least some of them (pass fatal to that function too)? The disadvantage is that more work will be done during vectorization. Advantage is that we'll be able to vectorize even if say we start with vectorization factor of 32, say with -mavx512f without -mprefer-vector-width=512 and e.g. using simd and not having simdlen. Another thing is, we should probably not try to parallelize loops that have loop->force_vectorize or similar, if the user asked for vectorization, parallelization of the loop might just make things worse.