blob: d969c7749050c80268191b438e7334ba1a6ef798 [file]
/* { dg-do compile } */
/* { dg-options "-O2 -favoid-store-forwarding" } */
typedef union {
char arr_8[8];
long long_value;
} DataUnion;
long ssll_multi_1 (DataUnion *data, char x)
{
data->arr_8[0] = x;
data->arr_8[2] = x;
return data->long_value;
}
long ssll_multi_2 (DataUnion *data, char x)
{
data->arr_8[0] = x;
data->arr_8[1] = 11;
return data->long_value;
}
long ssll_multi_3 (DataUnion *data, char x, short y)
{
data->arr_8[1] = x;
__builtin_memcpy(data->arr_8 + 4, &y, sizeof(short));
return data->long_value;
}
/* { dg-final { scan-assembler-times {(\tstr[bh]\tw[0-9]+, \[x[0-9]+(, \d+)?\]\n){2}(\tbfi\tx[0-9]+, x[0-9]+, \d+, \d+\n){2}} 3 } } */