OSDN Git Service

2008-06-24 Andrew Pinski <andrew_pinski@playstation.sony.com>
authorpinskia <pinskia@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 25 Jun 2008 02:24:24 +0000 (02:24 +0000)
committerpinskia <pinskia@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 25 Jun 2008 02:24:24 +0000 (02:24 +0000)
        * 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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@137097 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/rs6000/rs6000.c

index 90b7966..2108a87 100644 (file)
@@ -1,3 +1,11 @@
+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.
+
 2008-06-25  Hans-Peter Nilsson  <hp@axis.com>
 
        * doc/invoke.texi (Optimize Options) <fstrict-aliasing>: Add
index 66e4b51..68280a5 100644 (file)
@@ -16313,6 +16313,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));