]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
rs6000.c (rs6000_stack_info): For ABI_V4/ABI_SOLARIS -fpic...
authorGeoff Keating <geoffk@cygnus.com>
Thu, 5 Aug 1999 07:00:52 +0000 (01:00 -0600)
committerJeff Law <law@gcc.gnu.org>
Thu, 5 Aug 1999 07:00:52 +0000 (01:00 -0600)
        * rs6000.c (rs6000_stack_info): For ABI_V4/ABI_SOLARIS -fpic, always
        allocate space in the stack frame for the PIC register.

From-SVN: r28526

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

index d801d4156568613fd5f49ce1148d105faf3c7bfb..434222056cd43fe40e5725384a5069b5facbdf9f 100644 (file)
@@ -1,3 +1,8 @@
+Thu Aug  5 00:56:30 1999  Geoffrey Keating   <geoffk@cygnus.com>
+
+       * rs6000.c (rs6000_stack_info): For ABI_V4/ABI_SOLARIS -fpic, always
+       allocate space in the stack frame for the PIC register.
+
 Thu Aug  5 00:20:47 1999  Jeffrey A Law  (law@cygnus.com)
 
        * m68k.md (xordi3, anddi3): These patterns are not available on
index 2af2bf0c655ff621c3e8b1cd1edc7021f6d4e442..5ec6fa44ffe5178b0e1f4b29976feaf94d853bb2 100644 (file)
@@ -3395,7 +3395,14 @@ rs6000_stack_info ()
 
   /* Calculate which registers need to be saved & save area size */
   info_ptr->first_gp_reg_save = first_reg_to_save ();
-  info_ptr->gp_size = reg_size * (32 - info_ptr->first_gp_reg_save);
+  /* Assume that we will have to save PIC_OFFSET_TABLE_REGNUM, 
+     even if it currently looks like we won't.  */
+  if (flag_pic == 1 
+      && (abi == ABI_V4 || abi == ABI_SOLARIS)
+      && info_ptr->first_gp_reg_save > PIC_OFFSET_TABLE_REGNUM)
+    info_ptr->gp_size = reg_size * (32 - PIC_OFFSET_TABLE_REGNUM);
+  else
+    info_ptr->gp_size = reg_size * (32 - info_ptr->first_gp_reg_save);
 
   info_ptr->first_fp_reg_save = first_fp_reg_to_save ();
   info_ptr->fp_size = 8 * (64 - info_ptr->first_fp_reg_save);