diff options
author | Richard Sandiford <richard.sandiford@arm.com> | 2021-11-30 09:52:28 +0000 |
---|---|---|
committer | Richard Sandiford <richard.sandiford@arm.com> | 2021-11-30 09:52:28 +0000 |
commit | 8bb81b3c4945dbae8d490e7a4054ddeb5a3b506c (patch) | |
tree | ddce352a9a236aa554657cb5f1c6a412ddb6a7c0 /gcc/tree-if-conv.c | |
parent | 9b577047eec65936a5299cac13dd7b73cdfc4ae4 (diff) | |
download | gcc-8bb81b3c4945dbae8d490e7a4054ddeb5a3b506c.zip gcc-8bb81b3c4945dbae8d490e7a4054ddeb5a3b506c.tar.gz gcc-8bb81b3c4945dbae8d490e7a4054ddeb5a3b506c.tar.bz2 |
vect: Fix SVE mask_gather_load/store_store tests
If-conversion now applies rewrite_to_defined_overflow to the
address calculation in an IFN_MASK_LOAD. This means that we
end up with:
cast_base = (uintptr_t) base;
uncast_sum = cast_base + offset;
sum = (orig_type *) uncast_sum;
If the target supports IFN_MASK_GATHER_LOAD with pointer-sized
offsets for the given vectype, we wouldn't look through the sum
cast and so would needlessly vectorise the uncast_sum addition.
This showed up as several failures in gcc.target/aarch64/sve.
gcc/
* tree-vect-data-refs.c (vect_check_gather_scatter): Continue
processing conversions if the current offset is a pointer.
Diffstat (limited to 'gcc/tree-if-conv.c')
0 files changed, 0 insertions, 0 deletions