1 // RUN: %clang_cc1 %s -triple=x86_64-apple-darwin10 -emit-llvm -O3 -o - | FileCheck %s
2 struct A {
vf1A3 virtual int vf1() { return 1; }
vf2A4 virtual int vf2() { return 2; }
5 };
6
f(A * a,int (A::* fp)())7 int f(A* a, int (A::*fp)()) {
8 return (a->*fp)();
9 }
10
11 // CHECK: define i32 @_Z2g1v()
12 // CHECK-NEXT: {{.*}}:
13 // CHECK-NEXT: ret i32 1
g1()14 int g1() {
15 A a;
16 return f(&a, &A::vf1);
17 }
18
19 // CHECK: define i32 @_Z2g2v()
20 // CHECK-NEXT: {{.*}}:
21 // CHECK-NEXT: ret i32 2
g2()22 int g2() {
23 A a;
24 return f(&a, &A::vf2);
25 }
26