File nvl425798-2.patch of Package gcc43

2008-06-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>

       * config/rs6000/rs6000.c (rs6000_emit_epilogue): Set
       use_backchain_to_restore_sp to true
       if the offset of the link register save area would go over the 32k - 1
       offset limit of the load
       instructions.

Index: gcc/config/rs6000/rs6000.c
===================================================================
--- gcc/config/rs6000/rs6000.c.orig	2009-11-20 13:51:57.000000000 +0100
+++ gcc/config/rs6000/rs6000.c	2009-11-20 13:51:59.000000000 +0100
@@ -16330,6 +16330,9 @@ rs6000_emit_epilogue (int sibcall)
      frame pointer for alloca, but the generic parts of the compiler
      give us one anyway.  */
   use_backchain_to_restore_sp = (info->total_size > 32767
+				 || info->total_size
+				     + (info->lr_save_p ? info->lr_save_offset : 0)
+				       > 32767
 				 || (cfun->calls_alloca
 				     && !frame_pointer_needed));
   using_mtcr_multiple = (rs6000_cpu == PROCESSOR_PPC601
openSUSE Build Service is sponsored by