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,14 +3198,23 @@ cselib_record_sets (insn) ...@@ -3198,14 +3198,23 @@ 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)
sets[i].dest = dest = XEXP (dest, 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 else
sets[i].dest_addr_elt = 0; 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
looked up in the previous loop aren't affected, just some of their looked up in the previous loop aren't affected, just some of their
...@@ -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