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)10 int 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