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 29struct Klassier : Klass 30{ 31}; 32 33int main () 34{ 35 Klassier obj; 36 37 return obj.magic () != 0; 38} 39