/* APPLE LOCAL file ARM 5814138 */ /* Sequential if statements were being translated into conditionally- executed instructions with an incorrect condition. */ /* { dg-do run } */ /* { dg-options "-O2" } */ int bug (int n1, int n2, int *d1, int *d2) { int flag = 0, test, x, x1, x2; while (n1 != 0 && n2 != 0) { x1 = *d1, x2 = *d2; test = x1 - x2; if (test >= 0) x = x2, d2++, n2--, flag ^= 2; if (test <= 0) x = x1, d1++, n1--, flag ^= 1; if (flag == 3) return 1; } return 0; } int arr1[5] = {1, 2, 3, 4, 5}; int arr2[5] = {0, -1, -2, -3, -4}; int arr3[5] = {7, 8, 9, 10, 11}; int main (void) { return bug (5, 5, arr1, arr2) || bug (5, 5, arr1, arr3); }