aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1993-10-12 15:41:52 -0400
committerRichard Kenner <kenner@gcc.gnu.org>1993-10-12 15:41:52 -0400
commit64791b18b89002e1abd71d9a7d4d37c2f5612ce1 (patch)
tree3ae27de9e0efb871d2ec9b48489d9a0d6b3a5de7
parent581330672690361a796000190c5c728417688d9f (diff)
downloadgcc-64791b18b89002e1abd71d9a7d4d37c2f5612ce1.zip
gcc-64791b18b89002e1abd71d9a7d4d37c2f5612ce1.tar.gz
gcc-64791b18b89002e1abd71d9a7d4d37c2f5612ce1.tar.bz2
(convert_modes): Reset OLDMODE from X after we strip a SUBREG due to a
promoted variable. From-SVN: r5752
-rw-r--r--gcc/expr.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/gcc/expr.c b/gcc/expr.c
index 3a4f6bb..5353fba 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -1183,9 +1183,6 @@ convert_modes (mode, oldmode, x, unsignedp)
{
register rtx temp;
- if (GET_MODE (x) != VOIDmode)
- oldmode = GET_MODE (x);
-
/* If FROM is a SUBREG that indicates that we have already done at least
the required extension, strip it. */
@@ -1194,6 +1191,9 @@ convert_modes (mode, oldmode, x, unsignedp)
&& SUBREG_PROMOTED_UNSIGNED_P (x) == unsignedp)
x = gen_lowpart (mode, x);
+ if (GET_MODE (x) != VOIDmode)
+ oldmode = GET_MODE (x);
+
if (mode == oldmode)
return x;