aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Law <law@gcc.gnu.org>1993-10-17 19:40:26 -0600
committerJeff Law <law@gcc.gnu.org>1993-10-17 19:40:26 -0600
commit51b8cba1261d04a4104d0a09e6b7d59c5eb5fea5 (patch)
treefe970e3cc3c35423882b71d44f61168bbe702d21
parentee80d1cd86d126eeb5abfe04cae3a5d0dfbbabe8 (diff)
downloadgcc-51b8cba1261d04a4104d0a09e6b7d59c5eb5fea5.zip
gcc-51b8cba1261d04a4104d0a09e6b7d59c5eb5fea5.tar.gz
gcc-51b8cba1261d04a4104d0a09e6b7d59c5eb5fea5.tar.bz2
reload1.c (eliminate_regs_in_insn): Rerecognize some loads and stores.
* reload1.c (eliminate_regs_in_insn): Rerecognize some loads and stores. From-SVN: r5792
-rw-r--r--gcc/reload1.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/gcc/reload1.c b/gcc/reload1.c
index 19c1479..00d781c 100644
--- a/gcc/reload1.c
+++ b/gcc/reload1.c
@@ -3198,6 +3198,14 @@ eliminate_regs_in_insn (insn, replace)
if ((GET_CODE (old_body) == SET && GET_CODE (SET_SRC (old_body)) == REG
&& (GET_CODE (new_body) != SET
|| GET_CODE (SET_SRC (new_body)) != REG))
+ /* If this was a load from or store to memory, compare
+ the MEM in recog_operand to the one in the insn. If they
+ are not equal, then rerecognize the insn. */
+ || (GET_CODE (old_body) == SET
+ && ((GET_CODE (SET_SRC (old_body)) == MEM
+ && SET_SRC (old_body) != recog_operand[1])
+ || (GET_CODE (SET_DEST (old_body)) == MEM
+ && SET_DEST (old_body) != recog_operand[0])))
/* If this was an add insn before, rerecognize. */
||
(GET_CODE (old_body) == SET