summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorzack <zack@138bc75d-0d04-0410-961f-82ee72b054a4>2000-02-14 01:32:19 +0000
committerzack <zack@138bc75d-0d04-0410-961f-82ee72b054a4>2000-02-14 01:32:19 +0000
commitea2fde7c11345864bf1059b48951d567fe6e014d (patch)
tree975bd44e0ae313ec71bd84cc111022d497eb7a4d
parent17d23e163fb637f713240c69bd8cb11b00fa8daa (diff)
downloadppe42-gcc-ea2fde7c11345864bf1059b48951d567fe6e014d.tar.gz
ppe42-gcc-ea2fde7c11345864bf1059b48951d567fe6e014d.zip
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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@31962 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/cse.c9
2 files changed, 15 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 62b8265a7d4..99d6003dec9 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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.
diff --git a/gcc/cse.c b/gcc/cse.c
index 9aced05f607..822986f1282 100644
--- 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
OpenPOWER on IntegriCloud