From 1d22a2c1640bb948e7db64d9908d920faf2993ff Mon Sep 17 00:00:00 2001 From: Mark Mitchell Date: Wed, 17 Jun 1998 20:20:21 +0000 Subject: 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 --- gcc/cse.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'gcc/cse.c') diff --git a/gcc/cse.c b/gcc/cse.c index 6d2e8c9..f104ff5 100644 --- a/gcc/cse.c +++ b/gcc/cse.c @@ -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); -- cgit v1.1