(va_start): Pass LASTARG as a parameter to
authorJim Wilson <wilson@gcc.gnu.org>
Wed, 23 Mar 1994 22:19:23 +0000 (14:19 -0800)
committerJim Wilson <wilson@gcc.gnu.org>
Wed, 23 Mar 1994 22:19:23 +0000 (14:19 -0800)
builtin_next_arg.

From-SVN: r6855

gcc/ginclude/stdarg.h
gcc/ginclude/va-h8300.h
gcc/ginclude/va-i860.h
gcc/ginclude/va-i960.h
gcc/ginclude/va-mips.h
gcc/ginclude/va-sparc.h

index 1dac354ae1f84d4f36b2ceeb68afe605bd3bb02f..675f65bb050c0925d5cb3aef0aece7cc82298f85 100644 (file)
@@ -67,7 +67,7 @@ typedef void *__gnuc_va_list;
   (((sizeof (TYPE) + sizeof (int) - 1) / sizeof (int)) * sizeof (int))
 
 #define va_start(AP, LASTARG)                                          \
- (AP = ((__gnuc_va_list) __builtin_next_arg ()))
+ (AP = ((__gnuc_va_list) __builtin_next_arg (LASTARG)))
 
 #undef va_end
 void va_end (__gnuc_va_list);          /* Defined in libgcc.a */
index a9b037b199f2f11a3563cd532584406361e1c2e1..18af77c560ee5f1bca7359204cfdbc702806c275 100644 (file)
@@ -30,7 +30,8 @@ typedef void *__gnuc_va_list;
 
 #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 */
 
index 9f6a50ae93facd229474546661de1496655546dc..1a74c458657d2d5f3aa385962af6baf2811e68a8 100644 (file)
@@ -61,7 +61,7 @@ typedef struct {
  ((pvar) = *(__gnuc_va_list *) __builtin_saveregs (),                  \
   (pvar).__ireg_used = __builtin_args_info (0) / 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 */
 
index 5bf9556ac447e20b0f80875bca93a3e2a6d6c763..bd77f8e80ac2eaf058d3d7ba1e950840771e813f 100644 (file)
@@ -39,7 +39,7 @@ typedef unsigned __gnuc_va_list[2];
 #define va_start(AP, LASTARG)                          \
 __extension__                                          \
 ({ __asm__ ("st        g14,%0" : "=m" (*(AP)));                \
-   (AP)[1] = (unsigned) __builtin_next_arg () - *AP; })
+   (AP)[1] = (unsigned) __builtin_next_arg (LASTARG) - *AP; })
 #else
 
 #define        va_alist __builtin_va_alist
index 3ea04af47c7e264f6cb00a4c400021850908cc43..2f411161a160fc075f562b7ac92315e2902e9cc3 100644 (file)
@@ -38,12 +38,7 @@ typedef char * __gnuc_va_list;
 #endif
 
 #ifdef _STDARG_H
-#if __mips==3
-#define va_start(__AP, __LASTARG)      (__AP = __builtin_next_arg ())
-#else
-#define va_start(__AP, __LASTARG)                                              \
- (__AP = ((char *) &(__LASTARG) + __va_rounded_size (__LASTARG)))
-#endif
+#define va_start(__AP, __LASTARG)      (__AP = __builtin_next_arg (__LASTARG))
 
 #else
 #define va_alist  __builtin_va_alist
index 980ecd67ebef3c875f77ca16a13f70d43433d37f..db2e28d319bd3a00832d055bba2af8d55f7588a3 100644 (file)
@@ -23,11 +23,14 @@ typedef void * __gnuc_va_list;
 
 #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__
-#define va_start(AP, LASTARG)  (AP = (char *) __builtin_saveregs ())
+#define va_start(AP, LASTARG) \
+  (__builtin_next_arg (LASTARG), AP = (char *) __builtin_saveregs ())
 #else
 #define va_start(AP, LASTARG)                                  \
-  (__builtin_saveregs (), AP = ((char *) __builtin_next_arg ()))
+  (__builtin_saveregs (), AP = ((char *) __builtin_next_arg (LASTARG)))
 #endif
 
 #else