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