From: Jim Wilson Date: Fri, 8 Jul 1994 20:52:11 +0000 (-0700) Subject: (SECONDARY_MEMORY_NEEDED_RTX): Call assign_stack_local X-Git-Tag: misc/cutover-egcs-0~6261 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=55be783d95e0001fad3463718481e10d3f502b7d;p=thirdparty%2Fgcc.git (SECONDARY_MEMORY_NEEDED_RTX): Call assign_stack_local if the frame has zero size. From-SVN: r7682 --- diff --git a/gcc/config/sparc/sparc.h b/gcc/config/sparc/sparc.h index c9339c2cef99..1fb1bf07107f 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.