diff options
author | Vladimir N. Makarov <vmakarov@redhat.com> | 2024-01-11 08:46:26 -0500 |
---|---|---|
committer | Vladimir N. Makarov <vmakarov@redhat.com> | 2024-01-11 09:28:37 -0500 |
commit | a729b6e002fe76208f33fdcdee49d6a310a1940e (patch) | |
tree | f2ef1cea364d036809b37cb583b92e11e0e25af7 /gcc/expr.cc | |
parent | ec345df53556ec581590347f71c3d9ff3cdbca76 (diff) | |
download | gcc-a729b6e002fe76208f33fdcdee49d6a310a1940e.zip gcc-a729b6e002fe76208f33fdcdee49d6a310a1940e.tar.gz gcc-a729b6e002fe76208f33fdcdee49d6a310a1940e.tar.bz2 |
[PR112918][LRA]: Fixing IRA ICE on m68k
Some GCC tests on m68K port of LRA is failed on `maximum number of
generated reload insns per insn achieved`. The problem is in that for
subreg reload LRA can not narrow reg class more from ALL_REGS to
GENERAL_REGS and then to data regs or address regs. The patch permits
narrowing reg class from reload insns if this results in successful
matching of reg operand. This is the second version of the patch to
fix the PR. This version adds matching with and without narrowing reg
class and preferring match without narrowing classes.
gcc/ChangeLog:
PR rtl-optimization/112918
* lra-constraints.cc (SMALL_REGISTER_CLASS_P): Move before in_class_p.
(in_class_p): Restrict condition for narrowing class in case of
allow_all_reload_class_changes_p.
(process_alt_operands): Try to match operand without and with
narrowing reg class. Discourage narrowing the class. Finish insn
matching only if there is no class narrowing.
(curr_insn_transform): Pass true to in_class_p for reg operand win.
Diffstat (limited to 'gcc/expr.cc')
0 files changed, 0 insertions, 0 deletions