summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.target/i386/pr77856.c
blob: 81556bef7cf687da4a2d5181ffcd6146bc6edc38 (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
/* { dg-do run } */
/* { dg-options "-O2" } */

extern void abort (void);

unsigned a, e;

struct S0
{
  int f1;
  int f8;
} c = {4, 6};

int b, f, g, h, i, j, l, p;
short d, o = -7;
char k, n = 5;

unsigned fn1 (int p1, int p2)
{
  return p2 >= 2 || p1 >> p2 ? p1 : p1 << p2;
}

static short fn2 (struct S0 p1)
{
  int *q = 0;
  int r = 7;
  if (!a)
    {
      c.f1 = 1;
      for (; c.f1; c.f1--)
	if (fn1 (10 != 0, p1.f8))
	  {
	    short s = 9 << ~o % (d ^ n);
	    int t = s >> h % ~d;
	    p = r;
	    r = s | p * (d && 9) | t;
	    int u = i & c.f1;
	    unsigned v = ~(~(u & h) | (~(8 >> c.f1) & i));
	    int w = v;
	    if (u < 9)
	      w = c.f1;
	    if (i > h && u)
	      {
		__builtin_printf ("%d\n", c.f1);
		continue;
	      }
	    c.f1 = w;
	    if (!p)
	      continue;
	    return 0;
	  }
      for (;;)
	*q = 0;
    }
  return 0;
}

static void fn3 ()
{
  fn2 (c);
  l = c.f1 < b;
  if (l)
    {
    L1:
      e = l | j / e % ~f;
      j = f - 4 % k < c.f1 / e / b - j - 1;
      if (l)
	{
	  __builtin_printf ("%d\n", b);
	  goto L1;
	}
      int m[245];
      g = m[2];
    }
}

int main ()
{
  fn3 ();
  if (c.f1 != 1)
    abort ();
  return 0;
}