diff options
author | Richard Stallman <rms@gnu.org> | 1992-09-19 05:33:47 +0000 |
---|---|---|
committer | Richard Stallman <rms@gnu.org> | 1992-09-19 05:33:47 +0000 |
commit | 91594e4329d7b2b70ea5715e560f0e43458d7837 (patch) | |
tree | e7d30f9a7e8d3439222df88c4f5205cf0020f8c5 /gcc | |
parent | 65701fd2476d9c1412c899d97d01902dbc3e1fb3 (diff) | |
download | gcc-91594e4329d7b2b70ea5715e560f0e43458d7837.zip gcc-91594e4329d7b2b70ea5715e560f0e43458d7837.tar.gz gcc-91594e4329d7b2b70ea5715e560f0e43458d7837.tar.bz2 |
(subst_constants): Do substitute in address of MEM dest.
From-SVN: r2162
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/integrate.c | 7 |
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 |