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