summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.c-torture/compile/930529-1.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/gcc.c-torture/compile/930529-1.c')
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/930529-1.c83
1 files changed, 83 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.c-torture/compile/930529-1.c b/gcc/testsuite/gcc.c-torture/compile/930529-1.c
new file mode 100644
index 000000000..70b2cb8f9
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/930529-1.c
@@ -0,0 +1,83 @@
+struct r
+{
+ int d1, d2;
+};
+
+struct km
+{
+ int d;
+};
+
+struct f1
+{
+ char *fn;
+ char *fd;
+ char *fs;
+ char *ic;
+ void (*ff) ();
+};
+
+int g ();
+
+int y;
+struct r *bs;
+int bv;
+
+void b ();
+char *w ();
+
+struct km **q;
+char **mns;
+int nm;
+struct f1 **z;
+
+f (char *km, char *h)
+{
+ struct f1 *t;
+ int map = midn(km, strlen(km));
+ int V;
+ int c;
+ struct r r;
+ struct f1 *cm;
+
+ if (!g(&V, &cm, h, strlen(h)))
+ {
+ c = (cm - z[V]);
+ goto L;
+ }
+
+ for (c = 0; c < nm; c++)
+ if (!strcmp (h, mns[c]))
+ {
+ V = -1;
+ goto L;
+ }
+
+ for (c = 0; c < y; c++)
+ {
+ if (!memcmp (&bs[c], &r, 8))
+ goto L;
+ }
+
+ h = w (&r);
+ if (!bv)
+ {
+ bs = g (8);
+ t = (struct f1 *)g (20);
+ }
+ else
+ {
+ bs = g (bs, y * 8);
+ z[bv] = cr (z[bv], (1 + y) * 20);
+ t = &z[bv][y - 1];
+ }
+ bs[y - 1] = r;
+ t->fs[0] = sp (y - 1);
+ t->fs[1] = 0;
+ t->ic = 0;
+ t->fd = 0;
+ t->fn = cs (h);
+ t->ff = b;
+ L:
+ g (q[map], V, c);
+}