More va-arg variations. OKed by Jeff Law.

From-SVN: r32887
This commit is contained in:
Don Lindsay 2000-04-03 21:05:03 +00:00
parent c7b95850fb
commit 87e2376db3
5 changed files with 191 additions and 0 deletions

View File

@ -0,0 +1,46 @@
#include <varargs.h>
void vafunction (dummy, va_alist)
char *dummy;
va_dcl
{
double darg;
int iarg;
int flag = 0;
int i;
va_list ap;
va_start(ap);
for (i = 1; i <= 18; i++, flag++)
{
if (flag & 1)
{
darg = va_arg (ap, double);
if (darg != (double)i)
abort();
}
else
{
iarg = va_arg (ap, int);
if (iarg != i)
abort();
}
}
va_end(ap);
}
int main (void)
{
vafunction( "",
1, 2.,
3, 4.,
5, 6.,
7, 8.,
9, 10.,
11, 12.,
13, 14.,
15, 16.,
17, 18. );
exit(0);
return 0;
}

View File

@ -0,0 +1,43 @@
#include <varargs.h>
typedef double TYPE;
void vafunction (dummy1, dummy2, va_alist)
TYPE dummy1, dummy2;
va_dcl
{
va_list ap;
va_start(ap);
if (dummy1 != 888.)
abort();
if (dummy2 != 999.)
abort();
if (va_arg (ap, TYPE) != 1.)
abort();
if (va_arg (ap, TYPE) != 2.)
abort();
if (va_arg (ap, TYPE) != 3.)
abort();
if (va_arg (ap, TYPE) != 4.)
abort();
if (va_arg (ap, TYPE) != 5.)
abort();
if (va_arg (ap, TYPE) != 6.)
abort();
if (va_arg (ap, TYPE) != 7.)
abort();
if (va_arg (ap, TYPE) != 8.)
abort();
if (va_arg (ap, TYPE) != 9.)
abort();
va_end(ap);
}
int main (void)
{
vafunction( 888., 999., 1., 2., 3., 4., 5., 6., 7., 8., 9. );
exit(0);
return 0;
}

View File

@ -0,0 +1,39 @@
#include <varargs.h>
typedef double TYPE;
void vafunction (dummy, va_alist)
char *dummy;
va_dcl
{
va_list ap;
va_start(ap);
if (va_arg (ap, TYPE) != 1.)
abort();
if (va_arg (ap, TYPE) != 2.)
abort();
if (va_arg (ap, TYPE) != 3.)
abort();
if (va_arg (ap, TYPE) != 4.)
abort();
if (va_arg (ap, TYPE) != 5.)
abort();
if (va_arg (ap, TYPE) != 6.)
abort();
if (va_arg (ap, TYPE) != 7.)
abort();
if (va_arg (ap, TYPE) != 8.)
abort();
if (va_arg (ap, TYPE) != 9.)
abort();
va_end(ap);
}
int main (void)
{
vafunction( "", 1., 2., 3., 4., 5., 6., 7., 8., 9. );
exit(0);
return 0;
}

View File

@ -0,0 +1,24 @@
#include <stdarg.h>
typedef double L;
void f (L p0, L p1, L p2, L p3, L p4, L p5, L p6, L p7, L p8, ...)
{
va_list select;
va_start (select, p8);
if (va_arg (select, int) != 10)
abort ();
if (va_arg (select, int) != 11)
abort ();
if (va_arg (select, int) != 12)
abort ();
va_end (select);
}
int main ()
{
f (1., 2., 3., 4., 5., 6., 7., 8., 9., 10, 11, 12);
exit (0);
}

View File

@ -0,0 +1,39 @@
#include <varargs.h>
typedef int TYPE;
void vafunction (dummy, va_alist)
char *dummy;
va_dcl
{
va_list ap;
va_start(ap);
if (va_arg (ap, TYPE) != 1)
abort();
if (va_arg (ap, TYPE) != 2)
abort();
if (va_arg (ap, TYPE) != 3)
abort();
if (va_arg (ap, TYPE) != 4)
abort();
if (va_arg (ap, TYPE) != 5)
abort();
if (va_arg (ap, TYPE) != 6)
abort();
if (va_arg (ap, TYPE) != 7)
abort();
if (va_arg (ap, TYPE) != 8)
abort();
if (va_arg (ap, TYPE) != 9)
abort();
va_end(ap);
}
int main (void)
{
vafunction( "", 1, 2, 3, 4, 5, 6, 7, 8, 9 );
exit(0);
return 0;
}