Commit ba418aa4 by Richard Kenner

(va_start): For stdarg, delete separate define for 64 bit ABI.

(va_start): For stdarg, delete separate define for 64 bit ABI.  For
varargs, don't subtract 64, and only add -8 when all argument
registers are used.

From-SVN: r10230
parent a2ef6e41
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
/* ---------------------------------------- */ /* ---------------------------------------- */
/* These macros implement varargs for GNU C--either traditional or ANSU. */ /* These macros implement varargs for GNU C--either traditional or ANSI. */
/* Define __gnuc_va_list. */ /* Define __gnuc_va_list. */
...@@ -43,14 +43,8 @@ typedef char * __gnuc_va_list; ...@@ -43,14 +43,8 @@ typedef char * __gnuc_va_list;
#endif #endif
#ifdef _STDARG_H #ifdef _STDARG_H
#if defined(_MIPS_SIM) && (_MIPS_SIM == _MIPS_SIM_ABI64)
#define va_start(__AP, __LASTARG) \
(__AP = __builtin_next_arg (__LASTARG) - 64 \
+ (__builtin_args_info (2) > 8 ? 64 : __builtin_args_info(2) * 8))
#else
#define va_start(__AP, __LASTARG) \ #define va_start(__AP, __LASTARG) \
(__AP = (__gnuc_va_list) __builtin_next_arg (__LASTARG)) (__AP = (__gnuc_va_list) __builtin_next_arg (__LASTARG))
#endif
#else #else
#define va_alist __builtin_va_alist #define va_alist __builtin_va_alist
...@@ -60,12 +54,11 @@ typedef char * __gnuc_va_list; ...@@ -60,12 +54,11 @@ typedef char * __gnuc_va_list;
#else #else
#define va_dcl int __builtin_va_alist; __va_ellipsis #define va_dcl int __builtin_va_alist; __va_ellipsis
#endif #endif
/* Need alternate code for _MIPS_SIM_ABI64, but don't use that symbol /* Need alternate code for _MIPS_SIM_ABI64. */
because it may not be defined. */
#if defined(_MIPS_SIM) && (_MIPS_SIM == _MIPS_SIM_ABI64) #if defined(_MIPS_SIM) && (_MIPS_SIM == _MIPS_SIM_ABI64)
#define va_start(__AP) \ #define va_start(__AP) \
(__AP = __builtin_next_arg () - 64 \ (__AP = (__gnuc_va_list) __builtin_next_arg () \
+ (__builtin_args_info (2) > 8 ? 64 : __builtin_args_info(2) * 8)) + (__builtin_args_info (2) >= 8 ? -8 : 0))
#else #else
#define va_start(__AP) __AP = (char *) &__builtin_va_alist #define va_start(__AP) __AP = (char *) &__builtin_va_alist
#endif #endif
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment