1 /* Let gimple verifier check what SRA does to unions and single-field 2 strucutres . */ 3 4 struct sim_struct 5 { 6 int x; 7 }; 8 9 extern struct sim_struct get_x(void); 10 foo(void)11struct sim_struct foo (void) 12 { 13 struct sim_struct simple; 14 15 simple = get_x (); 16 if (simple.x % 2) 17 simple.x = 39; 18 else 19 simple.x -=8; 20 21 return simple; 22 } 23 24 struct sim_cmplx 25 { 26 _Complex double c; 27 }; 28 29 extern struct sim_cmplx get_sc (void); 30 foo_c(void)31_Complex double foo_c (void) 32 { 33 struct sim_cmplx simple; 34 35 simple = get_sc (); 36 if (__real__ simple.c > 200.3) 37 __imag__ simple.c -= 2.4; 38 39 return simple.c; 40 } 41 42 43 union sim_union 44 { 45 int i; 46 float d; 47 }; 48 49 extern union sim_union get_y (void); 50 bar(void)51union sim_union bar (void) 52 { 53 union sim_union simple; 54 55 simple = get_y (); 56 if (simple.d > 8.2) 57 simple.i = 300; 58 59 return simple; 60 } 61 62 extern int get_int (void); 63 bar_i(void)64int bar_i (void) 65 { 66 union sim_union simple; 67 68 simple = get_y (); 69 if (simple.d > 8.2) 70 simple.i = get_int (); 71 72 return simple.i; 73 } 74