blob: 11f690063ef9ddd2922d4e82cc8cd1a396464c15 [file] [log] [blame]
/* { dg-options "-O2 " } */
class Parent
{
public:
Parent *object;
Parent()
{
object = this;
}
virtual void recurse (int t) = 0;
};
class Child : public Parent
{
Parent *
get_object ()
{
return this;
}
public:
virtual void
recurse (int t)
{
if (t != 10)
for (int i = 0; i < 5; ++i)
get_object()->recurse(t + 1);
};
};
Parent *
create_object ()
{
Child *mod = new Child;
return mod;
}
int
main (int argc, char **argv)
{
Parent *parent = create_object ();
for (int i = 0; i < 5; ++i)
{
parent->recurse (0);
}
return 0;
}