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