gcc/
[official-gcc.git] / gcc / testsuite / gcc.c-torture / execute / 20040409-3.c
blob07aa99cee1f29658c8c23e466b743274d4b7b0a7
1 #include <limits.h>
3 extern void abort ();
5 int test1(int x)
7 return ~(x ^ INT_MIN);
10 unsigned int test1u(unsigned int x)
12 return ~(x ^ (unsigned int)INT_MIN);
15 int test2(int x)
17 return ~(x + INT_MIN);
20 unsigned int test2u(unsigned int x)
22 return ~(x + (unsigned int)INT_MIN);
25 int test3(int x)
27 return ~(x - INT_MIN);
30 unsigned int test3u(unsigned int x)
32 return ~(x - (unsigned int)INT_MIN);
35 int test4(int x)
37 int y = INT_MIN;
38 return ~(x ^ y);
41 unsigned int test4u(unsigned int x)
43 unsigned int y = (unsigned int)INT_MIN;
44 return ~(x ^ y);
47 int test5(int x)
49 int y = INT_MIN;
50 return ~(x + y);
53 unsigned int test5u(unsigned int x)
55 unsigned int y = (unsigned int)INT_MIN;
56 return ~(x + y);
59 int test6(int x)
61 int y = INT_MIN;
62 return ~(x - y);
65 unsigned int test6u(unsigned int x)
67 unsigned int y = (unsigned int)INT_MIN;
68 return ~(x - y);
73 void test(int a, int b)
75 if (test1(a) != b)
76 abort();
77 if (test2(a) != b)
78 abort();
79 if (test3(a) != b)
80 abort();
81 if (test4(a) != b)
82 abort();
83 if (test5(a) != b)
84 abort();
85 if (test6(a) != b)
86 abort();
89 void testu(unsigned int a, unsigned int b)
91 if (test1u(a) != b)
92 abort();
93 if (test2u(a) != b)
94 abort();
95 if (test3u(a) != b)
96 abort();
97 if (test4u(a) != b)
98 abort();
99 if (test5u(a) != b)
100 abort();
101 if (test6u(a) != b)
102 abort();
106 int main()
108 #if INT_MAX == 2147483647
109 test(0x00000000,0x7fffffff);
110 test(0x80000000,0xffffffff);
111 test(0x12345678,0x6dcba987);
112 test(0x92345678,0xedcba987);
113 test(0x7fffffff,0x00000000);
114 test(0xffffffff,0x80000000);
116 testu(0x00000000,0x7fffffff);
117 testu(0x80000000,0xffffffff);
118 testu(0x12345678,0x6dcba987);
119 testu(0x92345678,0xedcba987);
120 testu(0x7fffffff,0x00000000);
121 testu(0xffffffff,0x80000000);
122 #endif
124 #if INT_MAX == 32767
125 test(0x0000,0x7fff);
126 test(0x8000,0xffff);
127 test(0x1234,0x6dcb);
128 test(0x9234,0xedcb);
129 test(0x7fff,0x0000);
130 test(0xffff,0x8000);
132 testu(0x0000,0x7fff);
133 testu(0x8000,0xffff);
134 testu(0x1234,0x6dcb);
135 testu(0x9234,0xedcb);
136 testu(0x7fff,0x0000);
137 testu(0xffff,0x8000);
138 #endif
140 return 0;