https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111156

--- Comment #13 from Richard Biener <rguenth at gcc dot gnu.org> ---
I didn't add STMT_VINFO_SLP_VECT_ONLY, I'm quite sure we can now do both SLP of
masked loads and stores, so yes, STMT_VINFO_SLP_VECT_ONLY (when we formed
a DR group of stmts we cannot combine without SLP as the masks are not equal)
should be set for both loads and stores.

The can_group_stmts_p checks as present seem correct here (but the dump
should not say "Load" but maybe "Access")

So it looks like the issue is with "late" deciding we can't actually do the
masked SLP store (why?) and the odd "vect_dissolve_slp_only_groups" and
then somehow botching strided store code-gen which likely doesn't expect
masks or should have disabled fully masking?  I'll note that we don't
support single element interleaving for stores, so vect_analyze_group_access_1
would have falled back to STMT_VINFO_STRIDED_P.  But as said, maybe that
somehow misses to disable loop masking then when vect_analyze_loop_operations?

So what's the testcase comment#9 talks about?

Reply via email to