aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim Wilson <wilson@redhat.com>2001-03-17 02:56:23 +0000
committerJim Wilson <wilson@gcc.gnu.org>2001-03-16 18:56:23 -0800
commit0c35f90252437cc70dcfff7f3b742a59e749451d (patch)
tree488ccc860c58dc52d45aa0da0ff4021a40d60cf0
parentde5e27beba15d7c7e48d22314b2b077bcebc299a (diff)
downloadgcc-0c35f90252437cc70dcfff7f3b742a59e749451d.zip
gcc-0c35f90252437cc70dcfff7f3b742a59e749451d.tar.gz
gcc-0c35f90252437cc70dcfff7f3b742a59e749451d.tar.bz2
Fix glibc dl-sysdeps.c abort from Jes Sorensen.
* 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
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/ia64/ia64.c11
2 files changed, 13 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 87e40c1..6a81bc1 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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.
diff --git a/gcc/config/ia64/ia64.c b/gcc/config/ia64/ia64.c
index 1a5d551..8f74bdc 100644
--- a/gcc/config/ia64/ia64.c
+++ b/gcc/config/ia64/ia64.c
@@ -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)