// RUN: %clang_cc1 %s -triple=x86_64-apple-darwin10 -emit-llvm -O3 -o - | FileCheck %s | |
struct A { | |
virtual int vf1() { return 1; } | |
virtual int vf2() { return 2; } | |
}; | |
int f(A* a, int (A::*fp)()) { | |
return (a->*fp)(); | |
} | |
// CHECK: define i32 @_Z2g1v() | |
int g1() { | |
A a; | |
// CHECK: call i32 @_ZN1A3vf1Ev | |
// CHECK-NEXT: ret i32 | |
return f(&a, &A::vf1); | |
} | |
int g2() { | |
A a; | |
// CHECK: call i32 @_ZN1A3vf2Ev | |
// CHECK-NEXT: ret i32 | |
return f(&a, &A::vf2); | |
} |