cse.c (cse_basic_block): Fixup hash flushing loop so we do not accidently walk into the free list.

* cse.c (cse_basic_block): Fixup hash flushing loop so we do not
	accidently walk into the free list.  Comment how that can happen.
	(invalidate): Fix indentation.

From-SVN: r23122
This commit is contained in:
David S. Miller 1998-10-16 01:23:51 +00:00 committed by David S. Miller
parent 748f2a2298
commit 925be47cd5
2 changed files with 11 additions and 5 deletions

View File

@ -1,3 +1,9 @@
Fri Oct 16 08:13:46 1998 David S. Miller <davem@pierdol.cobaltnet.com>
* cse.c (cse_basic_block): Fixup hash flushing loop so we do not
accidently walk into the free list. Comment how that can happen.
(invalidate): Fix indentation.
Thu Oct 15 23:53:29 1998 Bernd Schmidt <crux@pool.informatik.rwth-aachen.de>
Jeffrey A Law (law@cygnus.com)

View File

@ -1651,7 +1651,7 @@ invalidate (x, full_mode)
tendregno
= tregno + HARD_REGNO_NREGS (tregno, GET_MODE (p->exp));
if (tendregno > regno && tregno < endregno)
remove_from_table (p, hash);
remove_from_table (p, hash);
}
}
@ -8706,7 +8706,7 @@ cse_basic_block (from, to, next_branch, around_loop)
{
register enum rtx_code code = GET_CODE (insn);
int i;
struct table_elt *p, *next;
struct table_elt *p;
/* If we have processed 1,000 insns, flush the hash table to
avoid extreme quadratic behavior. We must not include NOTEs
@ -8720,10 +8720,10 @@ cse_basic_block (from, to, next_branch, around_loop)
if (code != NOTE && num_insns++ > 1000)
{
for (i = 0; i < NBUCKETS; i++)
for (p = table[i]; p; p = next)
for (p = table[i]; p; p = table[i])
{
next = p->next_same_hash;
/* Note that invalidate can remove elements
after P in the current hash chain. */
if (GET_CODE (p->exp) == REG)
invalidate (p->exp, p->mode);
else