diff options
Diffstat (limited to 'gcc/testsuite/gcc.c-torture/execute/va-arg-13.c')
-rw-r--r-- | gcc/testsuite/gcc.c-torture/execute/va-arg-13.c | 38 |
1 files changed, 38 insertions, 0 deletions
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 000000000..65caf2b9a --- /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); +} |