From: Richard Kenner Date: Mon, 14 Aug 1995 01:33:47 +0000 (-0400) Subject: (SETUP_INCOMING_VARARGS): In if statement, only subtract one for stdarg. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=48eebadec0143fb1cd2c717470c54cffca36f229;p=gcc.git (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 --- diff --git a/gcc/config/mips/abi64.h b/gcc/config/mips/abi64.h index d667bf8feda..bd3b653580c 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 \