diff options
author | Fariborz Jahanian <fjahanian@apple.com> | 2009-11-04 19:13:37 +0000 |
---|---|---|
committer | Fariborz Jahanian <fjahanian@apple.com> | 2009-11-04 19:13:37 +0000 |
commit | 105aa51c146b66f7dc4ac78faa9a7021acb98d75 (patch) | |
tree | 40294eeb92459396079a8933370cd40cf2d84483 /test/CodeGenCXX/ptr-to-member-function.cpp | |
parent | 862354188764f4a20be21d103bc2abd074ad048a (diff) |
Add code gen for pointer-to-member function in
ctor's initializer. Fixes pr5178.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86040 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGenCXX/ptr-to-member-function.cpp')
-rw-r--r-- | test/CodeGenCXX/ptr-to-member-function.cpp | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/test/CodeGenCXX/ptr-to-member-function.cpp b/test/CodeGenCXX/ptr-to-member-function.cpp index 1e396e9765..15019081c0 100644 --- a/test/CodeGenCXX/ptr-to-member-function.cpp +++ b/test/CodeGenCXX/ptr-to-member-function.cpp @@ -9,8 +9,14 @@ extern "C" int printf(...); struct A { int Ai; +bool foo(int* arg) const; }; +bool A::foo(int* arg) const { + printf("A::foo(%d)\n", *arg); + return true; +} + struct B : public A { void bf() { printf("B::bf called\n"); } }; @@ -40,10 +46,22 @@ void test2(X x) g(x); } +struct B1 { + bool (A::*pmf)(int*) const; + + B1(int i) : pmf(&A::foo), im(i) { + ((A*)this->*pmf)(&im); + } + + int im; +}; + int main() { X x; test2(x); + B1 b = B1(1); + B1 c = B1(2); } // CHECK-LP64: call __ZN1XcvM1BFvvEEv |