[PATCH, GCC/ARM] Fix ICE when compiling empty FIQ interrupt handler in ARM mode
Kyrill Tkachov
kyrylo.tkachov@foss.arm.com
Wed Nov 16 09:39:00 GMT 2016
On 09/11/16 16:19, Thomas Preudhomme wrote:
> Hi,
>
> This patch fixes the following ICE when building when compiling an empty FIQ interrupt handler in ARM mode:
>
> empty_fiq_handler.c:5:1: error: insn does not satisfy its constraints:
> }
> ^
>
> (insn/f 13 12 14 (set (reg/f:SI 13 sp)
> (plus:SI (reg/f:SI 11 fp)
> (const_int 4 [0x4]))) irq.c:5 4 {*arm_addsi3}
> (expr_list:REG_CFA_ADJUST_CFA (set (reg/f:SI 13 sp)
> (plus:SI (reg/f:SI 11 fp)
> (const_int 4 [0x4])))
> (nil)))
>
> The ICE was provoked by missing an alternative to reflect that ARM mode can do an add of general register into sp which is unpredictable in Thumb mode add immediate.
>
> ChangeLog entries are as follow:
>
> *** gcc/ChangeLog ***
>
> 2016-11-04 Thomas Preud'homme <thomas.preudhomme@arm.com>
>
> * config/arm/arm.md (arm_addsi3): Add alternative for addition of
> general register with general register or ARM constant into SP
> register.
>
>
> *** gcc/testsuite/ChangeLog ***
>
> 2016-11-04 Thomas Preud'homme <thomas.preudhomme@arm.com>
>
> * gcc.target/arm/empty_fiq_handler.c: New test.
>
>
> Testing: bootstrapped on ARMv7-A ARM mode & testsuite shows no regression.
>
> Is this ok for trunk?
>
I see that "r" does not include the stack pointer (STACK_REG is separate from GENERAL_REGs) so we are indeed missing
that constraint.
Ok for trunk.
Thanks,
Kyrill
> Best regards,
>
> Thomas
More information about the Gcc-patches
mailing list