summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.c-torture/compat
diff options
context:
space:
mode:
authorlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>1997-08-19 07:34:40 +0000
committerlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>1997-08-19 07:34:40 +0000
commit912f9e817e0492ddc2a1c6ee4f41a427b43cf440 (patch)
tree335fa7ed68bccaabc938e142eabc167ac296372e /gcc/testsuite/gcc.c-torture/compat
parentd3739bcdc296c9e9dbebea8ef89de4479bdfb4ad (diff)
downloadgcc-912f9e817e0492ddc2a1c6ee4f41a427b43cf440.tar.gz
Initial revision
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@14840 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/testsuite/gcc.c-torture/compat')
-rw-r--r--gcc/testsuite/gcc.c-torture/compat/Makefile.in12
-rw-r--r--gcc/testsuite/gcc.c-torture/compat/configure.in15
-rw-r--r--gcc/testsuite/gcc.c-torture/compat/strct-layout.c69
-rw-r--r--gcc/testsuite/gcc.c-torture/compat/struct-align.c52
-rw-r--r--gcc/testsuite/gcc.c-torture/compat/struct-big.c54
-rw-r--r--gcc/testsuite/gcc.c-torture/compat/struct-i.c46
-rw-r--r--gcc/testsuite/gcc.c-torture/compat/struct-ic.c48
-rw-r--r--gcc/testsuite/gcc.c-torture/compat/struct-ii.c48
-rw-r--r--gcc/testsuite/gcc.c-torture/compat/struct-ret-1.c25
9 files changed, 369 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.c-torture/compat/Makefile.in b/gcc/testsuite/gcc.c-torture/compat/Makefile.in
new file mode 100644
index 00000000000..e6209dbc6c2
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compat/Makefile.in
@@ -0,0 +1,12 @@
+#### host, target, and site specific Makefile frags come in here.
+
+srcdir = .
+
+# Nothing to do...
+all:
+
+clean:
+ -rm -f *.o *.diff *~ *.bad core *.x
+
+distclean: clean
+ -rm -f Makefile config.status
diff --git a/gcc/testsuite/gcc.c-torture/compat/configure.in b/gcc/testsuite/gcc.c-torture/compat/configure.in
new file mode 100644
index 00000000000..a4a5810eb96
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compat/configure.in
@@ -0,0 +1,15 @@
+# This file is a shell script fragment that supplies the information
+# necessary to tailor a template configure script into the configure
+# script appropriate for this directory. For more information, check
+# any existing configure script.
+
+srctrigger=struct-big.c
+srcname="DejaGnu"
+
+# per-host:
+
+# per-target:
+
+target_makefile_frag=../config/mt-${target_alias}
+
+# post-target:
diff --git a/gcc/testsuite/gcc.c-torture/compat/strct-layout.c b/gcc/testsuite/gcc.c-torture/compat/strct-layout.c
new file mode 100644
index 00000000000..b77e1636dd2
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compat/strct-layout.c
@@ -0,0 +1,69 @@
+typedef struct
+{
+ char a;
+ int b;
+ char c;
+ short d;
+ double e;
+ char f;
+} T;
+
+#if COMPILER != 1
+f (T *x)
+{
+ x[0].a = 'a';
+ x[0].b = 47114711;
+ x[0].c = 'c';
+ x[0].d = 1234;
+ x[0].e = 3.141592897932;
+ x[0].f = '*';
+
+ x[1].a = 'A';
+ x[1].b = 71417141;
+ x[1].c = 'C';
+ x[1].d = 4321;
+ x[1].e = 2.718281828459;
+ x[1].f = '?';
+}
+#endif
+
+#if COMPILER != 2
+g (T *x)
+{
+ if (x[0].a != 'a')
+ abort ();
+ if (x[0].b != 47114711)
+ abort ();
+ if (x[0].c != 'c')
+ abort ();
+ if (x[0].d != 1234)
+ abort ();
+ if (x[0].e != 3.141592897932)
+ abort ();
+ if (x[0].f != '*')
+ abort ();
+
+ if (x[1].a != 'A')
+ abort ();
+ if (x[1].b != 71417141)
+ abort ();
+ if (x[1].c != 'C')
+ abort ();
+ if (x[1].d != 4321)
+ abort ();
+ if (x[1].e != 2.718281828459)
+ abort ();
+ if (x[1].f != '?')
+ abort ();
+}
+#endif
+
+#if COMPILER != 2
+main ()
+{
+ T x[2];
+ f (x);
+ g (x);
+ exit (0);
+}
+#endif
diff --git a/gcc/testsuite/gcc.c-torture/compat/struct-align.c b/gcc/testsuite/gcc.c-torture/compat/struct-align.c
new file mode 100644
index 00000000000..69fe6b335ca
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compat/struct-align.c
@@ -0,0 +1,52 @@
+typedef union
+{
+ struct {int a; int b;} s;
+ double d;
+} T;
+
+int h (T *);
+T g (T);
+
+#if COMPILER != 1
+h (T *x)
+{
+ if (x->s.a != 0 || x->s.b != 1)
+ abort ();
+}
+#endif
+
+#if COMPILER != 2
+T
+g (T x)
+{
+ if (x.s.a != 13 || x.s.b != 47)
+ abort ();
+ x.s.a = 0;
+ x.s.b = 1;
+ h (&x);
+ return x;
+}
+#endif
+
+#if COMPILER != 1
+f ()
+{
+ T x;
+ x.s.a = 13;
+ x.s.b = 47;
+ g (x);
+ if (x.s.a != 13 || x.s.b != 47)
+ abort ();
+ x = g (x);
+ if (x.s.a != 0 || x.s.b != 1)
+ abort ();
+}
+#endif
+
+#if COMPILER != 2
+main ()
+{
+ f ();
+ exit (0);
+}
+#endif
diff --git a/gcc/testsuite/gcc.c-torture/compat/struct-big.c b/gcc/testsuite/gcc.c-torture/compat/struct-big.c
new file mode 100644
index 00000000000..e1d5c6a6b37
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compat/struct-big.c
@@ -0,0 +1,54 @@
+typedef struct {int a, b, c, d, e;} T;
+
+int h (T *);
+T g (T);
+
+#if COMPILER != 1
+h (T *x)
+{
+ if (x->a != 0 || x->b != 1 || x->c != 2 || x->d != 3 || x->e != 4)
+ abort ();
+}
+#endif
+
+#if COMPILER != 2
+T
+g (T x)
+{
+ if (x.a != 13 || x.b != 47 || x.c != 123456 || x.d != -4711 || x.e != -2)
+ abort ();
+ x.a = 0;
+ x.b = 1;
+ x.c = 2;
+ x.d = 3;
+ x.e = 4;
+ h (&x);
+ return x;
+}
+#endif
+
+#if COMPILER != 1
+f ()
+{
+ T x;
+ x.a = 13;
+ x.b = 47;
+ x.c = 123456;
+ x.d = -4711;
+ x.e = -2;
+ g (x);
+ if (x.a != 13 || x.b != 47 || x.c != 123456 || x.d != -4711 || x.e != -2)
+ abort ();
+ x = g (x);
+ if (x.a != 0 || x.b != 1 || x.c != 2 || x.d != 3 || x.e != 4)
+ abort ();
+}
+#endif
+
+#if COMPILER != 2
+main ()
+{
+ f ();
+ exit (0);
+}
+#endif
diff --git a/gcc/testsuite/gcc.c-torture/compat/struct-i.c b/gcc/testsuite/gcc.c-torture/compat/struct-i.c
new file mode 100644
index 00000000000..25cbee6071e
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compat/struct-i.c
@@ -0,0 +1,46 @@
+typedef struct {int a;} T;
+
+int h (T *);
+T g (T);
+
+#if COMPILER != 1
+h (T *x)
+{
+ if (x->a != 47114711)
+ abort ();
+}
+#endif
+
+#if COMPILER != 2
+T
+g (T x)
+{
+ if (x.a != 13)
+ abort ();
+ x.a = 47114711;
+ h (&x);
+ return x;
+}
+#endif
+
+#if COMPILER != 1
+f ()
+{
+ T x;
+ x.a = 13;
+ g (x);
+ if (x.a != 13)
+ abort ();
+ x = g (x);
+ if (x.a != 47114711)
+ abort ();
+}
+#endif
+
+#if COMPILER != 2
+main ()
+{
+ f ();
+ exit (0);
+}
+#endif
diff --git a/gcc/testsuite/gcc.c-torture/compat/struct-ic.c b/gcc/testsuite/gcc.c-torture/compat/struct-ic.c
new file mode 100644
index 00000000000..7c5fa79e142
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compat/struct-ic.c
@@ -0,0 +1,48 @@
+typedef struct {int a; char b;} T;
+
+int h (T *);
+T g (T);
+
+#if COMPILER != 1
+h (T *x)
+{
+ if (x->a != 0 || x->b != 1)
+ abort ();
+}
+#endif
+
+#if COMPILER != 2
+T
+g (T x)
+{
+ if (x.a != 13 || x.b != 47)
+ abort ();
+ x.a = 0;
+ x.b = 1;
+ h (&x);
+ return x;
+}
+#endif
+
+#if COMPILER != 1
+f ()
+{
+ T x;
+ x.a = 13;
+ x.b = 47;
+ g (x);
+ if (x.a != 13 || x.b != 47)
+ abort ();
+ x = g (x);
+ if (x.a != 0 || x.b != 1)
+ abort ();
+}
+#endif
+
+#if COMPILER != 2
+main ()
+{
+ f ();
+ exit (0);
+}
+#endif
diff --git a/gcc/testsuite/gcc.c-torture/compat/struct-ii.c b/gcc/testsuite/gcc.c-torture/compat/struct-ii.c
new file mode 100644
index 00000000000..11ebc37edbd
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compat/struct-ii.c
@@ -0,0 +1,48 @@
+typedef struct {int a, b;} T;
+
+int h (T *);
+T g (T);
+
+#if COMPILER != 1
+h (T *x)
+{
+ if (x->a != 0 || x->b != 1)
+ abort ();
+}
+#endif
+
+#if COMPILER != 2
+T
+g (T x)
+{
+ if (x.a != 13 || x.b != 47)
+ abort ();
+ x.a = 0;
+ x.b = 1;
+ h (&x);
+ return x;
+}
+#endif
+
+#if COMPILER != 1
+f ()
+{
+ T x;
+ x.a = 13;
+ x.b = 47;
+ g (x);
+ if (x.a != 13 || x.b != 47)
+ abort ();
+ x = g (x);
+ if (x.a != 0 || x.b != 1)
+ abort ();
+}
+#endif
+
+#if COMPILER != 2
+main ()
+{
+ f ();
+ exit (0);
+}
+#endif
diff --git a/gcc/testsuite/gcc.c-torture/compat/struct-ret-1.c b/gcc/testsuite/gcc.c-torture/compat/struct-ret-1.c
new file mode 100644
index 00000000000..a585c8fdb40
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compat/struct-ret-1.c
@@ -0,0 +1,25 @@
+typedef struct { int re; int im; } T;
+
+T f (int, int);
+
+#if COMPILER != 1
+T
+f (int arg1, int arg2)
+{
+ T x;
+ x.re = arg1;
+ x.im = arg2;
+ return x;
+}
+#endif
+
+#if COMPILER != 2
+main ()
+{
+ T result;
+ result = f (3, 4);
+ if (result.re != 3 || result.im != 4)
+ abort ();
+ exit (0);
+}
+#endif