vect: Fix SVE mask_gather_load/store_store tests
authorRichard Sandiford <richard.sandiford@arm.com>
Tue, 30 Nov 2021 09:52:28 +0000 (09:52 +0000)
committerRichard Sandiford <richard.sandiford@arm.com>
Tue, 30 Nov 2021 09:52:28 +0000 (09:52 +0000)
commit8bb81b3c4945dbae8d490e7a4054ddeb5a3b506c
treeddce352a9a236aa554657cb5f1c6a412ddb6a7c0
parent9b577047eec65936a5299cac13dd7b73cdfc4ae4
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.
gcc/tree-vect-data-refs.c