aboutsummaryrefslogtreecommitdiffstats
path: root/test/C++Frontend
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2004-03-09 00:55:58 +0000
committerChris Lattner <sabre@nondot.org>2004-03-09 00:55:58 +0000
commit313b84b662b71804f60fe34639280e1cb7c67e1a (patch)
tree2bebd5f9b5c32e38832ac2b1e76120fc1a8da296 /test/C++Frontend
parent15f0a87f3130975bf7fe25cfce7280d176639fcd (diff)
downloadexternal_llvm-313b84b662b71804f60fe34639280e1cb7c67e1a.zip
external_llvm-313b84b662b71804f60fe34639280e1cb7c67e1a.tar.gz
external_llvm-313b84b662b71804f60fe34639280e1cb7c67e1a.tar.bz2
Checkin testcase for PR261
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12249 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/C++Frontend')
-rw-r--r--test/C++Frontend/2004-03-08-ReinterpretCastCopy.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/test/C++Frontend/2004-03-08-ReinterpretCastCopy.cpp b/test/C++Frontend/2004-03-08-ReinterpretCastCopy.cpp
new file mode 100644
index 0000000..3876527
--- /dev/null
+++ b/test/C++Frontend/2004-03-08-ReinterpretCastCopy.cpp
@@ -0,0 +1,19 @@
+struct A {
+ virtual void Method() = 0;
+};
+
+struct B : public A {
+ virtual void Method() { }
+};
+
+typedef void (A::*fn_type_a)(void);
+typedef void (B::*fn_type_b)(void);
+
+int main(int argc, char **argv)
+{
+ fn_type_a f = reinterpret_cast<fn_type_a>(&B::Method);
+ fn_type_b g = reinterpret_cast<fn_type_b>(f);
+ B b;
+ (b.*g)();
+ return 0;
+}