aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Stallman <rms@gnu.org>1992-03-26 18:39:31 +0000
committerRichard Stallman <rms@gnu.org>1992-03-26 18:39:31 +0000
commit84c0bb6359b5e8161866347491ea77c7d8cafbbf (patch)
tree239f6cb48ac8bb61feca30d0a07370a221fc621f
parent9987501ff7c057954e8b06103f733baef329ed75 (diff)
downloadgcc-84c0bb6359b5e8161866347491ea77c7d8cafbbf.zip
gcc-84c0bb6359b5e8161866347491ea77c7d8cafbbf.tar.gz
gcc-84c0bb6359b5e8161866347491ea77c7d8cafbbf.tar.bz2
*** empty log message ***
From-SVN: r591
-rw-r--r--gcc/config/sparc/sparc.c21
1 files changed, 19 insertions, 2 deletions
diff --git a/gcc/config/sparc/sparc.c b/gcc/config/sparc/sparc.c
index 0979e80..f77fdca 100644
--- a/gcc/config/sparc/sparc.c
+++ b/gcc/config/sparc/sparc.c
@@ -1832,6 +1832,20 @@ compute_frame_size (size, leaf_function)
return actual_fsize;
}
+/* If this were a leaf function, how far would we have to reach
+ from the stack pointer to the last arg on the stack?
+
+ If we don't know, return 4096 (i.e., "too far".) */
+
+int
+compute_last_arg_offset ()
+{
+ if (GET_CODE (current_function_arg_offset_rtx) == CONST_INT)
+ return (compute_frame_size (get_frame_size (), 1)
+ + INTVAL (current_function_arg_offset_rtx));
+ return 4096;
+}
+
void
output_function_prologue (file, size, leaf_function)
FILE *file;
@@ -1863,11 +1877,14 @@ output_function_prologue (file, size, leaf_function)
}
else
{
+ /* The rest of the support for this case hasn't been implemented,
+ but FRAME_POINTER_REQUIRED is supposed to prevent it from arising,
+ by checking the frame size. */
+ abort ();
+
/* Put pointer to parameters into %g4, and allocate
frame space using result computed into %g1. actual_fsize
used instead of apparent_fsize for reasons stated above. */
- abort ();
-
fprintf (file, "\tsethi %%hi(%d),%%g1\n\tor %%g1,%%lo(%d),%%g1\n",
-actual_fsize, -actual_fsize);
fprintf (file, "\tadd %%sp,64,%%g4\n\tadd %%sp,%%g1,%%sp\n");