aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1993-10-12 17:24:55 -0400
committerRichard Kenner <kenner@gcc.gnu.org>1993-10-12 17:24:55 -0400
commit7a92339b20611111bb02b7b83bcc6e9cb5761740 (patch)
tree54333f598ead1787639b36c93d69adf5a4d36728 /gcc
parent6fb2e34673c7c5678301868fb547d80cd90fe737 (diff)
downloadgcc-7a92339b20611111bb02b7b83bcc6e9cb5761740.zip
gcc-7a92339b20611111bb02b7b83bcc6e9cb5761740.tar.gz
gcc-7a92339b20611111bb02b7b83bcc6e9cb5761740.tar.bz2
(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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/alpha/alpha.h11
1 files changed, 9 insertions, 2 deletions
diff --git a/gcc/config/alpha/alpha.h b/gcc/config/alpha/alpha.h
index 4a6756d..6d671e9 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)), \