// { dg-do run  }
struct B
{
  virtual int f() volatile
    { return 0; }
};
struct D : public B 
{
  virtual int f()
    { return 1; }
};
int main()
{
  volatile D d;
  volatile B& b = d;
  return b.f();
}
// { dg-do run  }
struct B
{
  virtual int f() volatile
    { return 0; }
};
struct D : public B 
{
  virtual int f()
    { return 1; }
};
int main()
{
  volatile D d;
  volatile B& b = d;
  return b.f();
}