| /* Let gimple verifier check what SRA does to unions and single-field |
| strucutres . */ |
| |
| struct sim_struct |
| { |
| int x; |
| }; |
| |
| extern struct sim_struct get_x(void); |
| |
| struct sim_struct foo (void) |
| { |
| struct sim_struct simple; |
| |
| simple = get_x (); |
| if (simple.x % 2) |
| simple.x = 39; |
| else |
| simple.x -=8; |
| |
| return simple; |
| } |
| |
| struct sim_cmplx |
| { |
| _Complex double c; |
| }; |
| |
| extern struct sim_cmplx get_sc (void); |
| |
| _Complex double foo_c (void) |
| { |
| struct sim_cmplx simple; |
| |
| simple = get_sc (); |
| if (__real__ simple.c > 200.3) |
| __imag__ simple.c -= 2.4; |
| |
| return simple.c; |
| } |
| |
| |
| union sim_union |
| { |
| int i; |
| float d; |
| }; |
| |
| extern union sim_union get_y (void); |
| |
| union sim_union bar (void) |
| { |
| union sim_union simple; |
| |
| simple = get_y (); |
| if (simple.d > 8.2) |
| simple.i = 300; |
| |
| return simple; |
| } |
| |
| extern int get_int (void); |
| |
| int bar_i (void) |
| { |
| union sim_union simple; |
| |
| simple = get_y (); |
| if (simple.d > 8.2) |
| simple.i = get_int (); |
| |
| return simple.i; |
| } |