diff options
| -rw-r--r-- | llvm/test/Regression/C++Frontend/pointer_member.cpp | 12 | ||||
| -rw-r--r-- | llvm/test/Regression/C++Frontend/pointer_method.cpp | 25 | 
2 files changed, 32 insertions, 5 deletions
diff --git a/llvm/test/Regression/C++Frontend/pointer_member.cpp b/llvm/test/Regression/C++Frontend/pointer_member.cpp index 3c8e25fe706..46ad7c3a1fe 100644 --- a/llvm/test/Regression/C++Frontend/pointer_member.cpp +++ b/llvm/test/Regression/C++Frontend/pointer_member.cpp @@ -1,5 +1,17 @@ +#include <stdio.h> +  struct B { int i, j; };  struct D : public B {};  int D::*di = &D::i;  int D::*dj = &D::j; +int main() { +  D d; +  d.i = d.j = 0; +  d.*di = 4; +  d.*dj = 7; + +  printf("%d %d\n", d.i, d.j); + +  return 0; +} diff --git a/llvm/test/Regression/C++Frontend/pointer_method.cpp b/llvm/test/Regression/C++Frontend/pointer_method.cpp index d499a7ef099..a8f76ab20c8 100644 --- a/llvm/test/Regression/C++Frontend/pointer_method.cpp +++ b/llvm/test/Regression/C++Frontend/pointer_method.cpp @@ -1,8 +1,23 @@ -struct B { int i(); int j(); }; +#include <stdio.h> -void foo(int (B::*Fn)()); +struct B {  +  int X; +  void i() { +    printf("i, %d\n", X); +  } +  void j() { +    printf("j, %d\n", X); +  } +}; -void test() { -	foo(&B::i); -	foo(&B::j); +void foo(int V, void (B::*Fn)()) { +   B b;  b.X = V; +   (b.*Fn)(); +} + +int main() { +	foo(4, &B::i); +	foo(6, &B::j); +	foo(-1, &B::i); +	return 0;  }  | 

