diff options
author | Richard Stallman <rms@gnu.org> | 1992-10-20 10:47:23 +0000 |
---|---|---|
committer | Richard Stallman <rms@gnu.org> | 1992-10-20 10:47:23 +0000 |
commit | 86a2c12a2b5df3baf3780ea4f7c1ad7099b47933 (patch) | |
tree | 70caf903d141c99c337e65fbe37f0ce2e23df5cc | |
parent | 2f145821b7d0956d775bc012722ddc68149ed37d (diff) | |
download | gcc-86a2c12a2b5df3baf3780ea4f7c1ad7099b47933.zip gcc-86a2c12a2b5df3baf3780ea4f7c1ad7099b47933.tar.gz gcc-86a2c12a2b5df3baf3780ea4f7c1ad7099b47933.tar.bz2 |
(store_field): If trying to sign-extend a constant, use value_mode as
the mode.
From-SVN: r2525
-rw-r--r-- | gcc/expr.c | 3 |
1 files changed, 3 insertions, 0 deletions
@@ -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); |