This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: PATCH [mainline] - Fix passing of zero-sized structs in apple-ppc-darwin mixed mode
- From: Alan Modra <amodra at bigpond dot net dot au>
- To: Janis Johnson <janis187 at us dot ibm dot com>
- Cc: gcc-patches at gcc dot gnu dot org
- Date: Fri, 2 Jul 2004 13:14:10 +0930
- Subject: Re: PATCH [mainline] - Fix passing of zero-sized structs in apple-ppc-darwin mixed mode
- References: <D37B274E-C614-11D8-88A3-000A95BA54A6@apple.com> <200406241957.i5OJvQa28432@makai.watson.ibm.com> <D31F636C-C791-11D8-AD33-000A95BA54A6@apple.com> <20040627111746.GN3469@bubble.modra.org> <200406271515.i5RFEwa33134@makai.watson.ibm.com> <20040628142007.GV3469@bubble.modra.org> <20040701170735.GA5002@us.ibm.com>
On Thu, Jul 01, 2004 at 10:07:35AM -0700, Janis Johnson wrote:
> Alan, the tests look good but not the change to compat.exp. I've been
> thinking of ways to specify additional pairs of options for specific
> tests, and scalar-by-value-7 can use that when it's ready.
Awww, I was quite proud of my little bit of tcl hacking.. Oh well,
here's the same thing done by duplicating the test.
gcc/testsuite/ChangeLog
* gcc.dg/compat/scalar-by-value-5_main.c: New.
* gcc.dg/compat/scalar-by-value-5_x.c: New.
* gcc.dg/compat/scalar-by-value-5_y.c: New.
* gcc.dg/compat/scalar-by-value-5.c: New.
* gcc.dg/compat/scalar-by-value-6_main.c: New.
* gcc.dg/compat/scalar-by-value-6_x.c: New.
* gcc.dg/compat/scalar-by-value-6_y.c: New.
* gcc.dg/compat/scalar-by-value-6.c: New.
* gcc.dg/compat/scalar-by-value-7_main.c: New.
* gcc.dg/compat/scalar-by-value-7_x.c: New.
* gcc.dg/compat/scalar-by-value-7_y.c: New.
* gcc.dg/compat/scalar-by-value-7.c: New.
* gcc.dg/compat/scalar-by-value-8_main.c: New.
* gcc.dg/compat/scalar-by-value-8_x.c: New.
* gcc.dg/compat/scalar-by-value-8_y.c: New.
* gcc.dg/compat/scalar-by-value-9_main.c: New.
* gcc.dg/compat/scalar-by-value-9_x.c: New.
* gcc.dg/compat/scalar-by-value-9_y.c: New.
* gcc.dg/compat/scalar-by-value-x.h: New.
* gcc.dg/compat/scalar-by-value-y.h: New.
Index: gcc/testsuite/gcc.dg/compat/scalar-by-value-5.c
===================================================================
RCS file: gcc/testsuite/gcc.dg/compat/scalar-by-value-5.c
diff -N gcc/testsuite/gcc.dg/compat/scalar-by-value-5.c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ gcc/testsuite/gcc.dg/compat/scalar-by-value-5.c 2 Jul 2004 03:22:24 -0000
@@ -0,0 +1,16 @@
+TEST_FUNCS (longlong_i, long long, int,
+ 1234LL, -987)
+TEST_FUNCS (longlong_d, long long, double,
+ 1234LL, -987.0)
+TEST_FUNCS (complexint_i, _Complex int, int,
+ 1234 + 567i, -987)
+TEST_FUNCS (complexint_d, _Complex int, double,
+ 1234 + 567i, -987.0)
+TEST_FUNCS (complexdouble_i, _Complex double, int,
+ 1234.0 + 567.0i, -987)
+TEST_FUNCS (complexdouble_d, _Complex double, double,
+ 1234.0 + 567.0i, -987.0)
+TEST_FUNCS (complexlonglong_i, _Complex long long, int,
+ 1234LL + 567LLi, -987)
+TEST_FUNCS (complexlonglong_d, _Complex long long, double,
+ 1234LL + 567LLi, -987.0)
Index: gcc/testsuite/gcc.dg/compat/scalar-by-value-5_main.c
===================================================================
RCS file: gcc/testsuite/gcc.dg/compat/scalar-by-value-5_main.c
diff -N gcc/testsuite/gcc.dg/compat/scalar-by-value-5_main.c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ gcc/testsuite/gcc.dg/compat/scalar-by-value-5_main.c 2 Jul 2004 03:22:24 -0000
@@ -0,0 +1,29 @@
+/* Test that function args can be passed in various positions to both fixed
+ and variable arg functions. */
+/* { dg-options "-O" } */
+
+extern void longlong_i_doit (void);
+extern void longlong_d_doit (void);
+extern void complexint_i_doit (void);
+extern void complexint_d_doit (void);
+extern void complexdouble_i_doit (void);
+extern void complexdouble_d_doit (void);
+extern void complexlonglong_i_doit (void);
+extern void complexlonglong_d_doit (void);
+
+int main (void)
+{
+ longlong_i_doit ();
+ longlong_d_doit ();
+#ifndef SKIP_COMPLEX_INT
+ complexint_i_doit ();
+ complexint_d_doit ();
+#endif
+ complexdouble_i_doit ();
+ complexdouble_d_doit ();
+#ifndef SKIP_COMPLEX_INT
+ complexlonglong_i_doit ();
+ complexlonglong_d_doit ();
+#endif
+ exit (0);
+}
Index: gcc/testsuite/gcc.dg/compat/scalar-by-value-5_x.c
===================================================================
RCS file: gcc/testsuite/gcc.dg/compat/scalar-by-value-5_x.c
diff -N gcc/testsuite/gcc.dg/compat/scalar-by-value-5_x.c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ gcc/testsuite/gcc.dg/compat/scalar-by-value-5_x.c 2 Jul 2004 03:22:24 -0000
@@ -0,0 +1,2 @@
+#include "scalar-by-value-x.h"
+#include "scalar-by-value-5.c"
Index: gcc/testsuite/gcc.dg/compat/scalar-by-value-5_y.c
===================================================================
RCS file: gcc/testsuite/gcc.dg/compat/scalar-by-value-5_y.c
diff -N gcc/testsuite/gcc.dg/compat/scalar-by-value-5_y.c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ gcc/testsuite/gcc.dg/compat/scalar-by-value-5_y.c 2 Jul 2004 03:22:24 -0000
@@ -0,0 +1,2 @@
+#include "scalar-by-value-y.h"
+#include "scalar-by-value-5.c"
Index: gcc/testsuite/gcc.dg/compat/scalar-by-value-6.c
===================================================================
RCS file: gcc/testsuite/gcc.dg/compat/scalar-by-value-6.c
diff -N gcc/testsuite/gcc.dg/compat/scalar-by-value-6.c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ gcc/testsuite/gcc.dg/compat/scalar-by-value-6.c 2 Jul 2004 03:22:24 -0000
@@ -0,0 +1,4 @@
+TEST_FUNCS (longdouble_i, long double, int, d, -987)
+TEST_FUNCS (longdouble_d, long double, double, d, -987.0)
+TEST_FUNCS (complexlongdouble_i, _Complex long double, int, cd, -987)
+TEST_FUNCS (complexlongdouble_d, _Complex long double, double, cd, -987.0)
Index: gcc/testsuite/gcc.dg/compat/scalar-by-value-6_main.c
===================================================================
RCS file: gcc/testsuite/gcc.dg/compat/scalar-by-value-6_main.c
diff -N gcc/testsuite/gcc.dg/compat/scalar-by-value-6_main.c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ gcc/testsuite/gcc.dg/compat/scalar-by-value-6_main.c 2 Jul 2004 03:22:24 -0000
@@ -0,0 +1,18 @@
+/* Test that function args can be passed in various positions to both fixed
+ and variable arg functions. */
+/* { dg-options "-O" } */
+/* { dg-options "-O -mlong-double-128" { target powerpc*-*-* } } */
+
+extern void longdouble_i_doit (void);
+extern void longdouble_d_doit (void);
+extern void complexlongdouble_i_doit (void);
+extern void complexlongdouble_d_doit (void);
+
+int main (void)
+{
+ longdouble_i_doit ();
+ longdouble_d_doit ();
+ complexlongdouble_i_doit ();
+ complexlongdouble_d_doit ();
+ exit (0);
+}
Index: gcc/testsuite/gcc.dg/compat/scalar-by-value-6_x.c
===================================================================
RCS file: gcc/testsuite/gcc.dg/compat/scalar-by-value-6_x.c
diff -N gcc/testsuite/gcc.dg/compat/scalar-by-value-6_x.c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ gcc/testsuite/gcc.dg/compat/scalar-by-value-6_x.c 2 Jul 2004 03:22:24 -0000
@@ -0,0 +1,6 @@
+#include "scalar-by-value-x.h"
+
+extern long double d;
+extern _Complex long double cd;
+
+#include "scalar-by-value-6.c"
Index: gcc/testsuite/gcc.dg/compat/scalar-by-value-6_y.c
===================================================================
RCS file: gcc/testsuite/gcc.dg/compat/scalar-by-value-6_y.c
diff -N gcc/testsuite/gcc.dg/compat/scalar-by-value-6_y.c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ gcc/testsuite/gcc.dg/compat/scalar-by-value-6_y.c 2 Jul 2004 03:22:24 -0000
@@ -0,0 +1,7 @@
+#define USE_MEMCMP 1
+#include "scalar-by-value-y.h"
+
+long double d = 1234.0L + 0x0.abcdp-70L;
+_Complex long double cd = 234.0L + 0x0.abcp-70L + 567.0Li +0x0defp-70Li;
+
+#include "scalar-by-value-6.c"
Index: gcc/testsuite/gcc.dg/compat/scalar-by-value-7.c
===================================================================
RCS file: gcc/testsuite/gcc.dg/compat/scalar-by-value-7.c
diff -N gcc/testsuite/gcc.dg/compat/scalar-by-value-7.c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ gcc/testsuite/gcc.dg/compat/scalar-by-value-7.c 2 Jul 2004 03:22:24 -0000
@@ -0,0 +1,4 @@
+TEST_FUNCS (vecint_i, vector int, int, v1, -987)
+TEST_FUNCS (vecint_d, vector int, double, v1, -987.0)
+TEST_FUNCS (vecfloat_i, vector float, int, v2, -987)
+TEST_FUNCS (vecfloat_d, vector float, double, v2, -987.0)
Index: gcc/testsuite/gcc.dg/compat/scalar-by-value-7_main.c
===================================================================
RCS file: gcc/testsuite/gcc.dg/compat/scalar-by-value-7_main.c
diff -N gcc/testsuite/gcc.dg/compat/scalar-by-value-7_main.c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ gcc/testsuite/gcc.dg/compat/scalar-by-value-7_main.c 2 Jul 2004 03:22:24 -0000
@@ -0,0 +1,30 @@
+/* Test that function args can be passed in various positions to both fixed
+ and variable arg functions. */
+/* { dg-options "-O" } */
+/* { dg-options "-O -mabi=no-altivec -mno-altivec" { target powerpc*-*-* } } */
+
+#ifndef SKIP_ATTRIBUTE
+#if defined (__powerpc__) || defined (__POWERPC__)
+#include "../altivec_check.h"
+#endif
+
+extern void vecint_i_doit (void);
+extern void vecint_d_doit (void);
+extern void vecfloat_i_doit (void);
+extern void vecfloat_d_doit (void);
+#endif
+
+int main (void)
+{
+#ifndef SKIP_ATTRIBUTE
+#if defined (__powerpc__) || defined (__POWERPC__)
+ altivec_check ();
+#endif
+
+ vecint_i_doit ();
+ vecint_d_doit ();
+ vecfloat_i_doit ();
+ vecfloat_d_doit ();
+#endif
+ exit (0);
+}
Index: gcc/testsuite/gcc.dg/compat/scalar-by-value-7_x.c
===================================================================
RCS file: gcc/testsuite/gcc.dg/compat/scalar-by-value-7_x.c
diff -N gcc/testsuite/gcc.dg/compat/scalar-by-value-7_x.c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ gcc/testsuite/gcc.dg/compat/scalar-by-value-7_x.c 2 Jul 2004 03:22:24 -0000
@@ -0,0 +1,13 @@
+/* { dg-options "-O" } */
+/* { dg-options "-O -mabi=no-altivec -mno-altivec" { target powerpc*-*-* } } */
+
+#ifndef SKIP_ATTRIBUTE
+#include "scalar-by-value-x.h"
+
+#define vector __attribute__ ((vector_size (16)))
+
+extern vector int v1;
+extern vector float v2;
+
+#include "scalar-by-value-7.c"
+#endif
Index: gcc/testsuite/gcc.dg/compat/scalar-by-value-7_y.c
===================================================================
RCS file: gcc/testsuite/gcc.dg/compat/scalar-by-value-7_y.c
diff -N gcc/testsuite/gcc.dg/compat/scalar-by-value-7_y.c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ gcc/testsuite/gcc.dg/compat/scalar-by-value-7_y.c 2 Jul 2004 03:22:24 -0000
@@ -0,0 +1,16 @@
+/* { dg-options "-O" } */
+/* { dg-options "-O -mabi=no-altivec -mno-altivec" { target powerpc*-*-* } } */
+
+#ifndef SKIP_ATTRIBUTE
+
+#define USE_MEMCMP 1
+#include "scalar-by-value-y.h"
+
+#define vector __attribute__ ((vector_size (16)))
+
+vector int v1 = {1, 2, 3, 4};
+vector float v2 = {1.0, 2.0, 3.0, 4.0};
+
+#include "scalar-by-value-7.c"
+
+#endif
Index: gcc/testsuite/gcc.dg/compat/scalar-by-value-8_main.c
===================================================================
RCS file: gcc/testsuite/gcc.dg/compat/scalar-by-value-8_main.c
diff -N gcc/testsuite/gcc.dg/compat/scalar-by-value-8_main.c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ gcc/testsuite/gcc.dg/compat/scalar-by-value-8_main.c 2 Jul 2004 03:22:24 -0000
@@ -0,0 +1,12 @@
+/* Repeat scalar-by-value-7 with different compile options. */
+/* { dg-options "-O" } */
+/* { dg-options "-O -mabi=no-altivec -maltivec" { target powerpc*-*-* } } */
+
+#if defined (__powerpc__) || defined (__POWERPC__)
+#include "scalar-by-value-7_main.c"
+#else
+int main (void)
+{
+ exit (0);
+}
+#endif
Index: gcc/testsuite/gcc.dg/compat/scalar-by-value-8_x.c
===================================================================
RCS file: gcc/testsuite/gcc.dg/compat/scalar-by-value-8_x.c
diff -N gcc/testsuite/gcc.dg/compat/scalar-by-value-8_x.c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ gcc/testsuite/gcc.dg/compat/scalar-by-value-8_x.c 2 Jul 2004 03:22:24 -0000
@@ -0,0 +1,5 @@
+/* { dg-options "-O" } */
+/* { dg-options "-O -mabi=no-altivec -maltivec" { target powerpc*-*-* } } */
+#if defined (__powerpc__) || defined (__POWERPC__)
+#include "scalar-by-value-7_x.c"
+#endif
Index: gcc/testsuite/gcc.dg/compat/scalar-by-value-8_y.c
===================================================================
RCS file: gcc/testsuite/gcc.dg/compat/scalar-by-value-8_y.c
diff -N gcc/testsuite/gcc.dg/compat/scalar-by-value-8_y.c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ gcc/testsuite/gcc.dg/compat/scalar-by-value-8_y.c 2 Jul 2004 03:22:24 -0000
@@ -0,0 +1,5 @@
+/* { dg-options "-O" } */
+/* { dg-options "-O -mabi=no-altivec -maltivec" { target powerpc*-*-* } } */
+#if defined (__powerpc__) || defined (__POWERPC__)
+#include "scalar-by-value-7_y.c"
+#endif
Index: gcc/testsuite/gcc.dg/compat/scalar-by-value-9_main.c
===================================================================
RCS file: gcc/testsuite/gcc.dg/compat/scalar-by-value-9_main.c
diff -N gcc/testsuite/gcc.dg/compat/scalar-by-value-9_main.c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ gcc/testsuite/gcc.dg/compat/scalar-by-value-9_main.c 2 Jul 2004 03:22:24 -0000
@@ -0,0 +1,12 @@
+/* Repeat scalar-by-value-7 with different compile options. */
+/* { dg-options "-O" } */
+/* { dg-options "-O -mabi=altivec -maltivec" { target powerpc*-*-* } } */
+
+#if defined (__powerpc__) || defined (__POWERPC__)
+#include "scalar-by-value-7_main.c"
+#else
+int main (void)
+{
+ exit (0);
+}
+#endif
Index: gcc/testsuite/gcc.dg/compat/scalar-by-value-9_x.c
===================================================================
RCS file: gcc/testsuite/gcc.dg/compat/scalar-by-value-9_x.c
diff -N gcc/testsuite/gcc.dg/compat/scalar-by-value-9_x.c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ gcc/testsuite/gcc.dg/compat/scalar-by-value-9_x.c 2 Jul 2004 03:22:24 -0000
@@ -0,0 +1,5 @@
+/* { dg-options "-O" } */
+/* { dg-options "-O -mabi=altivec -maltivec" { target powerpc*-*-* } } */
+#if defined (__powerpc__) || defined (__POWERPC__)
+#include "scalar-by-value-7_x.c"
+#endif
Index: gcc/testsuite/gcc.dg/compat/scalar-by-value-9_y.c
===================================================================
RCS file: gcc/testsuite/gcc.dg/compat/scalar-by-value-9_y.c
diff -N gcc/testsuite/gcc.dg/compat/scalar-by-value-9_y.c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ gcc/testsuite/gcc.dg/compat/scalar-by-value-9_y.c 2 Jul 2004 03:22:24 -0000
@@ -0,0 +1,5 @@
+/* { dg-options "-O" } */
+/* { dg-options "-O -mabi=altivec -maltivec" { target powerpc*-*-* } } */
+#if defined (__powerpc__) || defined (__POWERPC__)
+#include "scalar-by-value-7_y.c"
+#endif
Index: gcc/testsuite/gcc.dg/compat/scalar-by-value-x.h
===================================================================
RCS file: gcc/testsuite/gcc.dg/compat/scalar-by-value-x.h
diff -N gcc/testsuite/gcc.dg/compat/scalar-by-value-x.h
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ gcc/testsuite/gcc.dg/compat/scalar-by-value-x.h 2 Jul 2004 03:22:24 -0000
@@ -0,0 +1,77 @@
+#if DEBUG
+#include <stdio.h>
+#define DBG(x) fputs (x, stdout); fflush (stdout);
+#else
+#define DBG(x)
+#endif
+
+#define TEST_FUNCS(NAME, TYPE, PADT, VAL, VAL2) \
+extern void NAME##_f0 (TYPE a, PADT b); \
+extern void NAME##_f1 (PADT z0, TYPE a, PADT b); \
+extern void NAME##_f2 (PADT z0, PADT z1, TYPE a, PADT b); \
+extern void NAME##_f3 (PADT z0, PADT z1, PADT z2, TYPE a, PADT b); \
+extern void NAME##_f4 (PADT z0, PADT z1, PADT z2, PADT z3, TYPE a, \
+ PADT b); \
+extern void NAME##_f5 (PADT z0, PADT z1, PADT z2, PADT z3, PADT z4, \
+ TYPE a, PADT b); \
+extern void NAME##_f6 (PADT z0, PADT z1, PADT z2, PADT z3, PADT z4, \
+ PADT z5, TYPE a, PADT b); \
+extern void NAME##_f7 (PADT z0, PADT z1, PADT z2, PADT z3, PADT z4, \
+ PADT z5, PADT z6, TYPE a, PADT b); \
+extern void NAME##_f8 (PADT z0, PADT z1, PADT z2, PADT z3, PADT z4, \
+ PADT z5, PADT z6, PADT z7, TYPE a, PADT b); \
+extern void NAME##_f9 (PADT z0, PADT z1, PADT z2, PADT z3, PADT z4, \
+ PADT z5, PADT z6, PADT z7, PADT z8, TYPE a, \
+ PADT b); \
+extern void NAME##_fv (int n, ...); \
+ \
+void NAME##_doit (void) \
+{ \
+ NAME##_f0 (VAL, VAL2); \
+ DBG ("."); \
+ NAME##_f1 ((PADT) 0, VAL, VAL2); \
+ DBG ("."); \
+ NAME##_f2 ((PADT) 0, (PADT) 0, VAL, VAL2); \
+ DBG ("."); \
+ NAME##_f3 ((PADT) 0, (PADT) 0, (PADT) 0, VAL, VAL2); \
+ DBG ("."); \
+ NAME##_f4 ((PADT) 0, (PADT) 0, (PADT) 0, (PADT) 0, VAL, VAL2); \
+ DBG ("."); \
+ NAME##_f5 ((PADT) 0, (PADT) 0, (PADT) 0, (PADT) 0, (PADT) 0, \
+ VAL, VAL2); \
+ DBG ("."); \
+ NAME##_f6 ((PADT) 0, (PADT) 0, (PADT) 0, (PADT) 0, (PADT) 0, \
+ (PADT) 0, VAL, VAL2); \
+ DBG ("."); \
+ NAME##_f7 ((PADT) 0, (PADT) 0, (PADT) 0, (PADT) 0, (PADT) 0, \
+ (PADT) 0, (PADT) 0, VAL, VAL2); \
+ DBG ("."); \
+ NAME##_f8 ((PADT) 0, (PADT) 0, (PADT) 0, (PADT) 0, (PADT) 0, \
+ (PADT) 0, (PADT) 0, (PADT) 0, VAL, VAL2); \
+ DBG ("."); \
+ NAME##_f9 ((PADT) 0, (PADT) 0, (PADT) 0, (PADT) 0, (PADT) 0, \
+ (PADT) 0, (PADT) 0, (PADT) 0, (PADT) 0, VAL, VAL2); \
+ DBG ("."); \
+ NAME##_fv (0, VAL, VAL2); \
+ DBG ("."); \
+ NAME##_fv (1, (PADT) 0, VAL, VAL2); \
+ DBG ("."); \
+ NAME##_fv (2, (PADT) 0, (PADT) 0, VAL, VAL2); \
+ DBG ("."); \
+ NAME##_fv (3, (PADT) 0, (PADT) 0, (PADT) 0, VAL, VAL2); \
+ DBG ("."); \
+ NAME##_fv (4, (PADT) 0, (PADT) 0, (PADT) 0, (PADT) 0, VAL, VAL2); \
+ DBG ("."); \
+ NAME##_fv (5, (PADT) 0, (PADT) 0, (PADT) 0, (PADT) 0, (PADT) 0, \
+ VAL, VAL2); \
+ DBG ("."); \
+ NAME##_fv (6, (PADT) 0, (PADT) 0, (PADT) 0, (PADT) 0, (PADT) 0, \
+ (PADT) 0, VAL, VAL2); \
+ DBG ("."); \
+ NAME##_fv (7, (PADT) 0, (PADT) 0, (PADT) 0, (PADT) 0, (PADT) 0, \
+ (PADT) 0, (PADT) 0, VAL, VAL2); \
+ DBG ("."); \
+ NAME##_fv (8, (PADT) 0, (PADT) 0, (PADT) 0, (PADT) 0, (PADT) 0, \
+ (PADT) 0, (PADT) 0, (PADT) 0, VAL, VAL2); \
+ DBG ("\n"); \
+}
Index: gcc/testsuite/gcc.dg/compat/scalar-by-value-y.h
===================================================================
RCS file: gcc/testsuite/gcc.dg/compat/scalar-by-value-y.h
diff -N gcc/testsuite/gcc.dg/compat/scalar-by-value-y.h
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ gcc/testsuite/gcc.dg/compat/scalar-by-value-y.h 2 Jul 2004 03:22:24 -0000
@@ -0,0 +1,265 @@
+#if USE_MEMCMP
+#define TEST_FUNCS(NAME, TYPE, PADT, VAL, VAL2) \
+void NAME##_f0 (TYPE a, PADT b) \
+{ \
+ if (memcmp (&a, &VAL, sizeof (a)) != 0 || b != VAL2) \
+ abort (); \
+} \
+ \
+void NAME##_f1 (PADT z0, TYPE a, PADT b) \
+{ \
+ if (z0 != (PADT) 0 \
+ || memcmp (&a, &VAL, sizeof (a)) != 0 || b != VAL2) \
+ abort (); \
+} \
+ \
+void NAME##_f2 (PADT z0, PADT z1, TYPE a, PADT b) \
+{ \
+ if (z0 != (PADT) 0 \
+ || z1 != (PADT) 0 \
+ || memcmp (&a, &VAL, sizeof (a)) != 0 || b != VAL2) \
+ abort (); \
+} \
+ \
+void NAME##_f3 (PADT z0, PADT z1, PADT z2, TYPE a, PADT b) \
+{ \
+ if (z0 != (PADT) 0 \
+ || z1 != (PADT) 0 \
+ || z2 != (PADT) 0 \
+ || memcmp (&a, &VAL, sizeof (a)) != 0 || b != VAL2) \
+ abort (); \
+} \
+ \
+void NAME##_f4 (PADT z0, PADT z1, PADT z2, PADT z3, TYPE a, PADT b) \
+{ \
+ if (z0 != (PADT) 0 \
+ || z1 != (PADT) 0 \
+ || z2 != (PADT) 0 \
+ || z3 != (PADT) 0 \
+ || memcmp (&a, &VAL, sizeof (a)) != 0 || b != VAL2) \
+ abort (); \
+} \
+ \
+void NAME##_f5 (PADT z0, PADT z1, PADT z2, PADT z3, PADT z4, TYPE a, \
+ PADT b) \
+{ \
+ if (z0 != (PADT) 0 \
+ || z1 != (PADT) 0 \
+ || z2 != (PADT) 0 \
+ || z3 != (PADT) 0 \
+ || z4 != (PADT) 0 \
+ || memcmp (&a, &VAL, sizeof (a)) != 0 || b != VAL2) \
+ abort (); \
+} \
+ \
+void NAME##_f6 (PADT z0, PADT z1, PADT z2, PADT z3, PADT z4, PADT z5, \
+ TYPE a, PADT b) \
+{ \
+ if (z0 != (PADT) 0 \
+ || z1 != (PADT) 0 \
+ || z2 != (PADT) 0 \
+ || z3 != (PADT) 0 \
+ || z4 != (PADT) 0 \
+ || z5 != (PADT) 0 \
+ || memcmp (&a, &VAL, sizeof (a)) != 0 || b != VAL2) \
+ abort (); \
+} \
+ \
+void NAME##_f7 (PADT z0, PADT z1, PADT z2, PADT z3, PADT z4, PADT z5, \
+ PADT z6, TYPE a, PADT b) \
+{ \
+ if (z0 != (PADT) 0 \
+ || z1 != (PADT) 0 \
+ || z2 != (PADT) 0 \
+ || z3 != (PADT) 0 \
+ || z4 != (PADT) 0 \
+ || z5 != (PADT) 0 \
+ || z6 != (PADT) 0 \
+ || memcmp (&a, &VAL, sizeof (a)) != 0 || b != VAL2) \
+ abort (); \
+} \
+ \
+void NAME##_f8 (PADT z0, PADT z1, PADT z2, PADT z3, PADT z4, PADT z5, \
+ PADT z6, PADT z7, TYPE a, PADT b) \
+{ \
+ if (z0 != (PADT) 0 \
+ || z1 != (PADT) 0 \
+ || z2 != (PADT) 0 \
+ || z3 != (PADT) 0 \
+ || z4 != (PADT) 0 \
+ || z5 != (PADT) 0 \
+ || z6 != (PADT) 0 \
+ || z7 != (PADT) 0 \
+ || memcmp (&a, &VAL, sizeof (a)) != 0 || b != VAL2) \
+ abort (); \
+} \
+ \
+void NAME##_f9 (PADT z0, PADT z1, PADT z2, PADT z3, PADT z4, PADT z5, \
+ PADT z6, PADT z7, PADT z8, TYPE a, PADT b) \
+{ \
+ if (z0 != (PADT) 0 \
+ || z1 != (PADT) 0 \
+ || z2 != (PADT) 0 \
+ || z3 != (PADT) 0 \
+ || z4 != (PADT) 0 \
+ || z5 != (PADT) 0 \
+ || z6 != (PADT) 0 \
+ || z7 != (PADT) 0 \
+ || z8 != (PADT) 0 \
+ || memcmp (&a, &VAL, sizeof (a)) != 0 || b != VAL2) \
+ abort (); \
+} \
+ \
+void NAME##_fv (int n, ...) \
+{ \
+ __builtin_va_list ap; \
+ TYPE x; \
+ __builtin_va_start (ap, n); \
+ \
+ while (n-- != 0) \
+ if (__builtin_va_arg (ap, PADT) != (PADT) 0) \
+ abort (); \
+ \
+ x = __builtin_va_arg (ap, TYPE); \
+ if (memcmp (&x, &VAL, sizeof (x)) != 0 ) \
+ abort (); \
+ \
+ if (__builtin_va_arg (ap, PADT) != VAL2) \
+ abort (); \
+ \
+ __builtin_va_end (ap); \
+}
+
+#else
+
+#define TEST_FUNCS(NAME, TYPE, PADT, VAL, VAL2) \
+void NAME##_f0 (TYPE a, PADT b) \
+{ \
+ if (a != VAL || b != VAL2) \
+ abort (); \
+} \
+ \
+void NAME##_f1 (PADT z0, TYPE a, PADT b) \
+{ \
+ if (z0 != (PADT) 0 \
+ || a != VAL || b != VAL2) \
+ abort (); \
+} \
+ \
+void NAME##_f2 (PADT z0, PADT z1, TYPE a, PADT b) \
+{ \
+ if (z0 != (PADT) 0 \
+ || z1 != (PADT) 0 \
+ || a != VAL || b != VAL2) \
+ abort (); \
+} \
+ \
+void NAME##_f3 (PADT z0, PADT z1, PADT z2, TYPE a, PADT b) \
+{ \
+ if (z0 != (PADT) 0 \
+ || z1 != (PADT) 0 \
+ || z2 != (PADT) 0 \
+ || a != VAL || b != VAL2) \
+ abort (); \
+} \
+ \
+void NAME##_f4 (PADT z0, PADT z1, PADT z2, PADT z3, TYPE a, PADT b) \
+{ \
+ if (z0 != (PADT) 0 \
+ || z1 != (PADT) 0 \
+ || z2 != (PADT) 0 \
+ || z3 != (PADT) 0 \
+ || a != VAL || b != VAL2) \
+ abort (); \
+} \
+ \
+void NAME##_f5 (PADT z0, PADT z1, PADT z2, PADT z3, PADT z4, TYPE a, \
+ PADT b) \
+{ \
+ if (z0 != (PADT) 0 \
+ || z1 != (PADT) 0 \
+ || z2 != (PADT) 0 \
+ || z3 != (PADT) 0 \
+ || z4 != (PADT) 0 \
+ || a != VAL || b != VAL2) \
+ abort (); \
+} \
+ \
+void NAME##_f6 (PADT z0, PADT z1, PADT z2, PADT z3, PADT z4, PADT z5, \
+ TYPE a, PADT b) \
+{ \
+ if (z0 != (PADT) 0 \
+ || z1 != (PADT) 0 \
+ || z2 != (PADT) 0 \
+ || z3 != (PADT) 0 \
+ || z4 != (PADT) 0 \
+ || z5 != (PADT) 0 \
+ || a != VAL || b != VAL2) \
+ abort (); \
+} \
+ \
+void NAME##_f7 (PADT z0, PADT z1, PADT z2, PADT z3, PADT z4, PADT z5, \
+ PADT z6, TYPE a, PADT b) \
+{ \
+ if (z0 != (PADT) 0 \
+ || z1 != (PADT) 0 \
+ || z2 != (PADT) 0 \
+ || z3 != (PADT) 0 \
+ || z4 != (PADT) 0 \
+ || z5 != (PADT) 0 \
+ || z6 != (PADT) 0 \
+ || a != VAL || b != VAL2) \
+ abort (); \
+} \
+ \
+void NAME##_f8 (PADT z0, PADT z1, PADT z2, PADT z3, PADT z4, PADT z5, \
+ PADT z6, PADT z7, TYPE a, PADT b) \
+{ \
+ if (z0 != (PADT) 0 \
+ || z1 != (PADT) 0 \
+ || z2 != (PADT) 0 \
+ || z3 != (PADT) 0 \
+ || z4 != (PADT) 0 \
+ || z5 != (PADT) 0 \
+ || z6 != (PADT) 0 \
+ || z7 != (PADT) 0 \
+ || a != VAL || b != VAL2) \
+ abort (); \
+} \
+ \
+void NAME##_f9 (PADT z0, PADT z1, PADT z2, PADT z3, PADT z4, PADT z5, \
+ PADT z6, PADT z7, PADT z8, TYPE a, PADT b) \
+{ \
+ if (z0 != (PADT) 0 \
+ || z1 != (PADT) 0 \
+ || z2 != (PADT) 0 \
+ || z3 != (PADT) 0 \
+ || z4 != (PADT) 0 \
+ || z5 != (PADT) 0 \
+ || z6 != (PADT) 0 \
+ || z7 != (PADT) 0 \
+ || z8 != (PADT) 0 \
+ || a != VAL || b != VAL2) \
+ abort (); \
+} \
+ \
+void NAME##_fv (int n, ...) \
+{ \
+ __builtin_va_list ap; \
+ \
+ __builtin_va_start (ap, n); \
+ \
+ while (n-- != 0) \
+ if (__builtin_va_arg (ap, PADT) != (PADT) 0) \
+ abort (); \
+ \
+ if (__builtin_va_arg (ap, TYPE) != VAL) \
+ abort (); \
+ \
+ if (__builtin_va_arg (ap, PADT) != VAL2) \
+ abort (); \
+ \
+ __builtin_va_end (ap); \
+}
+
+#endif