Hi,

The status of LRA support for AArch32 is the sequel :
- there is some regressions in the testsuite (gcc/g++, libstdc++ and
fortran) in ARM mode, all due to the same neon legitimate address
issue (tested in hard and softfp mode).
- the compiler doesn't bootstrap with LRA enable for thumb (during
libgcc build).

As stage 1 will be close soon, my first question is can we add the
code to enable LRA before its ending, and fix the issues during stage
2 (according to Vladimir the legitimate address issue is mainly an LRA
bugfix). The attached patch enables LRA by default but disable it for
Thumb and let the opportunity to force LRA with -mlra, but maybe we
can just turn it off by default.

I need your help for the Thumb issue, as suggested by Vladimir I
disabled secondary reload for thumb (with the attached arm.h.diff
patch) to let LRA deal with it and break a cycle, but I now face an
issue exhibited by the attached testcase (thumb-lra.i) and the command
line:

cc1 -O2 -mthumb -mlra thumb-lra.i

Here LRA as to deal with the thumb1_movhi_insn :

(insn 11 5 14 2 (set (reg:HI 0 r0)
        (const_int -1318 [0xfffffffffffffada])) /work/tmp/t2.i:14 206
{*thumb1_movhi_insn}
     (nil))

and creates new regs to do it :

 11: r0:HI=r114:HI
    Inserting insn reload before:
 18: r115:SI=0xfffffffffffffada
 19: r114:HI=r115:SI#0
      REG_EQUAL 0xfffffffffffffada

 Choosing alt 6 in insn 18:  (0) l  (1) mi {*thumb1_movsi_insn}
 Creating newreg=116 from oldreg=115, assigning class LO_REGS to r116

 18: r116:SI=0xfffffffffffffada
    Inserting insn reload after:
 20: r115:SI=r116:SI

Creating newreg=117, assigning class LO_REGS to scratch r117

and during this mov processing, we call gen_thumb_movhi_clobber which
ICE because the first rtx parameter is not a strict memory address but
a register, and here I'm not sure of what to do between fixing this in
the backend or in LRA, and how to do it.

Thanks,
Yvan

Attachment: arm-lra.diff
Description: Binary data

Attachment: arm.h.diff
Description: Binary data

Attachment: thumb-lra.i
Description: Binary data

Reply via email to