cse.c (cse_altered): New internal flag.
authorZack Weinberg <zack@wolery.cumb.org>
Mon, 14 Feb 2000 01:32:19 +0000 (01:32 +0000)
committerZack Weinberg <zack@gcc.gnu.org>
Mon, 14 Feb 2000 01:32:19 +0000 (01:32 +0000)
2000-02-13  Zack Weinberg  <zack@wolery.cumb.org>

* cse.c (cse_altered): New internal flag.
(cse_insn): Set it if we changed an insn.
(cse_main): Clear cse_altered before each basic block.
Only garbage collect if cse_altered is true afterward.

From-SVN: r31962

gcc/ChangeLog
gcc/cse.c

index 62b8265a7d42b319a24dac0ba6714d3498e85a18..99d6003dec94540b48e0fcaaa881200372d43d72 100644 (file)
@@ -1,3 +1,10 @@
+2000-02-13  Zack Weinberg  <zack@wolery.cumb.org>
+
+       * cse.c (cse_altered): New internal flag.
+       (cse_insn): Set it if we changed an insn.
+       (cse_main): Clear cse_altered before each basic block.
+       Only garbage collect if cse_altered is true afterward.
+
 Sun Feb 13 14:12:28 2000  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
 
        * sparc/sol2.h (LIB_SPEC): Link -ldl if profiling.
index 9aced05f6072b21618e12971a3ae25bfbb3436fd..822986f1282b0ad147c3a2f4a87de80b25a46c5b 100644 (file)
--- a/gcc/cse.c
+++ b/gcc/cse.c
@@ -371,6 +371,11 @@ static int max_uid;
 
 #define INSN_CUID(INSN) (uid_cuid[INSN_UID (INSN)])
 
+/* Nonzero if this pass has made changes, and therefore it's
+   worthwhile to run the garbage collector.  */
+
+static int cse_altered;
+
 /* Nonzero if cse has altered conditional jump insns
    in such a way that jump optimization should be redone.  */
 
@@ -5313,6 +5318,7 @@ cse_insn (insn, libcall_insn)
       /* If we made a change, recompute SRC values.  */
       if (src != sets[i].src)
         {
+         cse_altered = 1;
           do_not_record = 0;
           hash_arg_in_memory = 0;
          sets[i].src = src;
@@ -6784,6 +6790,7 @@ cse_main (f, nregs, after_loop, file)
   insn = f;
   while (insn)
     {
+      cse_altered = 0;
       cse_end_of_basic_block (insn, &val, flag_cse_follow_jumps, after_loop,
                              flag_cse_skip_blocks);
 
@@ -6834,7 +6841,7 @@ cse_main (f, nregs, after_loop, file)
          cse_jumps_altered |= old_cse_jumps_altered;
        }
 
-      if (ggc_p)
+      if (ggc_p && cse_altered)
        ggc_collect ();
 
 #ifdef USE_C_ALLOCA