// PR c++/32992 | |
// { dg-do run } | |
// { dg-options "-O2" } | |
extern "C" void abort (void); | |
struct A | |
{ | |
long int a1; | |
long int a2; | |
long int a3; | |
}; | |
struct B | |
{ | |
long int f[3]; | |
operator A () | |
{ | |
union | |
{ | |
long int t[3]; | |
A a; | |
}; | |
for (int i = 0; i < 3; i++) | |
t[i] = f[i]; | |
return a; | |
} | |
}; | |
int | |
main () | |
{ | |
B b = { {1, 3, 5} }; | |
A a = b; | |
if (a.a1 != b.f[0] || a.a2 != b.f[1] || a.a3 != b.f[2]) | |
abort (); | |
return 0; | |
} |