summaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.dg/rtti/dyncast2.C
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/g++.dg/rtti/dyncast2.C')
-rw-r--r--gcc/testsuite/g++.dg/rtti/dyncast2.C31
1 files changed, 31 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/rtti/dyncast2.C b/gcc/testsuite/g++.dg/rtti/dyncast2.C
new file mode 100644
index 000000000..2e4f61596
--- /dev/null
+++ b/gcc/testsuite/g++.dg/rtti/dyncast2.C
@@ -0,0 +1,31 @@
+// PR c++/34364
+// { dg-do run }
+
+struct A
+{
+ virtual ~A () {}
+};
+
+struct B : public A
+{
+ template <typename T> struct C
+ {
+ static void f (A &a)
+ {
+ dynamic_cast <B &>(a).g ();
+ }
+ };
+
+ B () : c (6) {}
+ void g () { c++; }
+ int c;
+};
+
+B b;
+
+int
+main (void)
+{
+ B::C<int>::f (b);
+ return b.c != 7;
+}