/* 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(); } }