1 // RUN: %clang_cc1 %s -triple=x86_64-apple-darwin10 -emit-llvm -O3 -o - | FileCheck %s
2 struct A {
3   virtual int vf1() { return 1; }
4   virtual int vf2() { return 2; }
5 };
6 
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
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
22 int g2() {
23   A a;
24   return f(&a, &A::vf2);
25 }
26