aboutsummaryrefslogtreecommitdiff
path: root/gcc/cppbuiltin.c
diff options
context:
space:
mode:
authorRichard Sandiford <richard.sandiford@arm.com>2019-11-21 17:45:36 +0000
committerRichard Sandiford <rsandifo@gcc.gnu.org>2019-11-21 17:45:36 +0000
commit557532d1728af193d47867dabbe26bd556fb8586 (patch)
tree61e5d148c084e4903914eb83f17fc6d938f64b2d /gcc/cppbuiltin.c
parent91f161b03b649984991573c2f2605555da4a678c (diff)
downloadgcc-557532d1728af193d47867dabbe26bd556fb8586.zip
gcc-557532d1728af193d47867dabbe26bd556fb8586.tar.gz
gcc-557532d1728af193d47867dabbe26bd556fb8586.tar.bz2
Reject versioning for alignment with different masks (PR 92526)
Allowing mixed vector sizes broke the assumption in the following assert, since it's now possible for different accesses to require different levels of alignment: /* FORNOW: use the same mask to test all potentially unaligned references in the loop. The vectorizer currently supports a single vector size, see the reference to GET_MODE_NUNITS (TYPE_MODE (vectype)) where the vectorization factor is computed. */ gcc_assert (!LOOP_VINFO_PTR_MASK (loop_vinfo) || LOOP_VINFO_PTR_MASK (loop_vinfo) == mask); I guess we could try to over-align smaller accesses so that all of them are consistent, or try to support multiple alignment masks, but for now the easiest fix seems to be to turn the assert into a bail-out check. 2019-11-21 Richard Sandiford <richard.sandiford@arm.com> gcc/ PR tree-optimization/92526 * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Reject versioning for alignment if the accesses do not have a consistent mask, rather than asserting that the masks are consistent. gcc/testsuite/ PR tree-optimization/92526 * gcc.target/aarch64/pr92526.c: New test. From-SVN: r278592
Diffstat (limited to 'gcc/cppbuiltin.c')
0 files changed, 0 insertions, 0 deletions