(store_expr): Disable optimization of using convert if exp's type is a
authorRichard Kenner <kenner@gcc.gnu.org>
Mon, 21 Oct 1996 23:11:08 +0000 (19:11 -0400)
committerRichard Kenner <kenner@gcc.gnu.org>
Mon, 21 Oct 1996 23:11:08 +0000 (19:11 -0400)
subtype.

From-SVN: r12992

gcc/expr.c

index 0cee6f780570657a61e29f42ce560b627268d167..e06d3b187eb0cf3e0fb0b33b103dae2eb3e5e81d 100644 (file)
@@ -3125,8 +3125,11 @@ store_expr (exp, target, want_value)
       /* If we don't want a value, we can do the conversion inside EXP,
         which will often result in some optimizations.  Do the conversion
         in two steps: first change the signedness, if needed, then
-        the extend.  */
-      if (! want_value)
+        the extend.  But don't do this if the type of EXP is a subtype
+        of something else since then the conversion might involve
+        more than just converting modes.  */
+      if (! want_value && INTEGRAL_TYPE_P (TREE_TYPE (exp))
+         && TREE_TYPE (TREE_TYPE (exp)) == 0)
        {
          if (TREE_UNSIGNED (TREE_TYPE (exp))
              != SUBREG_PROMOTED_UNSIGNED_P (target))