/* PR middle-end/41123 */ /* { dg-do compile } */ /* { dg-options "-O2 -fno-strict-aliasing" } */ struct S { char a, b, c, d, e, f, g, h; }; struct T { int a, b; }; struct S f1 (float _Complex x) { return *(struct S *) & x; } int f2 (float _Complex x) { struct S f = f1 (x); return f.b; } struct T f3 (float _Complex x) { return *(struct T *) & x; } int f4 (float _Complex x) { struct T f = f3 (x); return f.a; } int f5 (float _Complex x) { struct T f = f3 (x); return f.b; } struct T f6 (float _Complex x) { struct T f = f3 (x); return f; }