1/* { dg-do run } */ 2/* { dg-require-ifunc "" } */ 3/* { dg-options "-Wno-pmf-conversions" } */ 4 5#include <stdio.h> 6 7struct Klass 8{ 9 int implementation (); 10 int magic (); 11 static void *resolver (); 12}; 13 14int Klass::implementation (void) 15{ 16 printf ("'ere I am JH\n"); 17 return 0; 18} 19 20void *Klass::resolver (void) 21{ 22 int (Klass::*pmf) () = &Klass::implementation; 23 24 return (void *)(int (*)(Klass *))(((Klass *)0)->*pmf); 25} 26 27int Klass::magic (void) __attribute__ ((ifunc ("_ZN5Klass8resolverEv"))); 28 29int Foo (Klass &obj, int (Klass::*pmf) ()) 30{ 31 return (obj.*pmf) (); 32} 33 34int main () 35{ 36 Klass obj; 37 38 return Foo (obj, &Klass::magic) != 0; 39} 40