modernc.org/ccgo/v3@v3.16.14/lib/testdata/gcc-9.1.0/gcc/testsuite/gcc.c-torture/execute/pr43385.c (about) 1 /* PR c/43385 */ 2 3 extern void abort (void); 4 5 int e; 6 7 __attribute__((noinline)) void 8 foo (int x, int y) 9 { 10 if (__builtin_expect (x, 0) && y != 0) 11 e++; 12 } 13 14 __attribute__((noinline)) int 15 bar (int x, int y) 16 { 17 if (__builtin_expect (x, 0) && y != 0) 18 return 1; 19 else 20 return 0; 21 } 22 23 int 24 main (void) 25 { 26 int z = 0; 27 asm ("" : "+r" (z)); 28 foo (z + 2, z + 1); 29 if (e != 1) 30 abort (); 31 foo (z + 2, z); 32 if (e != 1) 33 abort (); 34 foo (z + 1, z + 1); 35 if (e != 2) 36 abort (); 37 foo (z + 1, z); 38 if (e != 2) 39 abort (); 40 foo (z, z + 1); 41 if (e != 2) 42 abort (); 43 foo (z, z); 44 if (e != 2) 45 abort (); 46 if (bar (z + 2, z + 1) != 1) 47 abort (); 48 if (bar (z + 2, z) != 0) 49 abort (); 50 if (bar (z + 1, z + 1) != 1) 51 abort (); 52 if (bar (z + 1, z) != 0) 53 abort (); 54 if (bar (z, z + 1) != 0) 55 abort (); 56 if (bar (z, z) != 0) 57 abort (); 58 return 0; 59 }