Small ChangeLog tweak.
[official-gcc.git] / gcc / testsuite / gcc.c-torture / execute / 20040409-1.c
blob1e81edb365f24e8bbb80150e85ef7d6e3c74a9e1
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,0x80000000);
110 test(0x80000000,0x00000000);
111 test(0x12345678,0x92345678);
112 test(0x92345678,0x12345678);
113 test(0x7fffffff,0xffffffff);
114 test(0xffffffff,0x7fffffff);
116 testu(0x00000000,0x80000000);
117 testu(0x80000000,0x00000000);
118 testu(0x12345678,0x92345678);
119 testu(0x92345678,0x12345678);
120 testu(0x7fffffff,0xffffffff);
121 testu(0xffffffff,0x7fffffff);
122 #endif
124 #if INT_MAX == 32767
125 test(0x0000,0x8000);
126 test(0x8000,0x0000);
127 test(0x1234,0x9234);
128 test(0x9234,0x1234);
129 test(0x7fff,0xffff);
130 test(0xffff,0x7fff);
132 testu(0x0000,0x8000);
133 testu(0x8000,0x0000);
134 testu(0x1234,0x9234);
135 testu(0x9234,0x1234);
136 testu(0x7fff,0xffff);
137 testu(0xffff,0x7fff);
138 #endif
140 return 0;