From: David S. Miller Date: Fri, 16 Oct 1998 01:23:51 +0000 (+0000) Subject: cse.c (cse_basic_block): Fixup hash flushing loop so we do not accidently walk into... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=925be47cd54bcdb5e6da71a37de22ca08f367f83;p=gcc.git 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 55cc43ea593..36aff77a3f9 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +Fri Oct 16 08:13:46 1998 David S. Miller + + * 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 Jeffrey A Law (law@cygnus.com) diff --git a/gcc/cse.c b/gcc/cse.c index 1933fbc75d1..7e64ef305f2 100644 --- a/gcc/cse.c +++ b/gcc/cse.c @@ -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