1 extern void abort (); 2 3 void __attribute__((noinline)) bar(unsigned long long i)4bar (unsigned long long i) 5 { 6 if (i) 7 abort (); 8 } 9 10 static void __attribute__((always_inline)) foo(unsigned long long * r)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 22 void __attribute__((noinline)) do_test(unsigned long long * r)23do_test (unsigned long long *r) 24 { 25 int i; 26 27 for (i = 0; i < 2; ++i) 28 foo (r); 29 } 30 main()31int main() 32 { 33 unsigned long long r = 0x8000000000000001ull; 34 35 do_test (&r); 36 return 0; 37 } 38