Fix glibc dl-sysdeps.c abort from Jes Sorensen.
authorJim Wilson <wilson@redhat.com>
Sat, 17 Mar 2001 02:56:23 +0000 (02:56 +0000)
committerJim Wilson <wilson@gcc.gnu.org>
Sat, 17 Mar 2001 02:56:23 +0000 (18:56 -0800)
* config/ia64/ia64.c (ia64_compute_frame_size): If reg_fp is zero,
then set it to LOC_REG (79) instead of aborting.

From-SVN: r40569

gcc/ChangeLog
gcc/config/ia64/ia64.c

index 87e40c117a373233301a82c6bcad3d6d8d3c5851..6a81bc113c841b0dcbfc95e80f493fdd311f321d 100644 (file)
@@ -1,3 +1,8 @@
+2001-03-16  Jim Wilson  <wilson@redhat.com>
+
+       * config/ia64/ia64.c (ia64_compute_frame_size): If reg_fp is zero,
+       then set it to LOC_REG (79) instead of aborting.
+
 2001-03-16  Phil Edwards  <pme@sources.redhat.com>
 
        * gccbug.in:  Remove high priority.
index 1a5d55119e9565d1f8c3eb375919916c19b6b3a8..8f74bdc95c39959d34e63bef9122627279966dfc 100644 (file)
@@ -1390,10 +1390,15 @@ ia64_compute_frame_size (size)
   if (frame_pointer_needed)
     {
       current_frame_info.reg_fp = find_gr_spill (1);
-      /* We should have gotten at least LOC79, since that's what
-        HARD_FRAME_POINTER_REGNUM is.  */
+      /* If we did not get a register, then we take LOC79.  This is guaranteed
+        to be free, even if regs_ever_live is already set, because this is
+        HARD_FRAME_POINTER_REGNUM.  This requires incrementing n_local_regs,
+        as we don't count loc79 above.  */
       if (current_frame_info.reg_fp == 0)
-       abort ();
+       {
+         current_frame_info.reg_fp = LOC_REG (79);
+         current_frame_info.n_local_regs++;
+       }
     }
 
   if (! current_function_is_leaf)