diff options
author | David S. Miller <davem@pierdol.cobaltnet.com> | 1998-10-16 01:23:51 +0000 |
---|---|---|
committer | David S. Miller <davem@gcc.gnu.org> | 1998-10-15 18:23:51 -0700 |
commit | 925be47cd54bcdb5e6da71a37de22ca08f367f83 (patch) | |
tree | 9def81cd0e6f0f1c919ba36f812a91b498a74a73 | |
parent | 748f2a2298e1b15954f5d113b4dba07fa8231bc6 (diff) | |
download | gcc-925be47cd54bcdb5e6da71a37de22ca08f367f83.zip gcc-925be47cd54bcdb5e6da71a37de22ca08f367f83.tar.gz gcc-925be47cd54bcdb5e6da71a37de22ca08f367f83.tar.bz2 |
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
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cse.c | 10 |
2 files changed, 11 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 55cc43e..36aff77 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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) @@ -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 |