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