This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH AArch64]Fix test failure for pr84682-2.c
- From: Richard Sandiford <richard dot sandiford at linaro dot org>
- To: Kyrill Tkachov <kyrylo dot tkachov at foss dot arm dot com>
- Cc: Bin Cheng <Bin dot Cheng at arm dot com>, "gcc-patches\@gcc.gnu.org" <gcc-patches at gcc dot gnu dot org>, James Greenhalgh <james dot greenhalgh at arm dot com>, "Richard Earnshaw \(lists\)" <richard dot earnshaw at arm dot com>
- Date: Sat, 17 Mar 2018 08:54:39 +0000
- Subject: Re: [PATCH AArch64]Fix test failure for pr84682-2.c
- References: <DB6PR0802MB2504BCFAD63BCAA484B5EE8FE7D70@DB6PR0802MB2504.eurprd08.prod.outlook.com> <5AABAF14.6090003@foss.arm.com>
Kyrill Tkachov <kyrylo.tkachov@foss.arm.com> writes:
> Hi Bin,
>
> On 16/03/18 11:42, Bin Cheng wrote:
>> Hi,
>> This simple patch fixes test case failure for pr84682-2.c by returning
>> false on wrong mode rtx in aarch64_classify_address, rather than assert.
>>
>> Bootstrap and test on aarch64. Is it OK?
>>
>> Thanks,
>> bin
>>
>> 2018-03-16 Bin Cheng <bin.cheng@arm.com>
>>
>> * config/aarch64/aarch64.c (aarch64_classify_address): Return false
>> on wrong mode rtx, rather than assert.
>
> This looks ok to me in light of
> https://gcc.gnu.org/ml/gcc-patches/2018-03/msg00633.html
> This function is used to validate inline asm operands too, not just
> internally-generated addresses.
> Therefore all kinds of garbage must be rejected gracefully rather than ICEing.
>
> You'll need an approval from an AArch64 maintainer though.
IMO we should make address_operand itself check something like:
(GET_MODE (x) == VOIDmode || SCALAR_INT_MODE_P (GET_MODE (x)))
Target-independent code fundamentally assumes that an address will not
be a float, so I think the check should be in target-independent code
rather than copied to each individual backend.
This was only caught on aarch64 because we added the assert, but I think
some backends ignore the mode of the address and so would actually accept
simple float rtxes.
Thanks,
Richard