blob: f8960aac52ef988fcaf83520897557a165ed4d95 [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()
Chandler Carruth8bd37f12012-03-22 06:22:13 +000012// CHECK: ret i32 1
Anders Carlsson51591be2010-02-04 17:08:48 +000013int g1() {
14 A a;
Anders Carlsson51591be2010-02-04 17:08:48 +000015 return f(&a, &A::vf1);
16}
17
Chris Lattner62cf3442010-05-01 01:42:06 +000018// CHECK: define i32 @_Z2g2v()
Chandler Carruth8bd37f12012-03-22 06:22:13 +000019// CHECK: ret i32 2
Anders Carlsson51591be2010-02-04 17:08:48 +000020int g2() {
21 A a;
Anders Carlsson51591be2010-02-04 17:08:48 +000022 return f(&a, &A::vf2);
23}