1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
|
/* { dg-do run } */
/* { dg-options "-O2 -fno-tree-ccp -fno-tree-dominator-opts" } */
/* Tests generated via */
#if 0
#include <stdio.h>
int main(int argc, char **argv)
{
int amin, amax, bmin, bmax, a, b;
int testno = 0;
int min = atoi (argv[1]);
int max = atoi (argv[2]);
char op = argv[3][0];
printf ("/* Testing range [%d, %d] with operator %c. */\n", min, max, op);
printf ("extern void abort (void);\n");
for (amin = min; amin <= max; ++amin)
for (amax = amin; amax <= max; ++amax)
for (bmin = min; bmin <= max; ++bmin)
for (bmax = bmin; bmax <= max; ++bmax)
{
++testno;
printf ("int test%d (int a, int b)\n"
"{\n"
" if (a >= %d && a <= %d && b >= %d && b <= %d)\n"
" {\n"
" int x = a %c b;\n"
" if (0\n", testno, amin, amax, bmin, bmax, op);
for (a = amin; a <= amax; ++a)
for (b = bmin; b <= bmax; ++b)
printf ("|| x == (%d %c %d)\n", a, op, b);
printf (" ) return 0;\n"
" abort ();\n"
" }\n"
" return 0;\n"
"}\n");
}
printf ("int main()\n"
"{\n"
" int a, b;\n"
" for (a = %d; a <= %d; ++a)\n"
" for (b = %d; b <= %d; ++b)\n"
" {\n", min, max, min, max);
for (; testno > 0; --testno)
printf (" test%d (a, b);\n", testno);
printf (" }\n"
" return 0;\n"
"}\n");
return 0;
}
#endif
extern void abort (void);
int test381 (int a, int b)
{
if (a >= -3 && a <= -1 && b >= -2 && b <= 3)
{
int x = a | b;
if (x == (-3 | -2)
|| x == (-3 | -1)
|| x == (-3 | 0)
|| x == (-3 | 1)
|| x == (-3 | 2)
|| x == (-3 | 3)
|| x == (-2 | -2)
|| x == (-2 | -1)
|| x == (-2 | 0)
|| x == (-2 | 1)
|| x == (-2 | 2)
|| x == (-2 | 3)
|| x == (-1 | -2)
|| x == (-1 | -1)
|| x == (-1 | 0)
|| x == (-1 | 1)
|| x == (-1 | 2)
|| x == (-1 | 3))
return 0;
abort ();
}
return 0;
}
int test900 (int a, int b)
{
if (a >= -1 && a <= 2 && b >= 3 && b <= 3)
{
int x = a & b;
if (x == (-1 & 3)
|| x == (0 & 3)
|| x == (1 & 3)
|| x == (2 & 3))
return 0;
abort ();
}
return 0;
}
int main()
{
int a, b;
for (a = -4; a < 4; ++a)
for (b = -4; b < 4; ++b)
{
test381 (a, b);
test900 (a, b);
}
return 0;
}
|