diff options
author | Jeff Law <law@gcc.gnu.org> | 1998-01-17 17:22:34 -0700 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 1998-01-17 17:22:34 -0700 |
commit | 70372764a36ccb823ab33db543a527a563ddc0eb (patch) | |
tree | 2195453bdfee54b86b0ec132f6c91da7936ce1fd /gcc | |
parent | ffc3503d9f3b98e5a5ab72132389282e3f040de5 (diff) | |
download | gcc-70372764a36ccb823ab33db543a527a563ddc0eb.zip gcc-70372764a36ccb823ab33db543a527a563ddc0eb.tar.gz gcc-70372764a36ccb823ab33db543a527a563ddc0eb.tar.bz2 |
New test from Joern.
From-SVN: r17410
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/testsuite/gcc.c-torture/execute/strct-stdarg-1.c | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.c-torture/execute/strct-stdarg-1.c b/gcc/testsuite/gcc.c-torture/execute/strct-stdarg-1.c new file mode 100644 index 0000000..508c954 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/strct-stdarg-1.c @@ -0,0 +1,61 @@ +#include <stdarg.h> + +struct tiny +{ + char c; + char d; + char e; + char f; + char g; +}; + +f (int n, ...) +{ + struct tiny x; + int i; + + va_list ap; + va_start (ap,n); + for (i = 0; i < n; i++) + { + x = va_arg (ap,struct tiny); + if (x.c != i + 10) + abort(); + if (x.d != i + 20) + abort(); + if (x.e != i + 30) + abort(); + if (x.f != i + 40) + abort(); + if (x.g != i + 50) + abort(); + } + { + long x = va_arg (ap, long); + if (x != 123) + abort(); + } + va_end (ap); +} + +main () +{ + struct tiny x[3]; + x[0].c = 10; + x[1].c = 11; + x[2].c = 12; + x[0].d = 20; + x[1].d = 21; + x[2].d = 22; + x[0].e = 30; + x[1].e = 31; + x[2].e = 32; + x[0].f = 40; + x[1].f = 41; + x[2].f = 42; + x[0].g = 50; + x[1].g = 51; + x[2].g = 52; + f (3, x[0], x[1], x[2], (long) 123); + exit(0); +} |