Commit 117aea7a by Jim Wilson

(va_start): Pass LASTARG as a parameter to

builtin_next_arg.

From-SVN: r6855
parent c4dfe0fc
...@@ -67,7 +67,7 @@ typedef void *__gnuc_va_list; ...@@ -67,7 +67,7 @@ typedef void *__gnuc_va_list;
(((sizeof (TYPE) + sizeof (int) - 1) / sizeof (int)) * sizeof (int)) (((sizeof (TYPE) + sizeof (int) - 1) / sizeof (int)) * sizeof (int))
#define va_start(AP, LASTARG) \ #define va_start(AP, LASTARG) \
(AP = ((__gnuc_va_list) __builtin_next_arg ())) (AP = ((__gnuc_va_list) __builtin_next_arg (LASTARG)))
#undef va_end #undef va_end
void va_end (__gnuc_va_list); /* Defined in libgcc.a */ void va_end (__gnuc_va_list); /* Defined in libgcc.a */
......
...@@ -30,7 +30,8 @@ typedef void *__gnuc_va_list; ...@@ -30,7 +30,8 @@ typedef void *__gnuc_va_list;
#ifdef _STDARG_H #ifdef _STDARG_H
#define va_start(AP,LASTARG) (AP = ((__gnuc_va_list) __builtin_next_arg ())) #define va_start(AP,LASTARG) \
(AP = ((__gnuc_va_list) __builtin_next_arg (LASTARG)))
#else /* _VARARGS_H */ #else /* _VARARGS_H */
......
...@@ -61,7 +61,7 @@ typedef struct { ...@@ -61,7 +61,7 @@ typedef struct {
((pvar) = *(__gnuc_va_list *) __builtin_saveregs (), \ ((pvar) = *(__gnuc_va_list *) __builtin_saveregs (), \
(pvar).__ireg_used = __builtin_args_info (0) / 4, \ (pvar).__ireg_used = __builtin_args_info (0) / 4, \
(pvar).__freg_used = __builtin_args_info (1) / 4, \ (pvar).__freg_used = __builtin_args_info (1) / 4, \
(pvar).__mem_ptr = __builtin_next_arg ()) (pvar).__mem_ptr = __builtin_next_arg (firstarg))
#endif /* _STDARG_H */ #endif /* _STDARG_H */
......
...@@ -39,7 +39,7 @@ typedef unsigned __gnuc_va_list[2]; ...@@ -39,7 +39,7 @@ typedef unsigned __gnuc_va_list[2];
#define va_start(AP, LASTARG) \ #define va_start(AP, LASTARG) \
__extension__ \ __extension__ \
({ __asm__ ("st g14,%0" : "=m" (*(AP))); \ ({ __asm__ ("st g14,%0" : "=m" (*(AP))); \
(AP)[1] = (unsigned) __builtin_next_arg () - *AP; }) (AP)[1] = (unsigned) __builtin_next_arg (LASTARG) - *AP; })
#else #else
#define va_alist __builtin_va_alist #define va_alist __builtin_va_alist
......
...@@ -38,12 +38,7 @@ typedef char * __gnuc_va_list; ...@@ -38,12 +38,7 @@ typedef char * __gnuc_va_list;
#endif #endif
#ifdef _STDARG_H #ifdef _STDARG_H
#if __mips==3 #define va_start(__AP, __LASTARG) (__AP = __builtin_next_arg (__LASTARG))
#define va_start(__AP, __LASTARG) (__AP = __builtin_next_arg ())
#else
#define va_start(__AP, __LASTARG) \
(__AP = ((char *) &(__LASTARG) + __va_rounded_size (__LASTARG)))
#endif
#else #else
#define va_alist __builtin_va_alist #define va_alist __builtin_va_alist
......
...@@ -23,11 +23,14 @@ typedef void * __gnuc_va_list; ...@@ -23,11 +23,14 @@ typedef void * __gnuc_va_list;
#ifdef _STDARG_H #ifdef _STDARG_H
/* Call __builtin_next_arg even though we aren't using its value, so that
we can verify that LASTARG is correct. */
#ifdef __GCC_NEW_VARARGS__ #ifdef __GCC_NEW_VARARGS__
#define va_start(AP, LASTARG) (AP = (char *) __builtin_saveregs ()) #define va_start(AP, LASTARG) \
(__builtin_next_arg (LASTARG), AP = (char *) __builtin_saveregs ())
#else #else
#define va_start(AP, LASTARG) \ #define va_start(AP, LASTARG) \
(__builtin_saveregs (), AP = ((char *) __builtin_next_arg ())) (__builtin_saveregs (), AP = ((char *) __builtin_next_arg (LASTARG)))
#endif #endif
#else #else
......
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