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 utest(unsigned int x)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 32 void stest(int x)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 48 int main()49main () 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 link_error()62link_error () 63 { 64 abort (); 65 } 66 #endif 67 68