summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.c-torture/compile/930529-1.c
blob: 70b2cb8f90cab3999b78cd8e8fbc5226eae8d24a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
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);
}