diff options
author | Tom de Vries <tom@codesourcery.com> | 2015-03-12 06:59:34 +0000 |
---|---|---|
committer | Tom de Vries <vries@gcc.gnu.org> | 2015-03-12 06:59:34 +0000 |
commit | 13d29cb0105e563a75da2aa7ef7943421bce04a5 (patch) | |
tree | 0f7dfd047c36a8ea93774e4f301f8fc0b40aa936 /gcc/lra-lives.c | |
parent | 2e5554fde31cf4f018733cf58a6e6bb2ffad2271 (diff) | |
download | gcc-13d29cb0105e563a75da2aa7ef7943421bce04a5.zip gcc-13d29cb0105e563a75da2aa7ef7943421bce04a5.tar.gz gcc-13d29cb0105e563a75da2aa7ef7943421bce04a5.tar.bz2 |
Use actual_call_used_reg_set to find conflicting regs
2015-03-12 Tom de Vries <tom@codesourcery.com>
* lra-lives.c (check_pseudos_live_through_calls): Use
actual_call_used_reg_set instead of call_used_reg_set, if available.
From-SVN: r221372
Diffstat (limited to 'gcc/lra-lives.c')
-rw-r--r-- | gcc/lra-lives.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/gcc/lra-lives.c b/gcc/lra-lives.c index 9dfffb6..5d759ca 100644 --- a/gcc/lra-lives.c +++ b/gcc/lra-lives.c @@ -636,8 +636,12 @@ check_pseudos_live_through_calls (int regno) if (! sparseset_bit_p (pseudos_live_through_calls, regno)) return; sparseset_clear_bit (pseudos_live_through_calls, regno); + bool actual_call_used_reg_set_available_p + = !hard_reg_set_empty_p (lra_reg_info[regno].actual_call_used_reg_set); IOR_HARD_REG_SET (lra_reg_info[regno].conflict_hard_regs, - call_used_reg_set); + (actual_call_used_reg_set_available_p + ? lra_reg_info[regno].actual_call_used_reg_set + : call_used_reg_set)); for (hr = 0; hr < FIRST_PSEUDO_REGISTER; hr++) if (HARD_REGNO_CALL_PART_CLOBBERED (hr, PSEUDO_REGNO_MODE (regno))) |