/* IRA hard register and memory cost calculation for allocnos or pseudos.
- Copyright (C) 2006-2019 Free Software Foundation, Inc.
+ Copyright (C) 2006-2020 Free Software Foundation, Inc.
Contributed by Vladimir Makarov <vmakarov@redhat.com>.
This file is part of GCC.
hard_reg_class = REGNO_REG_CLASS (other_regno);
bigger_hard_reg_class = ira_pressure_class_translate[hard_reg_class];
/* Target code may return any cost for mode which does not
- fit the the hard reg class (e.g. DImode for AREG on
+ fit the hard reg class (e.g. DImode for AREG on
i386). Check this and use a bigger class to get the
right cost. */
if (bigger_hard_reg_class != NO_REGS
return insn;
}
- if (pat_code == CLOBBER_HIGH)
- {
- gcc_assert (REG_P (XEXP (PATTERN (insn), 0))
- && HARD_REGISTER_P (XEXP (PATTERN (insn), 0)));
- return insn;
- }
-
counted_mem = false;
set = single_set (insn);
extract_insn (insn);
ira_allocno_object_iterator oi;
ira_object_t obj;
bool skip_p;
- HARD_REG_SET *crossed_calls_clobber_regs;
FOR_EACH_ALLOCNO (a, ai)
{
continue;
rclass = REGNO_REG_CLASS (regno);
cost = 0;
- crossed_calls_clobber_regs
- = &(ALLOCNO_CROSSED_CALLS_CLOBBERED_REGS (a));
- if (ira_hard_reg_set_intersection_p (regno, mode,
- *crossed_calls_clobber_regs)
- && (ira_hard_reg_set_intersection_p (regno, mode,
- call_used_reg_set)
- || targetm.hard_regno_call_part_clobbered (NULL, regno,
- mode)))
+ if (ira_need_caller_save_p (a, regno))
cost += (ALLOCNO_CALL_FREQ (a)
* (ira_memory_move_cost[mode][rclass][0]
+ ira_memory_move_cost[mode][rclass][1]));