aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Mitchell <mark@markmitchell.com>1998-06-17 20:20:21 +0000
committerMark Mitchell <mmitchel@gcc.gnu.org>1998-06-17 20:20:21 +0000
commit1d22a2c1640bb948e7db64d9908d920faf2993ff (patch)
treea62242f940ad1226ecbce193b9add4fdb4308b10
parent316d4b547e6de0d43de81011508fe23aa009b38a (diff)
downloadgcc-1d22a2c1640bb948e7db64d9908d920faf2993ff.zip
gcc-1d22a2c1640bb948e7db64d9908d920faf2993ff.tar.gz
gcc-1d22a2c1640bb948e7db64d9908d920faf2993ff.tar.bz2
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
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/cse.c13
2 files changed, 14 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index e271a47..d68654b 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 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);