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