summaryrefslogtreecommitdiffstats
path: root/test/CodeGenCXX/ptr-to-member-function.cpp
diff options
context:
space:
mode:
authorFariborz Jahanian <fjahanian@apple.com>2009-11-04 19:13:37 +0000
committerFariborz Jahanian <fjahanian@apple.com>2009-11-04 19:13:37 +0000
commit105aa51c146b66f7dc4ac78faa9a7021acb98d75 (patch)
tree40294eeb92459396079a8933370cd40cf2d84483 /test/CodeGenCXX/ptr-to-member-function.cpp
parent862354188764f4a20be21d103bc2abd074ad048a (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.cpp18
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