Fix reload after function-abi patches (PR91948)
The code was passing a pseudo rather than its allocated hard reg to ira_need_caller_save_p. Running under valgrind to reproduce the failure also showed that ALLOCNO_CROSSED_CALLS_ABIS wasn't being explicitly initialised. 2019-10-01 Richard Sandiford <richard.sandiford@arm.com> gcc/ PR rtl-optimization/91948 * ira-build.c (ira_create_allocno): Initialize ALLOCNO_CROSSED_CALLS_ABIS. * ira-color.c (allocno_reload_assign): Pass hard_regno rather than regno to ira_need_caller_save_p. From-SVN: r276407
This commit is contained in:
parent
6bc89193bc
commit
3366b37850
|
@ -1,3 +1,11 @@
|
|||
2019-10-01 Richard Sandiford <richard.sandiford@arm.com>
|
||||
|
||||
PR rtl-optimization/91948
|
||||
* ira-build.c (ira_create_allocno): Initialize
|
||||
ALLOCNO_CROSSED_CALLS_ABIS.
|
||||
* ira-color.c (allocno_reload_assign): Pass hard_regno rather
|
||||
than regno to ira_need_caller_save_p.
|
||||
|
||||
2019-10-01 Alexandre Oliva <oliva@adacore.com>
|
||||
|
||||
* config/i386/i386-options.c
|
||||
|
|
|
@ -504,6 +504,7 @@ ira_create_allocno (int regno, bool cap_p,
|
|||
ALLOCNO_CALL_FREQ (a) = 0;
|
||||
ALLOCNO_CALLS_CROSSED_NUM (a) = 0;
|
||||
ALLOCNO_CHEAP_CALLS_CROSSED_NUM (a) = 0;
|
||||
ALLOCNO_CROSSED_CALLS_ABIS (a) = 0;
|
||||
CLEAR_HARD_REG_SET (ALLOCNO_CROSSED_CALLS_CLOBBERED_REGS (a));
|
||||
#ifdef STACK_REGS
|
||||
ALLOCNO_NO_STACK_REG_P (a) = false;
|
||||
|
|
|
@ -4398,7 +4398,7 @@ allocno_reload_assign (ira_allocno_t a, HARD_REG_SET forbidden_regs)
|
|||
? ALLOCNO_CLASS_COST (a)
|
||||
: ALLOCNO_HARD_REG_COSTS (a)[ira_class_hard_reg_index
|
||||
[aclass][hard_regno]]));
|
||||
if (ira_need_caller_save_p (a, regno))
|
||||
if (ira_need_caller_save_p (a, hard_regno))
|
||||
{
|
||||
ira_assert (flag_caller_saves);
|
||||
caller_save_needed = 1;
|
||||
|
|
Loading…
Reference in New Issue