From b7a091350e9895124553f7d5109776f985e693b7 Mon Sep 17 00:00:00 2001 From: Richard Stallman Date: Thu, 14 May 1992 21:37:58 +0000 Subject: [PATCH] *** empty log message *** From-SVN: r979 --- gcc/expmed.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) 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); } -- 2.30.2