1 /* { dg-do compile } */
2 /* { dg-options "-O -fdump-tree-optimized" } */
3
4 typedef _Complex float COMPLEX_FLOAT;
real_part(COMPLEX_FLOAT a)5 float real_part(COMPLEX_FLOAT a)
6 {
7 return *(float*)(&a);
8 }
9
real_part_2(COMPLEX_FLOAT a)10 float real_part_2(COMPLEX_FLOAT a)
11 {
12 return ((float*)(&a))[0];
13 }
14
15
imag_part(COMPLEX_FLOAT a)16 float imag_part(COMPLEX_FLOAT a)
17 {
18 return ((float*)(&a))[1];
19 }
20
21 /* Test that the above gets optimized to REALPART_EXPR and IMAGPART_EXPR
22 respectively. */
23
24 /* { dg-final { scan-tree-dump-times "REALPART_EXPR" 2 "optimized" } } */
25 /* { dg-final { scan-tree-dump-times "IMAGPART_EXPR" 1 "optimized" } } */
26
27