diff options
| author | zack <zack@138bc75d-0d04-0410-961f-82ee72b054a4> | 2000-02-14 01:32:19 +0000 |
|---|---|---|
| committer | zack <zack@138bc75d-0d04-0410-961f-82ee72b054a4> | 2000-02-14 01:32:19 +0000 |
| commit | ea2fde7c11345864bf1059b48951d567fe6e014d (patch) | |
| tree | 975bd44e0ae313ec71bd84cc111022d497eb7a4d | |
| parent | 17d23e163fb637f713240c69bd8cb11b00fa8daa (diff) | |
| download | ppe42-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/ChangeLog | 7 | ||||
| -rw-r--r-- | gcc/cse.c | 9 |
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 |

