On 5/12/2026 5:40 AM, Richard Sandiford wrote:
Yoshinori Sato <[email protected]> writes:
The LRA was confused and looping due to the definition of the register class.
The LRA yielded incorrect results because the manipulation of stack frames
and the movement of double words relied heavily on existing reloads.
These changes ensure that the correct code is generated even when the "-mlra"
option is specified.

v5 changes.
- Moved the XEXP extractions inside the PLUS check in rx_legitimize_address.
- Replaced the magic number 8 with UNITS_PER_WORD * 2.
- Fixed the C comment style.
- Reverted the redundant changes in rx_modes_tieable_p.
- Added the missing function comments for rx_get_subword, rx_split_double_move,
   and rx_relax_double_operands.
- Removed the redundant checks in rx_relax_double_operands and fixed the
   indentation.
- Removed the redundant emit_insn and DONE in the movdi and movdf expanders.
- Replaced the output template of *ashlsi3_lra with "#" since it is
   always split.
Thanks, LGTM.  Pushed to trunk as r17-468-g7ec6968058b393
(with a slightly tweaked changelog).
THanks.  There's still work to do.  I spun my tester after this change on the rx port:

Tests that now fail, but worked before (431 tests):

I won't list them all.  Given how many are execution failures, there's likely a code generation failure in there somewhere.

A few of them:

rx-sim: gcc: gcc.c-torture/execute/20001009-2.c   -O0  execution test
rx-sim: gcc: gcc.c-torture/execute/20020614-1.c   -O0  execution test
rx-sim: gcc: gcc.c-torture/execute/20050410-1.c   -O1  execution test
rx-sim: gcc: gcc.c-torture/execute/20050410-1.c   -O2  execution test
rx-sim: gcc: gcc.c-torture/execute/20050410-1.c   -O2 -flto -fno-use-linker-plugin -flto-partition=none  execution test
rx-sim: gcc: gcc.c-torture/execute/20050410-1.c   -O3 -g  execution test
rx-sim: gcc: gcc.c-torture/execute/20050410-1.c   -Os  execution test
rx-sim: gcc: gcc.c-torture/execute/921016-1.c   -O0  execution test
rx-sim: gcc: gcc.c-torture/execute/960311-1.c   -O1  execution test
rx-sim: gcc: gcc.c-torture/execute/960311-2.c   -O1  execution test
rx-sim: gcc: gcc.c-torture/execute/980617-1.c   -O0  execution test
rx-sim: gcc: gcc.c-torture/execute/990324-1.c   -O0  execution test
rx-sim: gcc: gcc.c-torture/execute/990326-1.c   -O0  execution test

Anyway, seems like something for Yoshinori to look into.

Jeff

Reply via email to