From 20377b474e11ac86b9217ea54bdcbe15200da0c4 Mon Sep 17 00:00:00 2001 From: Jan Hubicka Date: Thu, 18 Dec 2008 14:49:47 +0100 Subject: [PATCH] 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 From-SVN: r142811 --- gcc/ChangeLog | 5 +++++ gcc/ira-costs.c | 15 +++++++++++---- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a798d85..8c10d1a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,6 +1,11 @@ 2008-12-18 Jan Hubicka Kai Tietz + * ira-cost.c (copy_cost): Lazilly initialize move_cost if needed. + +2008-12-18 Jan Hubicka + Kai Tietz + * i386.h (CONDITIONAL_REGISTER_USAGE): Initialize for current function ABI. * i386.c (ix86_call_abi_override): Do not trigger target re-init and diff --git a/gcc/ira-costs.c b/gcc/ira-costs.c index a2df9bd..397affd 100644 --- a/gcc/ira-costs.c +++ b/gcc/ira-costs.c @@ -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. */ -- 2.7.4