1 /* PR c/6677 */ 2 /* Verify that GCC doesn't perform illegal simplifications 3 when folding constants. */ 4 5 #include <limits.h> 6 7 extern void abort (void); 8 extern void exit (int); 9 main(void)10int main (void) 11 { 12 int i; 13 signed char j; 14 unsigned char k; 15 16 i = SCHAR_MAX; 17 18 j = ((signed char) (i << 1)) / 2; 19 20 if (j != -1) 21 abort(); 22 23 j = ((signed char) (i * 2)) / 2; 24 25 if (j != -1) 26 abort(); 27 28 i = UCHAR_MAX; 29 30 k = ((unsigned char) (i << 1)) / 2; 31 32 if (k != UCHAR_MAX/2) 33 abort(); 34 35 k = ((unsigned char) (i * 2)) / 2; 36 37 if (k != UCHAR_MAX/2) 38 abort(); 39 40 exit(0); 41 } 42