// { dg-module-do run }
// { dg-additional-options -fmodules-ts }
export module foo;
// { dg-module-cmi foo }
export struct Visitor
{
  virtual int Visit ();
};
// Key function explicitly not in line (regardless of p1779's state)
// We emit vtables & rtti only in this TU
int Visitor::Visit ()
{
  return 0;
}
export int Visit (Visitor *v)
{
  return v->Visit ();
}
// { dg-final { scan-assembler {_ZTVW3foo7Visitor:} } }
// { dg-final { scan-assembler {_ZTIW3foo7Visitor:} } }
// { dg-final { scan-assembler {_ZTSW3foo7Visitor:} } }
// { dg-final { scan-assembler {_ZW3foo5VisitPS_7Visitor:} } }