OSDN Git Service

PR middle-end/40692
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.c-torture / execute / shiftopt-1.c
1 /* Copyright (C) 2002  Free Software Foundation
2
3    Check that constant folding of shift operations is working.
4
5    Roger Sayle, 10th October 2002.  */
6
7 extern void abort (void);
8 extern void link_error (void);
9
10 void
11 utest (unsigned int x)
12 {
13   if (x >> 0 != x)
14     link_error ();
15
16   if (x << 0 != x)
17     link_error ();
18
19   if (0 << x != 0)
20     link_error ();
21
22   if (0 >> x != 0)
23     link_error ();
24
25   if (-1 >> x != -1)
26     link_error ();
27
28   if (~0 >> x != ~0)
29     link_error ();
30 }
31
32 void
33 stest (int x)
34 {
35   if (x >> 0 != x)
36     link_error ();
37
38   if (x << 0 != x)
39     link_error ();
40
41   if (0 << x != 0)
42     link_error ();
43
44   if (0 >> x != 0)
45     link_error ();
46 }
47
48 int
49 main ()
50 {
51   utest(9);
52   utest(0);
53
54   stest(9);
55   stest(0);
56
57   return 0;
58 }
59
60 #ifndef __OPTIMIZE__
61 void
62 link_error ()
63 {
64   abort ();
65 }
66 #endif
67