1/* PR c/6677 */
2/* Verify that GCC doesn't perform illegal simplifications
3   when folding constants.  */
4
5#include <limits.h>
6
7extern void abort (void);
8extern void exit (int);
9
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