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
7extern void abort (void);
8extern void link_error (void);
9
10void
11utest (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
32void
33stest (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
48int
49main ()
50{
51  utest(9);
52  utest(0);
53
54  stest(9);
55  stest(0);
56
57  return 0;
58}
59
60#ifndef __OPTIMIZE__
61void
62link_error ()
63{
64  abort ();
65}
66#endif
67
68