From: Richard Stallman Date: Thu, 14 May 1992 21:37:58 +0000 (+0000) Subject: *** empty log message *** X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=b7a091350e9895124553f7d5109776f985e693b7;p=gcc.git *** empty log message *** From-SVN: r979 --- diff --git a/gcc/expmed.c b/gcc/expmed.c index 44dc7ec0310..e7a9af1a013 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); }