[Bug target/83712] [6/7/8 Regression] "Unable to find a register to spill" when compiling for thumb1
vmakarov at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Fri Mar 9 16:01:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83712
--- Comment #7 from Vladimir Makarov <vmakarov at gcc dot gnu.org> ---
Author: vmakarov
Date: Fri Mar 9 16:00:36 2018
New Revision: 258390
URL: https://gcc.gnu.org/viewcvs?rev=258390&root=gcc&view=rev
Log:
2018-03-09 Vladimir Makarov <vmakarov@redhat.com>
PR target/83712
* lra-assigns.c (assign_by_spills): Return a flag of reload
assignment failure. Do not process the reload assignment
failures. Do not spill other reload pseudos if they has the same
reg class.
(lra_assign): Add a return arg. Set up from the result of
assign_by_spills call.
(find_reload_regno_insns, lra_split_hard_reg_for): New functions.
* lra-constraints.c (split_reg): Add a new arg. Use it instead of
usage_insns if it is not NULL.
(spill_hard_reg_in_range): New function.
(split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
* lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
function prototypes.
(lra_assign): Change prototype.
* lra.c (lra): Add code to deal with fails by splitting hard reg
live ranges.
2018-03-09 Vladimir Makarov <vmakarov@redhat.com>
PR target/83712
* gcc.target/arm/pr83712.c: New.
Added:
trunk/gcc/testsuite/gcc.target/arm/pr83712.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/lra-assigns.c
trunk/gcc/lra-constraints.c
trunk/gcc/lra-int.h
trunk/gcc/lra.c
trunk/gcc/testsuite/ChangeLog
More information about the Gcc-bugs
mailing list