revert: re PR target/83712 ("Unable to find a register to spill" when compiling for...
commitb3231b65bb70b49ee89460c4a53cadab87116ec8
authorVladimir Makarov <vmakarov@redhat.com>
Sat, 10 Mar 2018 16:32:21 +0000 (10 16:32 +0000)
committerVladimir Makarov <vmakarov@gcc.gnu.org>
Sat, 10 Mar 2018 16:32:21 +0000 (10 16:32 +0000)
tree70b2167603a51c811b8005d719e6ec304b7bbca7
parent90984fe26aeaa473f38aa6d970630ce40dc1b7b0
revert: re PR target/83712 ("Unable to find a register to spill" when compiling for thumb1)

2018-03-10  Vladimir Makarov  <vmakarov@redhat.com>

Reverting patch:
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.

From-SVN: r258415
gcc/ChangeLog
gcc/lra-assigns.c
gcc/lra-constraints.c
gcc/lra-int.h
gcc/lra.c