(store_field): If trying to sign-extend a constant, use value_mode as

the mode.

From-SVN: r2525
This commit is contained in:
Richard Stallman 1992-10-20 10:47:23 +00:00
parent 2f145821b7
commit 86a2c12a2b
1 changed files with 3 additions and 0 deletions

View File

@ -2705,9 +2705,12 @@ store_field (target, bitsize, bitpos, mode, exp, value_mode,
{
tree count;
enum machine_mode tmode;
if (unsignedp)
return expand_and (temp, GEN_INT (width_mask), NULL_RTX);
tmode = GET_MODE (temp);
if (tmode == VOIDmode)
tmode = value_mode;
count = build_int_2 (GET_MODE_BITSIZE (tmode) - bitsize, 0);
temp = expand_shift (LSHIFT_EXPR, tmode, temp, count, 0, 0);
return expand_shift (RSHIFT_EXPR, tmode, temp, count, 0, 0);