// { 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);
}