Hi James,
On 27/10/15 18:26, James Greenhalgh wrote:
On Tue, Oct 27, 2015 at 06:06:12PM +0000, Kyrill Tkachov wrote:
Hi all,
This is another RTL checking error occuring in the splitting condition of the
mov-immediate patterns. We take a REGNO of operands[0] which is a
nonimmediate_operand. Since the immediate splitting code only makes sense
when the destination is a register, we should be guarding that condition on
REG_P (operands[0]).
The reported error occurs on the *movdi_aarch64 pattern but I see the same
vulnerability in the *movsi_aarch64 pattern, although I wasn't able to get it
to trigger an ICE.
This patch adds a REG_P check on the splitting condition of both. The
testcase (taken from the BZ for PR 68102 and with an #if 1 removed)now
compiles fine on an aarch64 compiler with RTL checking enabled.
Bootstrapped and tested on aarch64-linux with RTL checking enabled.
Ok for trunk?
OK.
Thanks,
Kyrill
The BZ says this occurs on the GCC 5 branch but I don't have a checking
compiler from that branch yet. I'll be investigating whether to backport this
patch there in the meantime.
Sounds good to me.
So I reproduced the checking ICE on the GCC 5 and the patch applies
cleanly there and fixes it.
So ok to commit it there after a bootstrap and test on that branch?
Thanks,
Kyrill
Thanks,
James
2015-10-27 Kyrylo Tkachov <kyrylo.tkac...@arm.com>
PR target/68102
* config/aarch64/aarch64.md (*movsi_aarch64): Check that
operands[0] is a reg before taking its REGNO in split condition.
(*movdi_aarch64): Likewise.
2015-10-27 Kyrylo Tkachov <kyrylo.tkac...@arm.com>
PR target/68102
* gcc.target/aarch64/pr68102_1.c: New test.