diff options
| author | mmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4> | 1998-06-17 20:20:21 +0000 |
|---|---|---|
| committer | mmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4> | 1998-06-17 20:20:21 +0000 |
| commit | 7e2d02d831987b45ea5969f43700da3ebefc87bd (patch) | |
| tree | a62242f940ad1226ecbce193b9add4fdb4308b10 /gcc | |
| parent | d7eb9ca48e44edaff1adafe0594e576c392001e9 (diff) | |
| download | ppe42-gcc-7e2d02d831987b45ea5969f43700da3ebefc87bd.tar.gz ppe42-gcc-7e2d02d831987b45ea5969f43700da3ebefc87bd.zip | |
* 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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@20548 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
| -rw-r--r-- | gcc/ChangeLog | 6 | ||||
| -rw-r--r-- | gcc/cse.c | 13 |
2 files changed, 14 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e271a4752c6..d68654bad5b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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. diff --git a/gcc/cse.c b/gcc/cse.c index 6d2e8c9c6e7..f104ff586dc 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); |

