diff options
author | Richard Biener <rguenther@suse.de> | 2024-10-10 14:00:11 +0200 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2024-10-11 07:59:27 +0200 |
commit | 36b9c5e6f3301d3d0165f578d020dcd350cd516d (patch) | |
tree | c4993f6c7fb3af02a9d1640c6e048c05eebb78f2 /gcc/fortran/error.cc | |
parent | 9f2f108a8a68c7b7b2de5350439a8ab8e17a54da (diff) | |
download | gcc-36b9c5e6f3301d3d0165f578d020dcd350cd516d.zip gcc-36b9c5e6f3301d3d0165f578d020dcd350cd516d.tar.gz gcc-36b9c5e6f3301d3d0165f578d020dcd350cd516d.tar.bz2 |
Fix possible wrong-code with masked store-lanes
When we're doing masked store-lanes one mask element applies to all
loads of one struct element. This requires uniform masks for all
of the SLP lanes, something we already compute into STMT_VINFO_SLP_VECT_ONLY
but fail to check when doing SLP store-lanes. The following corrects
this. The following also adjusts the store-lane heuristic to properly
check for masked or non-masked optab support.
* tree-vect-slp.cc (vect_slp_prefer_store_lanes_p): Allow
passing in of vectype, pass in whether the stores are masked
and query the correct optab.
(vect_build_slp_instance): Guard store-lanes query with
! STMT_VINFO_SLP_VECT_ONLY, guaranteeing an uniform mask.
Diffstat (limited to 'gcc/fortran/error.cc')
0 files changed, 0 insertions, 0 deletions