mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-24 20:01:19 +08:00
mips.h (CAN_ELIMINATE): Don't eliminate the frame pointer for the stack pointer in MIPS16 and 64BIT.
* mips/mips.h (CAN_ELIMINATE): Don't eliminate the frame pointer for the stack pointer in MIPS16 and 64BIT. From-SVN: r18035
This commit is contained in:
parent
153305b05c
commit
365ca18bf0
@ -1,3 +1,8 @@
|
||||
Tue Feb 17 21:28:12 1998 Gavin Koch <gavin@cygnus.com>
|
||||
|
||||
* mips/mips.h (CAN_ELIMINATE): Don't eliminate the frame
|
||||
pointer for the stack pointer in MIPS16 and 64BIT.
|
||||
|
||||
Tue Feb 17 21:17:30 1997 J"orn Rennecke <amylaar@cygnus.co.uk>
|
||||
|
||||
* rtl.h (force_line_numbers, restore_line_number_status): Declare.
|
||||
|
@ -2115,16 +2115,23 @@ extern struct mips_frame_info current_frame_info;
|
||||
cases preventing register elimination are things that the compiler
|
||||
already knows about.
|
||||
|
||||
We can always eliminate to the frame pointer. We can eliminate to
|
||||
the stack pointer unless a frame pointer is needed. In mips16
|
||||
mode, we need a frame pointer for a large frame; otherwise, reload
|
||||
may be unable to compute the address of a local variable, since
|
||||
there is no way to add a large constant to the stack pointer
|
||||
without using a temporary register. */
|
||||
When not in mips16 and mips64, we can always eliminate to the
|
||||
frame pointer. We can eliminate to the stack pointer unless
|
||||
a frame pointer is needed. In mips16 mode, we need a frame
|
||||
pointer for a large frame; otherwise, reload may be unable
|
||||
to compute the address of a local variable, since there is
|
||||
no way to add a large constant to the stack pointer
|
||||
without using a temporary register.
|
||||
|
||||
In mips16, for some instructions (eg lwu), we can't eliminate the
|
||||
frame pointer for the stack pointer. These instructions are
|
||||
only generated in TARGET_64BIT mode.
|
||||
*/
|
||||
|
||||
#define CAN_ELIMINATE(FROM, TO) \
|
||||
((TO) == HARD_FRAME_POINTER_REGNUM \
|
||||
|| ((TO) == STACK_POINTER_REGNUM && ! frame_pointer_needed \
|
||||
&& ! (TARGET_MIPS16 && TARGET_64BIT) \
|
||||
&& (! TARGET_MIPS16 \
|
||||
|| compute_frame_size (get_frame_size ()) < 32768)))
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user