aboutsummaryrefslogtreecommitdiff
path: root/gcc/config
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1995-08-13 21:33:47 -0400
committerRichard Kenner <kenner@gcc.gnu.org>1995-08-13 21:33:47 -0400
commit48eebadec0143fb1cd2c717470c54cffca36f229 (patch)
treeffd89b956e89af1c55c5ca4549d21ad5e4f6c217 /gcc/config
parent2b16a9d39dad2ebb981722ea363b41fe1e664d2c (diff)
downloadgcc-48eebadec0143fb1cd2c717470c54cffca36f229.zip
gcc-48eebadec0143fb1cd2c717470c54cffca36f229.tar.gz
gcc-48eebadec0143fb1cd2c717470c54cffca36f229.tar.bz2
(SETUP_INCOMING_VARARGS): In if statement, only subtract one for stdarg.
(SETUP_INCOMING_VARARGS): In if statement, only subtract one for stdarg. Don't subtract PRETEND_SIZE from argument pointer when calculating stack address. From-SVN: r10228
Diffstat (limited to 'gcc/config')
-rw-r--r--gcc/config/mips/abi64.h8
1 files changed, 4 insertions, 4 deletions
diff --git a/gcc/config/mips/abi64.h b/gcc/config/mips/abi64.h
index d667bf8..bd3b653 100644
--- a/gcc/config/mips/abi64.h
+++ b/gcc/config/mips/abi64.h
@@ -132,7 +132,9 @@ extern struct rtx_def *mips_function_value ();
For stdarg, we do not need to save the current argument, because it
is a real argument. */
#define SETUP_INCOMING_VARARGS(CUM,MODE,TYPE,PRETEND_SIZE,NO_RTL) \
-{ if (mips_isa >= 3 && (CUM).arg_words < MAX_ARGS_IN_REGISTERS - 1) \
+{ if (mips_isa >= 3 \
+ && ((CUM).arg_words \
+ < (MAX_ARGS_IN_REGISTERS - ! current_function_varargs))) \
{ \
PRETEND_SIZE \
= (MAX_ARGS_IN_REGISTERS - (CUM).arg_words \
@@ -140,9 +142,7 @@ extern struct rtx_def *mips_function_value ();
\
if (! (NO_RTL)) \
{ \
- rtx mem = gen_rtx (MEM, BLKmode, \
- plus_constant (virtual_incoming_args_rtx, \
- - PRETEND_SIZE)); \
+ rtx mem = gen_rtx (MEM, BLKmode, virtual_incoming_args_rtx); \
/* va_arg is an array access in this case, which causes it to \
get MEM_IN_STRUCT_P set. We must set it here so that the \
insn scheduler won't assume that these stores can't \