OSDN Git Service

24a60062c17463793f74e93687743d2aa66ed7ef
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.dg / tree-ssa / ssa-ccp-32.c
1 /* { dg-do run } */
2 /* { dg-options "-O" } */
3
4 extern void link_error (void);
5 unsigned int __attribute__((noinline,noclone))
6 test0 (unsigned int a)
7 {
8   a = a & 1;
9   a = a << 1 | a >> (sizeof (unsigned int) * 8 - 1);
10   if (a & 1)
11     {
12       a = a | 4;
13       link_error ();
14     }
15   if (a & 4)
16     link_error ();
17   return a;
18 }
19 int __attribute__((noinline,noclone))
20 test1 (int a)
21 {
22   a |= 1;
23   a = a << (sizeof (int) * 8 - 1);
24   if (a >= 0)
25     link_error ();
26   a = a * 4;
27   if (a & ~3)
28     link_error ();
29   if (a == -1)
30     link_error ();
31   return a;
32 }
33 int __attribute__((noinline,noclone))
34 test2 (int a)
35 {
36   a = a | 0xff;
37   a = a + 1;
38   if (a & 0xff)
39     link_error ();
40   a = -a;
41   if (a & 0xff)
42     link_error ();
43   a = a - 1;
44   if (a & 0xff != 0xff)
45     link_error ();
46   return a;
47 }
48 extern void abort (void);
49 int main()
50 {
51   if (test0 (1) != 2)
52     abort ();
53   if (test1 (0) != 0)
54     abort ();
55   if (test2 (-1) != -1)
56     abort ();
57   return 0;
58 }