Hi Suwa-san, On Fri, Oct 14, 2022 at 4:19 AM Takayuki 'January June' Suwa <jjsuwa_sys3...@yahoo.co.jp> wrote: > This patch provides the first step in the transition from Reload to LRA > in Xtensa. > > gcc/ChangeLog: > > * config/xtensa/xtensa-proto.h (xtensa_split1_is_finished_p): > New prototype. > * config/xtensa/xtensa.cc > (xtensa_split1_is_finished_p, xtensa_lra_p): New functions. > (TARGET_LRA_P): Replace the dummy hook with xtensa_lra_p. > (xt_true_regnum): Rework. > * gcc/config/xtensa/xtensa.h (CALL_REALLY_USED_REGISTERS): > Rename from CALL_USED_REGISTERS, and remove what correspond to > FIXED_REGISTERS. > * gcc/config/xtensa/constraints.md (Y): > Use !xtensa_split1_is_finished_p() instead of can_create_pseudo_p(). > * gcc/config/xtensa/predicates.md (move_operand): Ditto. > * gcc/config/xtensa/xtensa.md: > Add new split pattern that puts out-of-constraint integer constants > into the constant pool. > * gcc/config/xtensa/xtensa.opt (-mlra): New target-specific option > for testing purpose. > --- > gcc/config/xtensa/constraints.md | 2 +- > gcc/config/xtensa/predicates.md | 2 +- > gcc/config/xtensa/xtensa-protos.h | 1 + > gcc/config/xtensa/xtensa.cc | 48 ++++++++++++++++++++++++------- > gcc/config/xtensa/xtensa.h | 6 ++-- > gcc/config/xtensa/xtensa.md | 12 ++++++++ > gcc/config/xtensa/xtensa.opt | 4 +++ > 7 files changed, 60 insertions(+), 15 deletions(-)
Thank you for doing this, I couldn't find time to get back to it since 2020 ): This change results in a few new regressions in the following tests caused by ICE even when running without -mlra option: +FAIL: gcc.c-torture/execute/pr92904.c -O1 (internal compiler error: in extract_insn, at recog.cc:2791) +FAIL: gcc.c-torture/execute/pr92904.c -O2 (internal compiler error: in extract_insn, at recog.cc:2791) +FAIL: gcc.c-torture/execute/pr92904.c -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions (internal compiler error: in extract_insn, at recog.cc:2791) +FAIL: gcc.c-torture/execute/pr92904.c -O3 -g (internal compiler error: in extract_insn, at recog.cc:2791) +FAIL: gcc.c-torture/execute/pr92904.c -Os (internal compiler error: in extract_insn, at recog.cc:2791) +FAIL: gcc.c-torture/execute/pr92904.c -O2 -flto -fno-use-linker-plugin -flto-partition=none (internal compiler error: in extract_insn, at recog.cc:2791) +FAIL: gcc.c-torture/execute/pr92904.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects (internal compiler error: in extract_insn, at recog.cc:2791) +FAIL: g++.dg/torture/vshuf-v2si.C -O3 -g (internal compiler error: in extract_insn, at recog.cc:2791) +FAIL: g++.dg/torture/vshuf-v8qi.C -O3 -g (internal compiler error: in extract_insn, at recog.cc:2791) The backtraces look like this in all of them: gcc/gcc/testsuite/gcc.c-torture/execute/pr92904.c:395:1: error: unrecognizable insn: (insn 10501 7 10502 2 (set (reg:SI 5913) (const_int 1431655765 [0x55555555])) "gcc/gcc/testsuite/gcc.c-torture/execute/pr92904.c":239:9 -1 (nil)) during RTL pass: subreg3 gcc/gcc/testsuite/gcc.c-torture/execute/pr92904.c:395:1: internal compiler error: in extract_insn, at recog.cc:2791 0x6b17f7 _fatal_insn(char const*, rtx_def const*, char const*, int, char const*) gcc/gcc/rtl-error.cc:108 0x6b187a _fatal_insn_not_found(rtx_def const*, char const*, int, char const*) gcc/gcc/rtl-error.cc:116 0x6a2aa4 extract_insn(rtx_insn*) gcc/gcc/recog.cc:2791 0x179e94d decompose_multiword_subregs gcc/gcc/lower-subreg.cc:1678 0x179ebdd execute gcc/gcc/lower-subreg.cc:1820 There's also the following runtime failures, but only on call0 configuration: +FAIL: gcc.c-torture/execute/20010122-1.c -O1 execution test +FAIL: gcc.c-torture/execute/20010122-1.c -O2 execution test +FAIL: gcc.c-torture/execute/20010122-1.c -O3 -g execution test +FAIL: gcc.c-torture/execute/20010122-1.c -Os execution test +FAIL: gcc.c-torture/execute/20010122-1.c -O2 -flto -fno-use-linker-plugin -flto-partition=none execution test -- Thanks. -- Max