/* { 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; |