// PR tree-optimization/51596 | |
// { dg-do compile } | |
// { dg-options "-O -fnon-call-exceptions" } | |
struct A { float v[2]; }; | |
struct B { int v[2]; }; | |
struct C | |
{ | |
B c; | |
C f () | |
{ | |
B b; | |
for (int i = 0; i < 2; i++) | |
b.v[i] = c.v[i]; | |
return *this; | |
} | |
}; | |
struct D | |
{ | |
A d; | |
D (B x) | |
{ | |
for (int i = 0; i < 2; i++) | |
d.v[i] = x.v[i]; | |
} | |
}; | |
int bar (); | |
C i; | |
void | |
foo () | |
{ | |
while (bar ()) | |
D (i.f ().c); | |
} |