[PATCH][ARM] Fix PR 65955: Do not take REGNO on non-REG operand in movcond_addsi

Kyrill Tkachov kyrylo.tkachov@arm.com
Tue May 5 10:50:00 GMT 2015

On 05/05/15 09:22, Kyrill Tkachov wrote:
> Hi all,
> As the PR says, the movcond_addsi pattern takes the REGNO of an operand that may be a CONST_INT.
> The fix for that is rather simple (perhaps even obvious?).
> Unfortunately the testcase is in ada, and I'm not sure how to integrate this into the testsuite.
> Does anyone know how to add an ada testcase?

As Tom has investigated in the bugzilla entry for this, the failure can
be reproduced in the testsuite at gfortran.dg/pr43984.f90 with

So, this patch fixes that ICE, so I think no new testcase should be required for this.
So, is this patch ok for trunk as is then?


> The patch that introduced this faulty check was added for GCC 5 and backported to 4.9, so this patch
> should be backported everywhere as well.
> I'll be testing it on those branches shortly.
> Tested on arm-none-eabi. Bootstrapped on arm-none-linux-gnueabihf with arm and thumb default mode.
> I think this is the right thing to do in any case since the current code is clearly doing the wrong
> thing if operands[2] is a CONST_INT.
> Ok for trunk?
> Thanks,
> Kyrill
> P.S. I'm attaching the patch with a larger than usual context so that the definition of operands[2]
> can be seen more clearly.
> 2015-05-05  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
>       PR target/65955
>       * config/arm/arm.md (movcond_addsi): Check that operands[2] is a
>       REG before taking its REGNO.

More information about the Gcc-patches mailing list