Commit 77ea49a4 by Bernd Schmidt Committed by Bernd Schmidt

Ignore SETs that are anything except REG or MEM, but look inside STRICT_LOW_PART.

From-SVN: r37819
parent c5c0b3d9
2000-11-28 Bernd Schmidt <bernds@redhat.co.uk>
* simplify-rtx.c (cselib_record_sets): Ignore sets whose destination
is anything but REG or MEM, but look inside STRICT_LOW_PART.
Tue Nov 28 09:53:50 2000 Richard Kenner <kenner@vlsi1.ultra.nyu.edu> Tue Nov 28 09:53:50 2000 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* system.h (IS_DIR_SEPARATOR): Use uppercase macro name. * system.h (IS_DIR_SEPARATOR): Use uppercase macro name.
......
...@@ -3198,13 +3198,22 @@ cselib_record_sets (insn) ...@@ -3198,13 +3198,22 @@ cselib_record_sets (insn)
locations that are written. */ locations that are written. */
for (i = 0; i < n_sets; i++) for (i = 0; i < n_sets; i++)
{ {
sets[i].src_elt = cselib_lookup (sets[i].src, GET_MODE (sets[i].dest), rtx dest = sets[i].dest;
1);
if (GET_CODE (sets[i].dest) == MEM) /* A STRICT_LOW_PART can be ignored; we'll record the equivalence for
sets[i].dest_addr_elt = cselib_lookup (XEXP (sets[i].dest, 0), Pmode, the low part after invalidating any knowledge about larger modes. */
1); if (GET_CODE (sets[i].dest) == STRICT_LOW_PART)
else sets[i].dest = dest = XEXP (dest, 0);
sets[i].dest_addr_elt = 0;
/* We don't know how to record anything but REG or MEM. */
if (GET_CODE (dest) == REG || GET_CODE (dest) == MEM)
{
sets[i].src_elt = cselib_lookup (sets[i].src, GET_MODE (dest), 1);
if (GET_CODE (dest) == MEM)
sets[i].dest_addr_elt = cselib_lookup (XEXP (dest, 0), Pmode, 1);
else
sets[i].dest_addr_elt = 0;
}
} }
/* Invalidate all locations written by this insn. Note that the elts we /* Invalidate all locations written by this insn. Note that the elts we
...@@ -3214,7 +3223,11 @@ cselib_record_sets (insn) ...@@ -3214,7 +3223,11 @@ cselib_record_sets (insn)
/* Now enter the equivalences in our tables. */ /* Now enter the equivalences in our tables. */
for (i = 0; i < n_sets; i++) for (i = 0; i < n_sets; i++)
cselib_record_set (sets[i].dest, sets[i].src_elt, sets[i].dest_addr_elt); {
rtx dest = sets[i].dest;
if (GET_CODE (dest) == REG || GET_CODE (dest) == MEM)
cselib_record_set (dest, sets[i].src_elt, sets[i].dest_addr_elt);
}
} }
/* Record the effects of INSN. */ /* Record the effects of INSN. */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment