aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Stallman <rms@gnu.org>1992-09-19 05:33:47 +0000
committerRichard Stallman <rms@gnu.org>1992-09-19 05:33:47 +0000
commit91594e4329d7b2b70ea5715e560f0e43458d7837 (patch)
treee7d30f9a7e8d3439222df88c4f5205cf0020f8c5
parent65701fd2476d9c1412c899d97d01902dbc3e1fb3 (diff)
downloadgcc-91594e4329d7b2b70ea5715e560f0e43458d7837.zip
gcc-91594e4329d7b2b70ea5715e560f0e43458d7837.tar.gz
gcc-91594e4329d7b2b70ea5715e560f0e43458d7837.tar.bz2
(subst_constants): Do substitute in address of MEM dest.
From-SVN: r2162
-rw-r--r--gcc/integrate.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/gcc/integrate.c b/gcc/integrate.c
index ca91543..424f9a6 100644
--- a/gcc/integrate.c
+++ b/gcc/integrate.c
@@ -2346,7 +2346,8 @@ subst_constants (loc, insn, map)
src = SET_SRC (x);
while (GET_CODE (*dest_loc) == ZERO_EXTRACT
- || GET_CODE (*dest_loc) == SIGN_EXTRACT
+ /* By convention, we always use ZERO_EXTRACT in the dest. */
+/* || GET_CODE (*dest_loc) == SIGN_EXTRACT */
|| GET_CODE (*dest_loc) == SUBREG
|| GET_CODE (*dest_loc) == STRICT_LOW_PART)
{
@@ -2358,6 +2359,10 @@ subst_constants (loc, insn, map)
dest_loc = &XEXP (*dest_loc, 0);
}
+ /* Do substitute in the address of a destination in memory. */
+ if (GET_CODE (*dest_loc) == MEM)
+ subst_constants (&XEXP (*dest_loc, 0), insn, map);
+
/* Check for the case of DEST a SUBREG, both it and the underlying
register are less than one word, and the SUBREG has the wider mode.
In the case, we are really setting the underlying register to the