URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Only display areas with differences |
Details |
Blame |
View Log
Rev 305 |
Rev 338 |
// { dg-do run }
|
// { dg-do run }
|
// Testcase for tricky dynamic cast situations.
|
// Testcase for tricky dynamic cast situations.
|
|
|
struct A {
|
struct A {
|
virtual void f () { }
|
virtual void f () { }
|
};
|
};
|
|
|
struct B : public A { };
|
struct B : public A { };
|
struct C : public B { };
|
struct C : public B { };
|
struct D : public B { };
|
struct D : public B { };
|
struct E : public C, public D { };
|
struct E : public C, public D { };
|
|
|
struct B2 : public virtual A { };
|
struct B2 : public virtual A { };
|
struct C2 : public B2 { };
|
struct C2 : public B2 { };
|
struct D2 : public B2 { };
|
struct D2 : public B2 { };
|
struct E2 : public C2, public D2 { };
|
struct E2 : public C2, public D2 { };
|
|
|
int main ()
|
int main ()
|
{
|
{
|
E e;
|
E e;
|
E2 e2;
|
E2 e2;
|
|
|
A* ap = (C*)&e;
|
A* ap = (C*)&e;
|
|
|
// ap points to base subobject of unique B; succeeds
|
// ap points to base subobject of unique B; succeeds
|
if (dynamic_cast (ap) == 0)
|
if (dynamic_cast (ap) == 0)
|
return 1;
|
return 1;
|
|
|
ap = (C2*)&e2;
|
ap = (C2*)&e2;
|
// ap points to base subobject shared by two Bs; fails
|
// ap points to base subobject shared by two Bs; fails
|
if (dynamic_cast (ap) != 0)
|
if (dynamic_cast (ap) != 0)
|
return 2;
|
return 2;
|
}
|
}
|
|
|
© copyright 1999-2024
OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.