From: Richard Stallman Date: Tue, 20 Oct 1992 10:47:23 +0000 (+0000) Subject: (store_field): If trying to sign-extend a constant, use value_mode as X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=86a2c12a2b5df3baf3780ea4f7c1ad7099b47933;p=gcc.git (store_field): If trying to sign-extend a constant, use value_mode as the mode. From-SVN: r2525 --- diff --git a/gcc/expr.c b/gcc/expr.c index 6808c9b90ce..7f062ede82d 100644 --- a/gcc/expr.c +++ b/gcc/expr.c @@ -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);