aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/testsuite/gcc.dg/compat/struct-layout-1_y2.h
diff options
context:
space:
mode:
Diffstat (limited to 'gcc-4.9/gcc/testsuite/gcc.dg/compat/struct-layout-1_y2.h')
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/compat/struct-layout-1_y2.h69
1 files changed, 69 insertions, 0 deletions
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/compat/struct-layout-1_y2.h b/gcc-4.9/gcc/testsuite/gcc.dg/compat/struct-layout-1_y2.h
new file mode 100644
index 000000000..02a341e1c
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/compat/struct-layout-1_y2.h
@@ -0,0 +1,69 @@
+#undef F
+#undef N
+#undef B
+#undef TX
+
+#ifdef SKIP_VA
+const int test_va = 0;
+#else
+const int test_va = 1;
+#endif
+
+#define F(n, x, v, w) \
+ if (p->x != arg.x) FAIL (n, 74);
+#define N(n, x)
+#define B(n, x, v, w) \
+ if (p->x != arg.x) FAIL (n, 74);
+#define TX(n, type, attrs, fields, ops) \
+void \
+check##n##va (int z, ...) \
+{ \
+ type S##n arg, *p; \
+ va_list ap; \
+ int i; \
+ \
+ if (test_va) \
+ { \
+ va_start (ap, z); \
+ for (i = 0; i < 5; ++i) \
+ { \
+ p = NULL; \
+ switch ((z << 4) | i) \
+ { \
+ case 0x10: \
+ if (va_arg (ap, double) != 1.0) \
+ FAIL (n, 70); \
+ break; \
+ case 0x12: \
+ if (va_arg (ap, long long) != 2LL) \
+ FAIL (n, 71); \
+ break; \
+ case 0x22: \
+ if (va_arg (ap, long double) != 2.0L) \
+ FAIL (n, 72); \
+ break; \
+ case 0x11: \
+ case 0x20: \
+ case 0x21: \
+ case 0x24: \
+ p = &s##n; \
+ arg = va_arg (ap, type S##n); \
+ break; \
+ case 0x13: \
+ case 0x14: \
+ case 0x23: \
+ p = &a##n[2]; \
+ arg = va_arg (ap, type S##n); \
+ break; \
+ default: \
+ FAIL (n, 73); \
+ break; \
+ } \
+ if (p) \
+ { \
+ ops \
+ } \
+ } \
+ va_end (ap); \
+ } \
+}