diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/testsuite/gcc.c-torture/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/execute/va-arg-13.c | 38 |
2 files changed, 42 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.c-torture/ChangeLog b/gcc/testsuite/gcc.c-torture/ChangeLog index ae8e531..e7fdd99 100644 --- a/gcc/testsuite/gcc.c-torture/ChangeLog +++ b/gcc/testsuite/gcc.c-torture/ChangeLog @@ -1,3 +1,7 @@ +2000-02-23 Franz Sirl <Franz.Sirl-kernel@lauterbach.com> + + * execute/va-arg-13.c: New test. + Wed Feb 23 14:16:06 2000 Donald Lindsay <dlindsay@cygnus.com> * execute/va-arg-12.c: New test. diff --git a/gcc/testsuite/gcc.c-torture/execute/va-arg-13.c b/gcc/testsuite/gcc.c-torture/execute/va-arg-13.c new file mode 100644 index 0000000..65caf2b --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/va-arg-13.c @@ -0,0 +1,38 @@ +/* derived from mozilla source code */ + +#include <stdarg.h> + +typedef struct { + void *stream; + va_list ap; + int nChar; +} ScanfState; + +void dummy (va_list vap) +{ + if (va_arg (vap, int) != 1234) abort(); + return; +} + +void test (int fmt, ...) +{ + ScanfState state, *statep; + + statep = &state; + + va_start (statep->ap, fmt); + dummy (statep->ap); + va_end (statep->ap); + + va_start (state.ap, fmt); + dummy (state.ap); + va_end (state.ap); + + return; +} + +int main (void) +{ + test (456, 1234); + exit (0); +} |