diff options
author | Tom de Vries <tom@codesourcery.com> | 2018-03-01 05:51:08 +0000 |
---|---|---|
committer | Tom de Vries <vries@gcc.gnu.org> | 2018-03-01 05:51:08 +0000 |
commit | 54178a01107b911813609693dd8d91968ac06819 (patch) | |
tree | d07c5b1a1c94714f4b24f7a5d327eefc320c6bf7 /gcc/lra-spills.c | |
parent | 7540ea866ad77094e6f77023558378ce9b196fd5 (diff) | |
download | gcc-54178a01107b911813609693dd8d91968ac06819.zip gcc-54178a01107b911813609693dd8d91968ac06819.tar.gz gcc-54178a01107b911813609693dd8d91968ac06819.tar.bz2 |
Fix liveness analysis in lra for spilled-into hard regs
2018-03-01 Tom de Vries <tom@codesourcery.com>
PR rtl-optimization/83327
* lra-int.h (hard_regs_spilled_into): Declare.
* lra.c (hard_regs_spilled_into): Define.
(init_reg_info): Init hard_regs_spilled_into.
* lra-spills.c (assign_spill_hard_regs): Update hard_regs_spilled_into.
* lra-lives.c (make_hard_regno_born, make_hard_regno_dead)
(process_bb_lives): Handle hard_regs_spilled_into.
(lra_create_live_ranges_1): Before doing liveness propagation, clear
regs in all_hard_regs_bitmap if set in hard_regs_spilled_into.
From-SVN: r258093
Diffstat (limited to 'gcc/lra-spills.c')
-rw-r--r-- | gcc/lra-spills.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/gcc/lra-spills.c b/gcc/lra-spills.c index 8f6278a..33caf9f 100644 --- a/gcc/lra-spills.c +++ b/gcc/lra-spills.c @@ -294,6 +294,8 @@ assign_spill_hard_regs (int *pseudo_regnos, int n) } if (lra_dump_file != NULL) fprintf (lra_dump_file, " Spill r%d into hr%d\n", regno, hard_regno); + add_to_hard_reg_set (&hard_regs_spilled_into, + lra_reg_info[regno].biggest_mode, hard_regno); /* Update reserved_hard_regs. */ for (r = lra_reg_info[regno].live_ranges; r != NULL; r = r->next) for (p = r->start; p <= r->finish; p++) |