| /* { dg-do compile } */ | |
| /* { dg-options "-O2 -favoid-store-forwarding -fdump-rtl-avoid_store_forwarding" } */ | |
| typedef union { | |
| char arr_8[8]; | |
| int long_value; | |
| } DataUnion1; | |
| long no_ssll_1 (DataUnion1 *data, char x) | |
| { | |
| data->arr_8[4] = x; | |
| return data->long_value; | |
| } | |
| long no_ssll_2 (DataUnion1 *data, char x) | |
| { | |
| data->arr_8[5] = x; | |
| return data->long_value; | |
| } | |
| typedef union { | |
| char arr_8[8]; | |
| short long_value[4]; | |
| } DataUnion2; | |
| long no_ssll_3 (DataUnion2 *data, char x) | |
| { | |
| data->arr_8[4] = x; | |
| return data->long_value[1]; | |
| } | |
| long no_ssll_4 (DataUnion2 *data, char x) | |
| { | |
| data->arr_8[0] = x; | |
| return data->long_value[1]; | |
| } | |
| /* { dg-final { scan-rtl-dump-times "Store forwarding detected" 0 "avoid_store_forwarding" } } */ | |
| /* { dg-final { scan-rtl-dump-times "Store forwarding avoided" 0 "avoid_store_forwarding" } } */ |