From 55be783d95e0001fad3463718481e10d3f502b7d Mon Sep 17 00:00:00 2001 From: Jim Wilson Date: Fri, 8 Jul 1994 13:52:11 -0700 Subject: [PATCH] (SECONDARY_MEMORY_NEEDED_RTX): Call assign_stack_local if the frame has zero size. From-SVN: r7682 --- gcc/config/sparc/sparc.h | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/gcc/config/sparc/sparc.h b/gcc/config/sparc/sparc.h index c9339c2cef9..1fb1bf07107 100644 --- a/gcc/config/sparc/sparc.h +++ b/gcc/config/sparc/sparc.h @@ -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. -- 2.30.2