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 main () 30{ 31 Klass obj; 32 33 return obj.magic () != 0; 34} 35