diff gcc/testsuite/gcc.dg/compat/struct-by-value-2_y.c @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gcc/testsuite/gcc.dg/compat/struct-by-value-2_y.c	Fri Oct 27 22:46:09 2017 +0900
@@ -0,0 +1,157 @@
+#include <stdarg.h>
+
+#include "compat-common.h"
+
+#ifdef SKIP_VA
+const int test_va = 0;
+#else
+const int test_va = 1;
+#endif
+
+#define T(N, NAME, TYPE)					\
+struct S##NAME##N { TYPE i[N]; };				\
+								\
+extern struct S##NAME##N g1s##NAME##N, g2s##NAME##N;		\
+extern struct S##NAME##N g3s##NAME##N, g4s##NAME##N;		\
+extern struct S##NAME##N g5s##NAME##N, g6s##NAME##N;		\
+extern struct S##NAME##N g7s##NAME##N, g8s##NAME##N;		\
+extern struct S##NAME##N g9s##NAME##N, g10s##NAME##N;		\
+extern struct S##NAME##N g11s##NAME##N, g12s##NAME##N;		\
+extern struct S##NAME##N g13s##NAME##N, g14s##NAME##N;		\
+extern struct S##NAME##N g15s##NAME##N, g16s##NAME##N;		\
+								\
+extern void check##NAME##N (struct S##NAME##N *p, int i);	\
+extern void							\
+test2_##NAME##N (struct S##NAME##N s1, struct S##NAME##N s2,	\
+		 struct S##NAME##N s3, struct S##NAME##N s4,	\
+		 struct S##NAME##N s5, struct S##NAME##N s6,	\
+		 struct S##NAME##N s7, struct S##NAME##N s8);	\
+								\
+void								\
+init##NAME##N (struct S##NAME##N *p, int i)			\
+{								\
+  int j;							\
+  for (j = 0; j < N; j++)					\
+    p->i[j] = i + j;						\
+}								\
+								\
+void								\
+checkg##NAME##N (void)						\
+{								\
+  check##NAME##N ( &g1s##NAME##N,  1*16);			\
+  check##NAME##N ( &g2s##NAME##N,  2*16);			\
+  check##NAME##N ( &g3s##NAME##N,  3*16);			\
+  check##NAME##N ( &g4s##NAME##N,  4*16);			\
+  check##NAME##N ( &g5s##NAME##N,  5*16);			\
+  check##NAME##N ( &g6s##NAME##N,  6*16);			\
+  check##NAME##N ( &g7s##NAME##N,  7*16);			\
+  check##NAME##N ( &g8s##NAME##N,  8*16);			\
+  check##NAME##N ( &g9s##NAME##N,  9*16);			\
+  check##NAME##N (&g10s##NAME##N, 10*16);			\
+  check##NAME##N (&g11s##NAME##N, 11*16);			\
+  check##NAME##N (&g12s##NAME##N, 12*16);			\
+  check##NAME##N (&g13s##NAME##N, 13*16);			\
+  check##NAME##N (&g14s##NAME##N, 14*16);			\
+  check##NAME##N (&g15s##NAME##N, 15*16);			\
+  check##NAME##N (&g16s##NAME##N, 16*16);			\
+}								\
+								\
+void								\
+test##NAME##N (struct S##NAME##N s1, struct S##NAME##N s2,	\
+	       struct S##NAME##N s3, struct S##NAME##N s4,	\
+	       struct S##NAME##N s5, struct S##NAME##N s6,	\
+	       struct S##NAME##N s7, struct S##NAME##N s8,	\
+	       struct S##NAME##N s9, struct S##NAME##N s10,	\
+	       struct S##NAME##N s11, struct S##NAME##N s12,	\
+	       struct S##NAME##N s13, struct S##NAME##N s14,	\
+	       struct S##NAME##N s15, struct S##NAME##N s16)	\
+{								\
+  check##NAME##N (&s1, 1*16);					\
+  check##NAME##N (&s2, 2*16);					\
+  check##NAME##N (&s3, 3*16);					\
+  check##NAME##N (&s4, 4*16);					\
+  check##NAME##N (&s5, 5*16);					\
+  check##NAME##N (&s6, 6*16);					\
+  check##NAME##N (&s7, 7*16);					\
+  check##NAME##N (&s8, 8*16);					\
+  check##NAME##N (&s9, 9*16);					\
+  check##NAME##N (&s10, 10*16);					\
+  check##NAME##N (&s11, 11*16);					\
+  check##NAME##N (&s12, 12*16);					\
+  check##NAME##N (&s13, 13*16);					\
+  check##NAME##N (&s14, 14*16);					\
+  check##NAME##N (&s15, 15*16);					\
+  check##NAME##N (&s16, 16*16);					\
+}								\
+								\
+void								\
+testva##NAME##N (int n, ...)					\
+{								\
+  int i;							\
+  va_list ap;							\
+  if (test_va)							\
+    {								\
+      va_start (ap, n);						\
+      for (i = 0; i < n; i++)					\
+	{							\
+	  struct S##NAME##N t = va_arg (ap, struct S##NAME##N);	\
+	  check##NAME##N (&t, (i+1)*16);			\
+	}							\
+      va_end (ap);						\
+    }								\
+}
+
+#ifndef SKIP_ZERO_ARRAY
+T(0, uc, unsigned char)
+#endif
+T(1, uc, unsigned char)
+T(2, uc, unsigned char)
+T(3, uc, unsigned char)
+T(4, uc, unsigned char)
+T(5, uc, unsigned char)
+T(6, uc, unsigned char)
+T(7, uc, unsigned char)
+T(8, uc, unsigned char)
+T(9, uc, unsigned char)
+T(10, uc, unsigned char)
+T(11, uc, unsigned char)
+T(12, uc, unsigned char)
+T(13, uc, unsigned char)
+T(14, uc, unsigned char)
+T(15, uc, unsigned char)
+#ifndef SKIP_ZERO_ARRAY
+T(0, us, unsigned short)
+#endif
+T(1, us, unsigned short)
+T(2, us, unsigned short)
+T(3, us, unsigned short)
+T(4, us, unsigned short)
+T(5, us, unsigned short)
+T(6, us, unsigned short)
+T(7, us, unsigned short)
+T(8, us, unsigned short)
+T(9, us, unsigned short)
+T(10, us, unsigned short)
+T(11, us, unsigned short)
+T(12, us, unsigned short)
+T(13, us, unsigned short)
+T(14, us, unsigned short)
+T(15, us, unsigned short)
+#ifndef SKIP_ZERO_ARRAY
+T(0, ui, unsigned int)
+#endif
+T(1, ui, unsigned int)
+T(2, ui, unsigned int)
+T(3, ui, unsigned int)
+T(4, ui, unsigned int)
+T(5, ui, unsigned int)
+T(6, ui, unsigned int)
+T(7, ui, unsigned int)
+T(8, ui, unsigned int)
+T(9, ui, unsigned int)
+T(10, ui, unsigned int)
+T(11, ui, unsigned int)
+T(12, ui, unsigned int)
+T(13, ui, unsigned int)
+T(14, ui, unsigned int)
+T(15, ui, unsigned int)