blob: 6f0ef81fe35dcf6d951e1a78818014b0ee0e2d8e [file] [log] [blame]
Anders Carlsson51591be2010-02-04 17:08:48 +00001// RUN: %clang_cc1 %s -triple=x86_64-apple-darwin10 -emit-llvm -O3 -o - | FileCheck %s
2struct A {
3 virtual int vf1() { return 1; }
4 virtual int vf2() { return 2; }
5};
6
7int f(A* a, int (A::*fp)()) {
8 return (a->*fp)();
9}
10
11// CHECK: define i32 @_Z2g1v()
Chris Lattner62cf3442010-05-01 01:42:06 +000012// CHECK-NEXT: {{.*}}:
13// CHECK-NEXT: ret i32 1
Anders Carlsson51591be2010-02-04 17:08:48 +000014int g1() {
15 A a;
Anders Carlsson51591be2010-02-04 17:08:48 +000016 return f(&a, &A::vf1);
17}
18
Chris Lattner62cf3442010-05-01 01:42:06 +000019// CHECK: define i32 @_Z2g2v()
20// CHECK-NEXT: {{.*}}:
21// CHECK-NEXT: ret i32 2
Anders Carlsson51591be2010-02-04 17:08:48 +000022int g2() {
23 A a;
Anders Carlsson51591be2010-02-04 17:08:48 +000024 return f(&a, &A::vf2);
25}