1extern void abort (); 2 3void __attribute__((noinline)) 4bar (unsigned long long i) 5{ 6 if (i) 7 abort (); 8} 9 10static void __attribute__((always_inline)) 11foo (unsigned long long *r) 12{ 13 int i; 14 15 for (i = 0; ; i++) 16 if (*r & ((unsigned long long)1 << (63 - i))) 17 break; 18 19 bar (i); 20} 21 22void __attribute__((noinline)) 23do_test (unsigned long long *r) 24{ 25 int i; 26 27 for (i = 0; i < 2; ++i) 28 foo (r); 29} 30 31int main() 32{ 33 unsigned long long r = 0x8000000000000001ull; 34 35 do_test (&r); 36 return 0; 37} 38