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
|
/* PR tree-optimization/110726 */
#define DECLS(n,VOL) \
__attribute__((noinline,noclone)) \
int h##n(VOL int A, VOL int B){ \
return (A | B) & (A == B); \
} \
__attribute__((noinline,noclone)) \
int i##n(VOL int A, VOL int B){ \
return A | (A == B); \
} \
__attribute__((noinline,noclone)) \
int k##n(VOL int A, VOL int B){ \
return (A & B) | (A == B); \
} \
DECLS(0,)
DECLS(1,volatile)
int values[] = { 0, 1, 2, 3, -1, -2, -3, 0x10080 };
int numvalues = sizeof(values)/sizeof(values[0]);
int main(){
for(int A = 0; A < numvalues; A++)
for(int B = 0; B < numvalues; B++)
{
int a = values[A];
int b = values[B];
if (h0 (a, b) != h1 (a, b)) __builtin_abort();
if (i0 (a, b) != i1 (a, b)) __builtin_abort();
if (k0 (a, b) != k1 (a, b)) __builtin_abort();
}
}
|