[PATCH] aarch64: Fix another bug in aarch64_add_offset_1 [PR94121]
Richard Earnshaw (lists)
Richard.Earnshaw@arm.com
Fri Mar 13 10:06:27 GMT 2020
On 12/03/2020 14:24, Jakub Jelinek via Gcc-patches wrote:
> On Thu, Mar 12, 2020 at 12:27:48PM +0100, Andreas Schwab wrote:
>> I'm getting this ICE with -mabi=ilp32:
>>
>> during RTL pass: fwprop1
>> /opt/gcc/gcc-20200312/gcc/testsuite/gcc.dg/pr94121.c: In function 'bar':
>> /opt/gcc/gcc-20200312/gcc/testsuite/gcc.dg/pr94121.c:16:1: internal compiler error: in decompose, at rtl.h:2279
>
> That is a preexisting issue, caused by another bug in the same function.
> When mode is SImode and moffset is 0x80000000 (or anything else with the
> bit 31 set), we need to sign-extend it.
>
> Fixed thusly, ok for trunk if it passes bootstrap/regtest on aarch64-linux?
>
> 2020-03-12 Jakub Jelinek <jakub@redhat.com>
>
> PR target/94121
> * config/aarch64/aarch64.c (aarch64_add_offset_1): Use gen_int_mode
> instead of GEN_INT.
OK.
R.
>
> --- gcc/config/aarch64/aarch64.c.jj 2020-03-12 15:05:20.610726090 +0100
> +++ gcc/config/aarch64/aarch64.c 2020-03-12 15:18:35.390025244 +0100
> @@ -3757,7 +3757,8 @@ aarch64_add_offset_1 (scalar_int_mode mo
> if (emit_move_imm)
> {
> gcc_assert (temp1 != NULL_RTX || can_create_pseudo_p ());
> - temp1 = aarch64_force_temporary (mode, temp1, GEN_INT (moffset));
> + temp1 = aarch64_force_temporary (mode, temp1,
> + gen_int_mode (moffset, mode));
> }
> insn = emit_insn (offset < 0
> ? gen_sub3_insn (dest, src, temp1)
>
>
> Jakub
>
More information about the Gcc-patches
mailing list