ira-cost.c (copy_cost): Lazilly initialize move_cost if needed.
* ira-cost.c (copy_cost): Lazilly initialize move_cost if needed. Co-Authored-By: Kai Tietz <kai.tietz@onevision.com> From-SVN: r142811
This commit is contained in:
parent
877a0b76e1
commit
20377b474e
2 changed files with 16 additions and 4 deletions
|
@ -1,3 +1,8 @@
|
|||
2008-12-18 Jan Hubicka <jh@suse.cz>
|
||||
Kai Tietz <kai.tietz@onevision.com>
|
||||
|
||||
* ira-cost.c (copy_cost): Lazilly initialize move_cost if needed.
|
||||
|
||||
2008-12-18 Jan Hubicka <jh@suse.cz>
|
||||
Kai Tietz <kai.tietz@onevision.com>
|
||||
|
||||
|
|
|
@ -142,8 +142,12 @@ copy_cost (rtx x, enum machine_mode mode, enum reg_class rclass, bool to_p,
|
|||
ira_init_register_move_cost (mode);
|
||||
|
||||
if (secondary_class != NO_REGS)
|
||||
return (move_cost[mode][secondary_class][rclass] + sri.extra_cost
|
||||
+ copy_cost (x, mode, secondary_class, to_p, &sri));
|
||||
{
|
||||
if (!move_cost[mode])
|
||||
init_move_cost (mode);
|
||||
return (move_cost[mode][secondary_class][rclass] + sri.extra_cost
|
||||
+ copy_cost (x, mode, secondary_class, to_p, &sri));
|
||||
}
|
||||
|
||||
/* For memory, use the memory move cost, for (hard) registers, use
|
||||
the cost to move between the register classes, and use 2 for
|
||||
|
@ -151,8 +155,11 @@ copy_cost (rtx x, enum machine_mode mode, enum reg_class rclass, bool to_p,
|
|||
if (MEM_P (x) || rclass == NO_REGS)
|
||||
return sri.extra_cost + ira_memory_move_cost[mode][rclass][to_p != 0];
|
||||
else if (REG_P (x))
|
||||
return
|
||||
(sri.extra_cost + move_cost[mode][REGNO_REG_CLASS (REGNO (x))][rclass]);
|
||||
{
|
||||
if (!move_cost[mode])
|
||||
init_move_cost (mode);
|
||||
return (sri.extra_cost + move_cost[mode][REGNO_REG_CLASS (REGNO (x))][rclass]);
|
||||
}
|
||||
else
|
||||
/* If this is a constant, we may eventually want to call rtx_cost
|
||||
here. */
|
||||
|
|
Loading…
Add table
Reference in a new issue