diff options
author | Don Lindsay <dlindsay@gcc.gnu.org> | 2000-04-03 21:05:03 +0000 |
---|---|---|
committer | Don Lindsay <dlindsay@gcc.gnu.org> | 2000-04-03 21:05:03 +0000 |
commit | 87e2376db3d7cf905f163dff8424ef877368eed6 (patch) | |
tree | faf5bc681f45ecce4b2011eaef3eee8563948d17 /gcc | |
parent | c7b95850fbcae16cd38d0540753d0d28192c5446 (diff) | |
download | gcc-87e2376db3d7cf905f163dff8424ef877368eed6.zip gcc-87e2376db3d7cf905f163dff8424ef877368eed6.tar.gz gcc-87e2376db3d7cf905f163dff8424ef877368eed6.tar.bz2 |
More va-arg variations. OKed by Jeff Law.
From-SVN: r32887
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/testsuite/gcc.c-torture/execute/va-arg-15.c | 46 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/execute/va-arg-16.c | 43 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/execute/va-arg-17.c | 39 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/execute/va-arg-18.c | 24 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/execute/va-arg-19.c | 39 |
5 files changed, 191 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.c-torture/execute/va-arg-15.c b/gcc/testsuite/gcc.c-torture/execute/va-arg-15.c new file mode 100644 index 0000000..ed1b2e2 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/va-arg-15.c @@ -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; +} diff --git a/gcc/testsuite/gcc.c-torture/execute/va-arg-16.c b/gcc/testsuite/gcc.c-torture/execute/va-arg-16.c new file mode 100644 index 0000000..f079721 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/va-arg-16.c @@ -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; +} diff --git a/gcc/testsuite/gcc.c-torture/execute/va-arg-17.c b/gcc/testsuite/gcc.c-torture/execute/va-arg-17.c new file mode 100644 index 0000000..ff72d59 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/va-arg-17.c @@ -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; +} diff --git a/gcc/testsuite/gcc.c-torture/execute/va-arg-18.c b/gcc/testsuite/gcc.c-torture/execute/va-arg-18.c new file mode 100644 index 0000000..00dd54f --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/va-arg-18.c @@ -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); +} diff --git a/gcc/testsuite/gcc.c-torture/execute/va-arg-19.c b/gcc/testsuite/gcc.c-torture/execute/va-arg-19.c new file mode 100644 index 0000000..d058174 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/va-arg-19.c @@ -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; +} |