return "";
}
-/* Finalize stack_realign_needed and frame_pointer_needed flags, which
- will guide prologue/epilogue to be generated in correct form. */
-
+/* Finalize stack_realign_needed flag, which will guide prologue/epilogue
+ to be generated in correct form. */
static void
-ix86_finalize_stack_frame_flags (void)
+ix86_finalize_stack_realign_flags (void)
{
/* Check if stack realign is really needed after reload, and
stores result in cfun */
unsigned int incoming_stack_boundary
= (crtl->parm_stack_boundary > ix86_incoming_stack_boundary
? crtl->parm_stack_boundary : ix86_incoming_stack_boundary);
- bool stack_realign
+ unsigned int stack_realign
= (incoming_stack_boundary
< (crtl->is_leaf && !ix86_current_function_calls_tls_descriptor
? crtl->max_used_stack_slot_alignment
: crtl->stack_alignment_needed));
bool recompute_frame_layout_p = false;
- bool omit_frame_pointer = flag_omit_frame_pointer != 0;
if (crtl->stack_realign_finalized)
{
}
/* If the only reason for frame_pointer_needed is that we conservatively
- assumed stack realignment might be needed or -fno-omit-frame-pointer
- is used, but in the end nothing that needed the stack alignment had
- been spilled nor stack access, clear frame_pointer_needed and say we
- don't need stack realignment. */
- if (stack_realign == omit_frame_pointer
+ assumed stack realignment might be needed, but in the end nothing that
+ needed the stack alignment had been spilled, clear frame_pointer_needed
+ and say we don't need stack realignment. */
+ if (stack_realign
&& frame_pointer_needed
&& crtl->is_leaf
+ && flag_omit_frame_pointer
&& crtl->sp_is_unchanging
&& !ix86_current_function_calls_tls_descriptor
&& !crtl->accesses_prior_frames
if (ix86_function_naked (current_function_decl))
return;
- ix86_finalize_stack_frame_flags ();
+ ix86_finalize_stack_realign_flags ();
/* DRAP should not coexist with stack_realign_fp */
gcc_assert (!(crtl->drap_reg && stack_realign_fp));
return;
}
- ix86_finalize_stack_frame_flags ();
+ ix86_finalize_stack_realign_flags ();
frame = m->frame;
m->fs.sp_realigned = stack_realign_fp;
gcc_assert (flag_split_stack && reload_completed);
- ix86_finalize_stack_frame_flags ();
+ ix86_finalize_stack_realign_flags ();
frame = cfun->machine->frame;
allocate = frame.stack_pointer_offset - INCOMING_FRAME_SP_OFFSET;