OSDN Git Service

PR rtl-optimization/47337
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.c-torture / execute / pr47337.c
1 /* PR rtl-optimization/47337 */
2
3 static unsigned int a[256], b = 0;
4 static char c = 0;
5 static int d = 0, *f = &d;
6 static long long e = 0;
7
8 static short
9 foo (long long x, long long y)
10 {
11   return x / y;
12 }
13
14 static char
15 bar (char x, char y)
16 {
17   return x - y;
18 }
19
20 static int
21 baz (int x, int y)
22 {
23   *f = (y != (short) (y * 3));
24   for (c = 0; c < 2; c++)
25     {
26     lab:
27       if (d)
28         {
29           if (e)
30             e = 1;
31           else
32             return x;
33         }
34       else
35         {
36           d = 1;
37           goto lab;
38         }
39       f = &d;
40     }
41   return x;
42 }
43
44 static void
45 fnx (unsigned long long x, int y)
46 {
47   if (!y)
48     {
49       b = a[b & 1];
50       b = a[b & 1];
51       b = a[(b ^ (x & 1)) & 1];
52       b = a[(b ^ (x & 1)) & 1];
53     }
54 }
55
56 char *volatile w = "2";
57
58 int
59 main ()
60 {
61   int h = 0;
62   unsigned int k = 0;
63   int l[8];
64   int i, j;
65
66   if (__builtin_strcmp (w, "1") == 0)
67     h = 1;
68
69   for (i = 0; i < 256; i++)
70     {
71       for (j = 8; j > 0; j--)
72         k = 1;
73       a[i] = k;
74     }
75   for (i = 0; i < 8; i++)
76     l[i] = 0;
77
78   d = bar (c, c);
79   d = baz (c, 1 | foo (l[0], 10));
80   fnx (d, h);
81   fnx (e, h);
82
83   if (d != 0)
84     __builtin_abort ();
85   return 0;
86 }