1 /* PR middle-end/87290 */ 2 3 int c; 4 5 __attribute__((noipa)) void f0(void)6f0 (void) 7 { 8 c++; 9 } 10 11 __attribute__((noipa)) int f1(int x)12f1 (int x) 13 { 14 return x % 16 == 13; 15 } 16 17 __attribute__((noipa)) int f2(int x)18f2 (int x) 19 { 20 return x % 16 == -13; 21 } 22 23 __attribute__((noipa)) void f3(int x)24f3 (int x) 25 { 26 if (x % 16 == 13) 27 f0 (); 28 } 29 30 __attribute__((noipa)) void f4(int x)31f4 (int x) 32 { 33 if (x % 16 == -13) 34 f0 (); 35 } 36 37 int main()38main () 39 { 40 int i, j; 41 for (i = -30; i < 30; i++) 42 { 43 if (f1 (13 + i * 16) != (i >= 0) || f2 (-13 + i * 16) != (i <= 0)) 44 __builtin_abort (); 45 f3 (13 + i * 16); 46 if (c != (i >= 0)) 47 __builtin_abort (); 48 f4 (-13 + i * 16); 49 if (c != 1 + (i == 0)) 50 __builtin_abort (); 51 for (j = 1; j < 16; j++) 52 { 53 if (f1 (13 + i * 16 + j) || f2 (-13 + i * 16 + j)) 54 __builtin_abort (); 55 f3 (13 + i * 16 + j); 56 f4 (-13 + i * 16 + j); 57 } 58 if (c != 1 + (i == 0)) 59 __builtin_abort (); 60 c = 0; 61 } 62 return 0; 63 } 64