// { dg-do compile }
// { dg-options "-fno-ipa-cp" }
struct data {
  data(int) {}
};

struct top {
  virtual int topf() { return 0; }
};

struct child1: top {
    void childf()
    {
        data d(topf());
    }
};

void test(top *t)
{
    child1 *c = static_cast<child1 *>(t);
    c->childf();
    child1 d;
    test(&d);
}
