1 /* { dg-require-effective-target indirect_calls } */ 2 3 int owner(); 4 int clear(); 5 fixup()6static void fixup() { 7 clear(); 8 } 9 10 inline __attribute__ ((always_inline)) slowtrylock(void)11void slowtrylock(void) { 12 if (owner()) 13 fixup(); 14 } 15 fasttrylock(void (* slowfn)())16void fasttrylock(void (*slowfn)()) { 17 slowfn(); 18 } 19 trylock(void)20void trylock(void) { 21 fasttrylock(slowtrylock); 22 } 23