diff options
author | Richard Stallman <rms@gnu.org> | 1992-05-14 21:37:58 +0000 |
---|---|---|
committer | Richard Stallman <rms@gnu.org> | 1992-05-14 21:37:58 +0000 |
commit | b7a091350e9895124553f7d5109776f985e693b7 (patch) | |
tree | 5887ae2244b50e8b460d879967f0a1af77e7e310 | |
parent | 282ea52ada40ec3efd6e754baf7e5b701538102f (diff) | |
download | gcc-b7a091350e9895124553f7d5109776f985e693b7.zip gcc-b7a091350e9895124553f7d5109776f985e693b7.tar.gz gcc-b7a091350e9895124553f7d5109776f985e693b7.tar.bz2 |
*** empty log message ***
From-SVN: r979
-rw-r--r-- | gcc/expmed.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/gcc/expmed.c b/gcc/expmed.c index 44dc7ec..e7a9af1 100644 --- a/gcc/expmed.c +++ b/gcc/expmed.c @@ -972,7 +972,13 @@ extract_bit_field (str_rtx, bitsize, bitnum, unsignedp, if (GET_MODE (xtarget) != maxmode) { if (GET_CODE (xtarget) == REG) - xspec_target_subreg = xtarget = gen_lowpart (maxmode, xtarget); + { + int wider = (GET_MODE_SIZE (maxmode) + > GET_MODE_SIZE (GET_MODE (xtarget))); + xtarget = gen_lowpart (maxmode, xtarget); + if (wider) + xspec_target_subreg = xtarget; + } else xtarget = gen_reg_rtx (maxmode); } @@ -1098,7 +1104,13 @@ extract_bit_field (str_rtx, bitsize, bitnum, unsignedp, if (GET_MODE (xtarget) != maxmode) { if (GET_CODE (xtarget) == REG) - xspec_target_subreg = xtarget = gen_lowpart (maxmode, xtarget); + { + int wider = (GET_MODE_SIZE (maxmode) + > GET_MODE_SIZE (GET_MODE (xtarget))); + xtarget = gen_lowpart (maxmode, xtarget); + if (wider) + xspec_target_subreg = xtarget; + } else xtarget = gen_reg_rtx (maxmode); } |