1/* { dg-do compile } */
2/* { dg-options "-msse" { target { i?86-*-* x86_64-*-* } } } */
3#define vector __attribute__((vector_size(16) ))
4struct struct1  {
5  union {}    vmx;
6  struct struct2   {
7    struct2(const struct2& r) {}
8  } w;
9} __attribute__((aligned(16)));
10struct struct3  {
11  vector float vmx;
12  operator const struct1& () const{
13    return *reinterpret_cast<const struct1*>(this);
14  }
15};
16struct3 func3( struct3 V1);
17struct3 func2( void );
18void func1( )  {
19  struct1 vVec = func2() ;
20  func3 ( (struct3&)vVec );
21}
22
23