aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1993-03-30 15:34:11 -0500
committerRichard Kenner <kenner@gcc.gnu.org>1993-03-30 15:34:11 -0500
commit2c0623e83abf78609905752326e68fc5b6724ffd (patch)
tree454b54193c5c9af6750bcc75b294377a9ff5d6be
parent118bdbf8fa2e169eea9824b321291ad68139d0e0 (diff)
downloadgcc-2c0623e83abf78609905752326e68fc5b6724ffd.zip
gcc-2c0623e83abf78609905752326e68fc5b6724ffd.tar.gz
gcc-2c0623e83abf78609905752326e68fc5b6724ffd.tar.bz2
(form_sum): Use mode of inputs when making new PLUS.
From-SVN: r3928
-rw-r--r--gcc/reload.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/gcc/reload.c b/gcc/reload.c
index aa4744c..2053591 100644
--- a/gcc/reload.c
+++ b/gcc/reload.c
@@ -4138,6 +4138,13 @@ form_sum (x, y)
rtx x, y;
{
rtx tem;
+ enum machine_mode mode = GET_MODE (x);
+
+ if (mode == VOIDmode)
+ mode = GET_MODE (y);
+
+ if (mode == VOIDmode)
+ mode = Pmode;
if (GET_CODE (x) == CONST_INT)
return plus_constant (y, INTVAL (x));
@@ -4163,10 +4170,10 @@ form_sum (x, y)
if (GET_CODE (y) == CONST)
y = XEXP (y, 0);
- return gen_rtx (CONST, VOIDmode, gen_rtx (PLUS, Pmode, x, y));
+ return gen_rtx (CONST, VOIDmode, gen_rtx (PLUS, mode, x, y));
}
- return gen_rtx (PLUS, Pmode, x, y);
+ return gen_rtx (PLUS, mode, x, y);
}
/* If ADDR is a sum containing a pseudo register that should be