aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFranz Sirl <Franz.Sirl-kernel@lauterbach.com>1999-09-28 08:20:28 +0000
committerRichard Henderson <rth@gcc.gnu.org>1999-09-28 01:20:28 -0700
commit8bbcc7ce6bd96c4750150181e3a2a63a0f321e12 (patch)
tree673a8a9a3f74cee863409f70f0718d97607ca1b7
parent8ebecc3b1c66783ed62d5af14148c0778ac66131 (diff)
downloadgcc-8bbcc7ce6bd96c4750150181e3a2a63a0f321e12.zip
gcc-8bbcc7ce6bd96c4750150181e3a2a63a0f321e12.tar.gz
gcc-8bbcc7ce6bd96c4750150181e3a2a63a0f321e12.tar.bz2
* gcc.c-torture/execute/va-arg-10.c: New test.
From-SVN: r29691
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/va-arg-10.c248
2 files changed, 252 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index e4ea51a..4e3ec71 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+Tue Sep 28 01:19:09 1999 Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
+
+ * gcc.c-torture/execute/va-arg-10.c: New test.
+
Mon Sep 27 09:14:24 BST 1999 Nathan Sidwell <nathan@acm.org>
* g++.old-deja/g++.pt/memtemp77.C: Adjust expected
diff --git a/gcc/testsuite/gcc.c-torture/execute/va-arg-10.c b/gcc/testsuite/gcc.c-torture/execute/va-arg-10.c
new file mode 100644
index 0000000..5ce3453
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/execute/va-arg-10.c
@@ -0,0 +1,248 @@
+/* This is a modfied version of va-arg-9.c to test va_copy. */
+
+#include <stdarg.h>
+
+#ifndef va_copy
+#define va_copy __va_copy
+#endif
+
+extern __SIZE_TYPE__ strlen (const char *);
+
+int
+to_hex (unsigned int a)
+{
+ static char hex[] = "0123456789abcdef";
+
+ if (a > 15)
+ abort ();
+ return hex[a];
+}
+
+void
+fap (int i, char* format, va_list ap)
+{
+ va_list apc;
+ char *formatc;
+
+ va_copy (apc, ap);
+ formatc = format;
+
+ if (strlen (format) != 16 - i)
+ abort ();
+ while (*format)
+ if (*format++ != to_hex (va_arg (ap, int)))
+ abort ();
+ while (*formatc)
+ if (*formatc++ != to_hex (va_arg (apc, int)))
+ abort ();
+}
+
+void
+f0 (char* format, ...)
+{
+ va_list ap;
+
+ va_start (ap, format);
+ fap(0, format, ap);
+ va_end(ap);
+}
+
+void
+f1 (int a1, char* format, ...)
+{
+ va_list ap;
+
+ va_start(ap, format);
+ fap(1, format, ap);
+ va_end(ap);
+}
+
+void
+f2 (int a1, int a2, char* format, ...)
+{
+ va_list ap;
+
+ va_start(ap, format);
+ fap(2, format, ap);
+ va_end(ap);
+}
+
+void
+f3 (int a1, int a2, int a3, char* format, ...)
+{
+ va_list ap;
+
+ va_start(ap, format);
+ fap(3, format, ap);
+ va_end(ap);
+}
+
+void
+f4 (int a1, int a2, int a3, int a4, char* format, ...)
+{
+ va_list ap;
+
+ va_start(ap, format);
+ fap(4, format, ap);
+ va_end(ap);
+}
+
+void
+f5 (int a1, int a2, int a3, int a4, int a5,
+ char* format, ...)
+{
+ va_list ap;
+
+ va_start(ap, format);
+ fap(5, format, ap);
+ va_end(ap);
+}
+
+void
+f6 (int a1, int a2, int a3, int a4, int a5,
+ int a6,
+ char* format, ...)
+{
+ va_list ap;
+
+ va_start(ap, format);
+ fap(6, format, ap);
+ va_end(ap);
+}
+
+void
+f7 (int a1, int a2, int a3, int a4, int a5,
+ int a6, int a7,
+ char* format, ...)
+{
+ va_list ap;
+
+ va_start(ap, format);
+ fap(7, format, ap);
+ va_end(ap);
+}
+
+void
+f8 (int a1, int a2, int a3, int a4, int a5,
+ int a6, int a7, int a8,
+ char* format, ...)
+{
+ va_list ap;
+
+ va_start(ap, format);
+ fap(8, format, ap);
+ va_end(ap);
+}
+
+void
+f9 (int a1, int a2, int a3, int a4, int a5,
+ int a6, int a7, int a8, int a9,
+ char* format, ...)
+{
+ va_list ap;
+
+ va_start(ap, format);
+ fap(9, format, ap);
+ va_end(ap);
+}
+
+void
+f10 (int a1, int a2, int a3, int a4, int a5,
+ int a6, int a7, int a8, int a9, int a10,
+ char* format, ...)
+{
+ va_list ap;
+
+ va_start(ap, format);
+ fap(10, format, ap);
+ va_end(ap);
+}
+
+void
+f11 (int a1, int a2, int a3, int a4, int a5,
+ int a6, int a7, int a8, int a9, int a10,
+ int a11,
+ char* format, ...)
+{
+ va_list ap;
+
+ va_start(ap, format);
+ fap(11, format, ap);
+ va_end(ap);
+}
+
+void
+f12 (int a1, int a2, int a3, int a4, int a5,
+ int a6, int a7, int a8, int a9, int a10,
+ int a11, int a12,
+ char* format, ...)
+{
+ va_list ap;
+
+ va_start(ap, format);
+ fap(12, format, ap);
+ va_end(ap);
+}
+
+void
+f13 (int a1, int a2, int a3, int a4, int a5,
+ int a6, int a7, int a8, int a9, int a10,
+ int a11, int a12, int a13,
+ char* format, ...)
+{
+ va_list ap;
+
+ va_start(ap, format);
+ fap(13, format, ap);
+ va_end(ap);
+}
+
+void
+f14 (int a1, int a2, int a3, int a4, int a5,
+ int a6, int a7, int a8, int a9, int a10,
+ int a11, int a12, int a13, int a14,
+ char* format, ...)
+{
+ va_list ap;
+
+ va_start(ap, format);
+ fap(14, format, ap);
+ va_end(ap);
+}
+
+void
+f15 (int a1, int a2, int a3, int a4, int a5,
+ int a6, int a7, int a8, int a9, int a10,
+ int a11, int a12, int a13, int a14, int a15,
+ char* format, ...)
+{
+ va_list ap;
+
+ va_start(ap, format);
+ fap(15, format, ap);
+ va_end(ap);
+}
+
+main ()
+{
+ char *f = "0123456789abcdef";
+
+ f0 (f+0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
+ f1 (0, f+1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
+ f2 (0, 1, f+2, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
+ f3 (0, 1, 2, f+3, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
+ f4 (0, 1, 2, 3, f+4, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
+ f5 (0, 1, 2, 3, 4, f+5, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
+ f6 (0, 1, 2, 3, 4, 5, f+6, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
+ f7 (0, 1, 2, 3, 4, 5, 6, f+7, 7, 8, 9, 10, 11, 12, 13, 14, 15);
+ f8 (0, 1, 2, 3, 4, 5, 6, 7, f+8, 8, 9, 10, 11, 12, 13, 14, 15);
+ f9 (0, 1, 2, 3, 4, 5, 6, 7, 8, f+9, 9, 10, 11, 12, 13, 14, 15);
+ f10 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, f+10, 10, 11, 12, 13, 14, 15);
+ f11 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, f+11, 11, 12, 13, 14, 15);
+ f12 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, f+12, 12, 13, 14, 15);
+ f13 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, f+13, 13, 14, 15);
+ f14 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, f+14, 14, 15);
+ f15 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, f+15, 15);
+
+ exit (0);
+}