]> git.ipfire.org Git - thirdparty/gcc.git/commit - gcc/lra.c
2018-03-13 Vladimir Makarov <vmakarov@redhat.com>
authorvmakarov <vmakarov@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 13 Mar 2018 20:42:49 +0000 (20:42 +0000)
committervmakarov <vmakarov@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 13 Mar 2018 20:42:49 +0000 (20:42 +0000)
commit6a4bc24ef4c4a7ba3987c377dde619aed30afa40
tree238e7d9dada206bba93256cb01455ec15fea1ea6
parenta6eb1b34eb01f6a527e5baa368db156fc1f1ed43
2018-03-13  Vladimir Makarov  <vmakarov@redhat.com>

PR target/83712
* lra-assigns.c (find_all_spills_for): Ignore uninteresting
pseudos.
(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.  Update n if
necessary.
(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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@258504 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ChangeLog
gcc/lra-assigns.c
gcc/lra-constraints.c
gcc/lra-int.h
gcc/lra.c