1 /* { dg-do compile } */
2 /* { dg-options "-O -fdump-tree-fre1" } */
4 struct A
{ float x
, y
; };
5 struct B
{ struct A u
; };
9 f1 (struct B
*x
, int y
)
14 struct A
*q
= &x
[y
].u
;
16 float f
= x
[y
].u
.x
+ x
[y
].u
.y
;
22 f2 (struct B
*x
, int y
)
28 float f
= x
[y
].u
.x
+ x
[y
].u
.y
;
34 f3 (struct B
*x
, int y
)
39 struct A
*q
= &x
[y
].u
;
40 __builtin_memcpy (&q
->x
, &p
.x
, sizeof (float));
41 __builtin_memcpy (&q
->y
, &p
.y
, sizeof (float));
42 float f
= x
[y
].u
.x
+ x
[y
].u
.y
;
48 f4 (struct B
*x
, int y
)
53 __builtin_memcpy (&x
[y
].u
.x
, &p
.x
, sizeof (float));
54 __builtin_memcpy (&x
[y
].u
.y
, &p
.y
, sizeof (float));
55 float f
= x
[y
].u
.x
+ x
[y
].u
.y
;
60 /* { dg-final { scan-tree-dump-times "return 3.0" 4 "fre1" } } */