1 /* { dg-require-effective-target untyped_assembly } */
2
3 struct r
4 {
5 int d1, d2;
6 };
7
8 struct km
9 {
10 int d;
11 };
12
13 struct f1
14 {
15 char *fn;
16 char *fd;
17 char *fs;
18 char *ic;
19 void (*ff) ();
20 };
21
22 int g ();
23
24 int y;
25 struct r *bs;
26 int bv;
27
28 void b ();
29 char *w ();
30
31 struct km **q;
32 char **mns;
33 int nm;
34 struct f1 **z;
35
f(char * km,char * h)36 f (char *km, char *h)
37 {
38 struct f1 *t;
39 int map = midn(km, strlen(km));
40 int V;
41 int c;
42 struct r r;
43 struct f1 *cm;
44
45 if (!g(&V, &cm, h, strlen(h)))
46 {
47 c = (cm - z[V]);
48 goto L;
49 }
50
51 for (c = 0; c < nm; c++)
52 if (!strcmp (h, mns[c]))
53 {
54 V = -1;
55 goto L;
56 }
57
58 for (c = 0; c < y; c++)
59 {
60 if (!memcmp (&bs[c], &r, 8))
61 goto L;
62 }
63
64 h = w (&r);
65 if (!bv)
66 {
67 bs = g (8);
68 t = (struct f1 *)g (20);
69 }
70 else
71 {
72 bs = g (bs, y * 8);
73 z[bv] = cr (z[bv], (1 + y) * 20);
74 t = &z[bv][y - 1];
75 }
76 bs[y - 1] = r;
77 t->fs[0] = sp (y - 1);
78 t->fs[1] = 0;
79 t->ic = 0;
80 t->fd = 0;
81 t->fn = cs (h);
82 t->ff = b;
83 L:
84 g (q[map], V, c);
85 }
86