From 13d29cb0105e563a75da2aa7ef7943421bce04a5 Mon Sep 17 00:00:00 2001 From: Tom de Vries Date: Thu, 12 Mar 2015 06:59:34 +0000 Subject: [PATCH] Use actual_call_used_reg_set to find conflicting regs 2015-03-12 Tom de Vries * 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 --- gcc/ChangeLog | 5 +++++ gcc/lra-lives.c | 6 +++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 53f582b5e96..5973cbc1a97 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2015-03-12 Tom de Vries + + * lra-lives.c (check_pseudos_live_through_calls): Use + actual_call_used_reg_set instead of call_used_reg_set, if available. + 2015-03-10 Jan Hubicka * cgraph.c (cgraph_node::release_body): Free function_in_decl_state. diff --git a/gcc/lra-lives.c b/gcc/lra-lives.c index 9dfffb6f287..5d759ca73d3 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))) -- 2.30.2