*** empty log message ***
authorRichard Stallman <rms@gnu.org>
Thu, 14 May 1992 21:37:58 +0000 (21:37 +0000)
committerRichard Stallman <rms@gnu.org>
Thu, 14 May 1992 21:37:58 +0000 (21:37 +0000)
From-SVN: r979

gcc/expmed.c

index 44dc7ec0310472a46b68a59ac929147bea938bbd..e7a9af1a0135beb1241cd5f4680cbc6d1416ea32 100644 (file)
@@ -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);
            }