(SECONDARY_MEMORY_NEEDED_RTX): Call assign_stack_local

if the frame has zero size.

From-SVN: r7682
This commit is contained in:
Jim Wilson 1994-07-08 13:52:11 -07:00
parent d93d4205f1
commit 55be783d95
1 changed files with 8 additions and 3 deletions

View File

@ -1072,10 +1072,15 @@ extern char leaf_reg_remap[];
GENERAL_REGS and FP_REGS. */
#define SECONDARY_MEMORY_NEEDED(CLASS1, CLASS2, MODE) ((CLASS1) != (CLASS2))
/* Return the stack location to use for secondary memory needed reloads. */
/* Return the stack location to use for secondary memory needed reloads.
We want to use the reserved location just below the frame pointer.
However, we must ensure that there is a frame, so use assign_stack_local
if the frame size is zero. */
#define SECONDARY_MEMORY_NEEDED_RTX(MODE) \
gen_rtx (MEM, MODE, gen_rtx (PLUS, Pmode, frame_pointer_rtx, \
GEN_INT (STARTING_FRAME_OFFSET)))
(get_frame_size () == 0 \
? assign_stack_local (mode, GET_MODE_SIZE (mode), 0) \
: gen_rtx (MEM, MODE, gen_rtx (PLUS, Pmode, frame_pointer_rtx, \
GEN_INT (STARTING_FRAME_OFFSET))))
/* Get_secondary_mem widens it's argument to BITS_PER_WORD which loses on v9
because the movsi and movsf patterns don't handle r/f moves.