aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/testsuite/gcc.c-torture/ChangeLog4
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/va-arg-13.c38
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);
+}