blob: 99162ebd5863b671910ad900e41d9359647c426f [file] [log] [blame]
Anders Carlssonc4325482010-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
Stephen Lin43622612013-08-15 06:47:53 +000011// CHECK-LABEL: define i32 @_Z2g1v()
Chandler Carruth13332ee2012-03-22 06:22:13 +000012// CHECK: ret i32 1
Anders Carlssonc4325482010-02-04 17:08:48 +000013int g1() {
14 A a;
Anders Carlssonc4325482010-02-04 17:08:48 +000015 return f(&a, &A::vf1);
16}
17
Stephen Lin43622612013-08-15 06:47:53 +000018// CHECK-LABEL: define i32 @_Z2g2v()
Chandler Carruth13332ee2012-03-22 06:22:13 +000019// CHECK: ret i32 2
Anders Carlssonc4325482010-02-04 17:08:48 +000020int g2() {
21 A a;
Anders Carlssonc4325482010-02-04 17:08:48 +000022 return f(&a, &A::vf2);
23}