[PATCH][GCC][AArch64] Allow any offset for SVE addressing modes before reload

Tamar Christina Tamar.Christina@arm.com
Mon Feb 11 15:17:00 GMT 2019


Hi All,

On AArch64 aarch64_classify_address has a case for when it's non-strict
that will allow it to accept any byte offset from a reg when validating
an address in a given addressing mode.

This because reload would later make the address valid. SVE however requires
the address always be valid, but currently allows any address when a MEM +
offset is used.  This causes an ICE as nothing later forces the address to be
legitimate.

The patch forces aarch64_emit_sve_pred_move to ensure that the addressing mode
is valid for any loads/stores it creates, which follows the SVE way of handling
address classifications.

Bootstrapped on aarch64-none-linux-gnu and no issues.
Regtested on aarch64-none-elf with SVE on and no issues.

Ok for trunk?

Thanks,
Tamar

gcc/ChangeLog:

2019-02-11  Tamar Christina  <tamar.christina@arm.com>

	PR target/88847
	* config/aarch64/aarch64.c (aarch64_classify_address):
	For SVE enforce that the address is always valid when doing a MEM +
	offset.

gcc/testsuite/ChangeLog:

2019-02-11  Tamar Christina  <tamar.christina@arm.com>

	PR target/88847
	* gcc.target/aarch64/sve/pr88847.c: New test.

-- 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: rb10622.patch
Type: text/x-diff
Size: 1769 bytes
Desc: rb10622.patch
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20190211/85c1bde1/attachment.bin>


More information about the Gcc-patches mailing list