(convert_modes): Can't truncate REG with gen_lowpart if
authorJim Wilson <wilson@gcc.gnu.org>
Fri, 24 Dec 1993 20:20:44 +0000 (12:20 -0800)
committerJim Wilson <wilson@gcc.gnu.org>
Fri, 24 Dec 1993 20:20:44 +0000 (12:20 -0800)
TRULY_NOOP_TRUNCATION doesn't allow it.

From-SVN: r6306

gcc/expr.c

index ed9f6eb288250e6f6b949ad34332f81fa305b8e8..f31ad2803859920fc94b4c2fd2d199b653756474 100644 (file)
@@ -1223,7 +1223,9 @@ convert_modes (mode, oldmode, x, unsignedp)
              || (GET_MODE_SIZE (mode) <= GET_MODE_SIZE (oldmode)
                  && ((GET_CODE (x) == MEM && ! MEM_VOLATILE_P (x)
                       && direct_load[(int) mode])
-                     || GET_CODE (x) == REG)))))
+                     || (GET_CODE (x) == REG
+                         && TRULY_NOOP_TRUNCATION (GET_MODE_BITSIZE (mode),
+                                                   GET_MODE_BITSIZE (GET_MODE (x)))))))))
     {
       /* ?? If we don't know OLDMODE, we have to assume here that
         X does not need sign- or zero-extension.   This may not be