1 /* PR middle-end/41123 */
2 /* { dg-do compile } */
3 /* { dg-options "-O2 -fno-strict-aliasing" } */
4
5 struct S { char a, b, c, d, e, f, g, h; };
6 struct T { int a, b; };
7
8 struct S
9 f1 (float _Complex x)
10 {
11 return *(struct S *) & x;
12 }
13
14 int
15 f2 (float _Complex x)
16 {
17 struct S f = f1 (x);
18 return f.b;
19 }
20
21 struct T
22 f3 (float _Complex x)
23 {
24 return *(struct T *) & x;
25 }
26
27 int
28 f4 (float _Complex x)
29 {
30 struct T f = f3 (x);
31 return f.a;
32 }
33
34 int
35 f5 (float _Complex x)
36 {
37 struct T f = f3 (x);
38 return f.b;
39 }
40
41 struct T
42 f6 (float _Complex x)
43 {
44 struct T f = f3 (x);
45 return f;
46 }