From 7a92339b20611111bb02b7b83bcc6e9cb5761740 Mon Sep 17 00:00:00 2001 From: Richard Kenner Date: Tue, 12 Oct 1993 17:24:55 -0400 Subject: [PATCH] (SETUP_INCOMING_VARARGS): If not TARGET_FPREGS... (SETUP_INCOMING_VARARGS): If not TARGET_FPREGS, save another copy of the integer regs where the FP regs would have gone. From-SVN: r5757 --- gcc/config/alpha/alpha.h | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/gcc/config/alpha/alpha.h b/gcc/config/alpha/alpha.h index 4a6756d998a..6d671e964a5 100644 --- a/gcc/config/alpha/alpha.h +++ b/gcc/config/alpha/alpha.h @@ -794,7 +794,14 @@ enum reg_class { NO_REGS, GENERAL_REGS, FLOAT_REGS, ALL_REGS, However, if NO registers need to be saved, don't allocate any space. This is not only because we won't need the space, but because AP includes the current_pretend_args_size and we don't want to mess up any - ap-relative addresses already made. */ + ap-relative addresses already made. + + If we are not to use the floating-point registers, save the integer + registers where we would put the floating-point registers. This is + not the most efficient way to implement varargs with just one register + class, but it isn't worth doing anything more efficient in this rare + case. */ + #define SETUP_INCOMING_VARARGS(CUM,MODE,TYPE,PRETEND_SIZE,NO_RTL) \ { if ((CUM) < 6) \ @@ -808,7 +815,7 @@ enum reg_class { NO_REGS, GENERAL_REGS, FLOAT_REGS, ALL_REGS, ((CUM) + 6)* UNITS_PER_WORD)), \ 6 - (CUM), (6 - (CUM)) * UNITS_PER_WORD); \ move_block_from_reg \ - (16 + 32 + CUM, \ + (16 + (TARGET_FPREGS ? 32 : 0) + CUM, \ gen_rtx (MEM, BLKmode, \ plus_constant (virtual_incoming_args_rtx, \ (CUM) * UNITS_PER_WORD)), \ -- 2.30.2