cse.c (cse_basic_block): Don't include NOTE insns in the count that is used to decide whether or not it...

* cse.c (cse_basic_block): Don't include NOTE insns in the count
	that is used to decide whether or not it is time to erase the
	equivalence table.

From-SVN: r20548
This commit is contained in:
Mark Mitchell 1998-06-17 20:20:21 +00:00 committed by Mark Mitchell
parent 316d4b547e
commit 1d22a2c164
2 changed files with 14 additions and 5 deletions

View File

@ -1,3 +1,9 @@
Wed Jun 17 20:20:48 1998 Mark Mitchell <mark@markmitchell.com>
* cse.c (cse_basic_block): Don't include NOTE insns in the count
that is used to decide whether or not it is time to erase the
equivalence table.
Wed Jun 17 18:30:43 1998 Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
* rs6000/linux.h (JUMP_TABLES_IN_TEXT_SECTION): Define to zero.

View File

@ -8507,16 +8507,20 @@ cse_basic_block (from, to, next_branch, around_loop)
for (insn = from; insn != to; insn = NEXT_INSN (insn))
{
register enum rtx_code code;
register enum rtx_code code = GET_CODE (insn);
int i;
struct table_elt *p, *next;
/* If we have processed 1,000 insns, flush the hash table to avoid
extreme quadratic behavior.
/* If we have processed 1,000 insns, flush the hash table to
avoid extreme quadratic behavior. We must not include NOTEs
in the count since there may be more or them when generating
debugging information. If we clear the table at different
times, code generated with -g -O might be different than code
generated with -O but not -g.
??? This is a real kludge and needs to be done some other way.
Perhaps for 2.9. */
if (num_insns++ > 1000)
if (code != NOTE && num_insns++ > 1000)
{
for (i = 0; i < NBUCKETS; i++)
for (p = table[i]; p; p = next)
@ -8555,7 +8559,6 @@ cse_basic_block (from, to, next_branch, around_loop)
}
}
code = GET_CODE (insn);
if (GET_MODE (insn) == QImode)
PUT_MODE (insn, VOIDmode);