File nvl425806.patch of Package gcc43

2008-04-22  Pat Haugen  <pthaugen@us.ibm.com>

       * config/rs6000/rs6000.c (rs6000_register_move_cost): Increase cost
       of LR/CTR moves for Power6.

Index: gcc/config/rs6000/rs6000.c
===================================================================
--- gcc/config/rs6000/rs6000.c.orig	2009-11-20 13:51:43.000000000 +0100
+++ gcc/config/rs6000/rs6000.c	2009-11-20 13:51:47.000000000 +0100
@@ -21368,6 +21368,12 @@ rs6000_register_move_cost (enum machine_
       else if (from == CR_REGS)
 	return 4;
 
+      /* Power6 has slower LR/CTR moves so make them more expensive than
+	 memory in order to bias spills to memory .*/
+      else if (rs6000_cpu == PROCESSOR_POWER6
+	       && reg_classes_intersect_p (from, LINK_OR_CTR_REGS))
+        return 6 * hard_regno_nregs[0][mode];
+
       else
 	/* A move will cost one instruction per GPR moved.  */
 	return 2 * hard_regno_nregs[0][mode];