/* Set by the FUNCTION_PROFILER macro. */
int hp_profile_labelno;
-/* Global variables set by FUNCTION_PROLOGUE. */
-/* Size of frame. Need to know this to emit return insns from
- leaf procedures. */
-int apparent_fsize;
-int actual_fsize;
-int local_fsize, save_fregs;
-
/* Name of where we pretend to think the frame pointer points.
Normally, this is "4", but if we are in a leaf procedure,
this is "something(30)". Will this work? */
disp, r);
}
+/* Global variables set by FUNCTION_PROLOGUE. */
+/* Size of frame. Need to know this to emit return insns from
+ leaf procedures. */
+int apparent_fsize;
+int actual_fsize;
+int local_fsize, save_fregs;
+
int
-compute_frame_size (size, leaf_function)
+compute_frame_size (size, leaf_function, fregs_live)
int size;
int leaf_function;
+ int *fregs_live;
{
extern int current_function_outgoing_args_size;
int i;
for (i = 47; i >= 44; i--)
if (regs_ever_live[i])
{
- actual_fsize += 8; save_fregs++;
+ actual_fsize += 8;
+ if (fregs_live)
+ *fregs_live = 1;
}
}
else
for (i = 90; i >= 72; i -= 2)
if (regs_ever_live[i] || regs_ever_live[i + 1])
{
- actual_fsize += 8; save_fregs++;
+ actual_fsize += 8;
+ if (fregs_live)
+ *fregs_live = 1;
}
}
return actual_fsize + current_function_outgoing_args_size;
extern int current_function_returns_struct;
int i, offset;
- actual_fsize = compute_frame_size (size, leaf_function) + 32;
+ save_fregs = 0;
+ actual_fsize = compute_frame_size (size, leaf_function, &save_fregs) + 32;
if (TARGET_SNAKE)
actual_fsize = (actual_fsize + 63) & ~63;