// { dg-additional-options "-fmodules-ts" }
import One;
import Two;
struct derived : middle
{
  long long d;
  derived (int b_, int m_, int d_)
    : middle (b_, m_), d (d_)
  {
  }
};
int check (derived *d)
{
  if ((char *)&d->b != (char *)&d->d + sizeof (long long))
    return 3;
  if ((char *)&d->d != (char *)&d->m + sizeof (long long))
    return 4;
  return 0;
}
int main ()
{
  middle m (1, 2);
  if (m.b != 1 || m.m != 2)
    return 1;
  derived d (1, 2, 3);
  
  if (d.b != 99 || d.m != 2 || d.d != 3)
    return 2;
  return check (&d);
}