Commit 3366b378 by Richard Sandiford Committed by Richard Sandiford

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
parent 6bc89193
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;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment