OSDN Git Service

PR middle-end/40692
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.c-torture / execute / 20020614-1.c
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
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 }