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