summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.c-torture/compile/20011109-1.c
blob: f1987a74bf2819c1df8c4ac77a3e496a51913f46 (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
typedef struct { short x[4]; } S;
typedef struct { unsigned int a, b, c; S *d; } T;

S *(*foo) (T *, int, int, int, int);
unsigned short *(*bar)(const T *);
unsigned short baz(T *,const int);

T *die (void)
{
  typedef struct { unsigned int a, b, e; double f, g; } U;

  char h[8], i[2053], j[2053];
  double k, l, m;
  U n;
  T *o;
  unsigned short p;
  int q, r;
  long s;
  unsigned short *t;
  S *u;
  unsigned char *v, *w;
  unsigned int x;

  o = 0;
  for (x = 0; x < n.e; x++)
    {
      l = 1.0;
      if (n.g - n.f <= 1.0)
	l = ((1 << o->c) - 1) / (n.g - n.f);
      v = w;
      for (r = o->b - 1; r >= 0; r--)
	{
	  u = foo (o, 0, r, o->a, 1);
	  if (!u)
	    break;
	  t = bar (o);
	  for (q = 0; q < (int) o->a; q++)
	    {
	      h[0] = *v;
	      s = *v++;
	      k = (double) s;
	      m = l*k;
	      p = m < 0 ? 0 : m > (1 << o->c) - 1 ? (1 << o->c) - 1 : m + 0.5;
	      p = baz (o,p);
	      t[q] = p;
	      *u++ = o->d[p];
	    }
	}
    }
  return o;
}