tm.texi: Remove STARTING_FRAME_PHASE.
* doc/tm.texi: Remove STARTING_FRAME_PHASE. * config/rs6000/rs6000.h: Same. * function.c (instantiate_virtual_regs): Remove STARTING_FRAME_PHASE. (assign_stack_local_1): Same. Calculate frame phase. From-SVN: r49063
This commit is contained in:
parent
1ec968465b
commit
58dbcf0581
3 changed files with 9 additions and 38 deletions
|
@ -1382,11 +1382,6 @@ typedef struct rs6000_stack {
|
|||
+ RS6000_VARARGS_AREA \
|
||||
+ RS6000_SAVE_AREA)
|
||||
|
||||
/* How far (in bytes) is the start of the frame from the stack
|
||||
alignment. For ppc 32bits, the stack is aligned to 128 bits, but
|
||||
the frame starts 64bits later. */
|
||||
#define STARTING_FRAME_PHASE (TARGET_32BIT ? 8 : 0)
|
||||
|
||||
/* Offset from the stack pointer register to an item dynamically
|
||||
allocated on the stack, e.g., by `alloca'.
|
||||
|
||||
|
|
|
@ -2598,18 +2598,6 @@ value @code{STARTING_FRAME_OFFSET}.
|
|||
@c i'm not sure if the above is still correct.. had to change it to get
|
||||
@c rid of an overfull. --mew 2feb93
|
||||
|
||||
@findex STARTING_FRAME_PHASE
|
||||
@item STARTING_FRAME_PHASE
|
||||
This option species how many bytes the frame is out of phase from the
|
||||
stack alignment.
|
||||
|
||||
For example, some ports assume a stack alignment of 128 bits, but the
|
||||
start of the frame is 64 bits displaced from this alignment. In this
|
||||
case, you would define @code{STARTING_FRAME_PHASE} to be 8.
|
||||
|
||||
This macro defaults to 0, so there is no need to define it if the start
|
||||
of the frame maintains the stack alignment.
|
||||
|
||||
@findex STACK_POINTER_OFFSET
|
||||
@item STACK_POINTER_OFFSET
|
||||
Offset from the stack pointer register to the first location at which
|
||||
|
|
|
@ -68,10 +68,6 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
|
|||
#define LOCAL_ALIGNMENT(TYPE, ALIGNMENT) ALIGNMENT
|
||||
#endif
|
||||
|
||||
#ifndef STARTING_FRAME_PHASE
|
||||
#define STARTING_FRAME_PHASE 0
|
||||
#endif
|
||||
|
||||
/* Some systems use __main in a way incompatible with its use in gcc, in these
|
||||
cases use the macros NAME__MAIN to give a quoted symbol and SYMBOL__MAIN to
|
||||
give the same symbol without quotes for an alternative entry point. You
|
||||
|
@ -528,6 +524,7 @@ assign_stack_local_1 (mode, size, align, function)
|
|||
rtx x, addr;
|
||||
int bigend_correction = 0;
|
||||
int alignment;
|
||||
int frame_off, frame_alignment, frame_phase;
|
||||
|
||||
if (align == 0)
|
||||
{
|
||||
|
@ -565,15 +562,21 @@ assign_stack_local_1 (mode, size, align, function)
|
|||
if (function->stack_alignment_needed < alignment * BITS_PER_UNIT)
|
||||
function->stack_alignment_needed = alignment * BITS_PER_UNIT;
|
||||
|
||||
/* Calculate how many bytes the start of local variables is off from
|
||||
stack alignment. */
|
||||
frame_alignment = PREFERRED_STACK_BOUNDARY / BITS_PER_UNIT;
|
||||
frame_off = STARTING_FRAME_OFFSET % frame_alignment;
|
||||
frame_phase = frame_off ? frame_alignment - frame_off : 0;
|
||||
|
||||
/* Round frame offset to that alignment.
|
||||
We must be careful here, since FRAME_OFFSET might be negative and
|
||||
division with a negative dividend isn't as well defined as we might
|
||||
like. So we instead assume that ALIGNMENT is a power of two and
|
||||
use logical operations which are unambiguous. */
|
||||
#ifdef FRAME_GROWS_DOWNWARD
|
||||
function->x_frame_offset = FLOOR_ROUND (function->x_frame_offset - STARTING_FRAME_PHASE, alignment) + STARTING_FRAME_PHASE;
|
||||
function->x_frame_offset = FLOOR_ROUND (function->x_frame_offset - frame_phase, alignment) + frame_phase;
|
||||
#else
|
||||
function->x_frame_offset = CEIL_ROUND (function->x_frame_offset - STARTING_FRAME_PHASE, alignment) + STARTING_FRAME_PHASE;
|
||||
function->x_frame_offset = CEIL_ROUND (function->x_frame_offset - frame_phase, alignment) + frame_phase;
|
||||
#endif
|
||||
|
||||
/* On a big-endian machine, if we are allocating more space than we will use,
|
||||
|
@ -3481,21 +3484,6 @@ instantiate_virtual_regs (fndecl, insns)
|
|||
rtx insn;
|
||||
unsigned int i;
|
||||
|
||||
if (STARTING_FRAME_PHASE > 0)
|
||||
{
|
||||
/* Make sure the frame offset and phase displacement are aligned as
|
||||
advertised.
|
||||
|
||||
Only do the sanity check if we have a STARTING_FRAME_PHASE,
|
||||
else we might trigger this abort on ports who claim to have
|
||||
STARTING_FRAME_OFFSET aligned properly, but don't. I suppose
|
||||
we could enable this and fix those ports. */
|
||||
|
||||
if ((STARTING_FRAME_OFFSET + STARTING_FRAME_PHASE)
|
||||
% (STACK_BOUNDARY / BITS_PER_UNIT))
|
||||
abort ();
|
||||
}
|
||||
|
||||
/* Compute the offsets to use for this function. */
|
||||
in_arg_offset = FIRST_PARM_OFFSET (fndecl);
|
||||
var_offset = STARTING_FRAME_OFFSET;
|
||||
|
|
Loading…
Add table
Reference in a new issue