From ab6c58f120a7cfb52a7e2b9fe8427715f0340574 Mon Sep 17 00:00:00 2001 From: Richard Kenner Date: Mon, 21 Oct 1996 19:11:08 -0400 Subject: [PATCH] (store_expr): Disable optimization of using convert if exp's type is a subtype. From-SVN: r12992 --- gcc/expr.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/gcc/expr.c b/gcc/expr.c index 0cee6f78057..e06d3b187eb 100644 --- a/gcc/expr.c +++ b/gcc/expr.c @@ -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)) -- 2.30.2