/* { dg-do compile } */
/* { dg-options "-O -fipa-cp -fipa-cp-clone -Wno-return-type" } */

template < typename > class S3;

struct S1
{
  struct
  {
    int i[10];
  } s0;
  S1 () : s0 ()
  { }
  template < typename T > S1 (S3 < T > s3, int)
  {
    f (s3);
  }
};

struct S2
{
  template < typename T > S2 s (S3 < T > s3)
  {
    S1 (s3, 0);
  }
  S2 (int i) : j (i)
  { }
  int j;
  S1 s1[10];
};

template < typename > struct S3
{
  S3 ()
  {
    S2 (0).s (*this);
  }
};

static inline void
f (S3 < int > s3)
{
  extern bool m;
  if (m)
    S2 (0).s (s3);
}

S3 < int >s3;
