From: Jan Hubicka Date: Thu, 27 Jul 2006 16:03:22 +0000 (+0200) Subject: re PR middle-end/28071 (A file that can not be compiled in reasonable time/space) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=96d0cc8186a650f653ec0bb47168b3ccb6426ce2;p=gcc.git re PR middle-end/28071 (A file that can not be compiled in reasonable time/space) PR rtl-optimization/28071 * cselib.c (cselib_process_insn): Don't remove useless values too often for very large hashtables. From-SVN: r115777 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4ebe39ffb02..c5c0d6ff5a5 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2006-07-27 Jan Hubicka + + PR rtl-optimization/28071 + * cselib.c (cselib_process_insn): Don't remove useless values too + often for very large hashtables. + 2006-07-27 Jan Hubicka PR rtl-optimization/28071 diff --git a/gcc/cselib.c b/gcc/cselib.c index 0fc8aeef2cf..edfc328c0d8 100644 --- a/gcc/cselib.c +++ b/gcc/cselib.c @@ -1437,7 +1437,11 @@ cselib_process_insn (rtx insn) cselib_current_insn_in_libcall = false; cselib_current_insn = 0; - if (n_useless_values > MAX_USELESS_VALUES) + if (n_useless_values > MAX_USELESS_VALUES + /* remove_useless_values is linear in the hash table size. Avoid + quadratic behaviour for very large hashtables with very few + useless elements. */ + && (unsigned int)n_useless_values > cselib_hash_table->n_elements / 4) remove_useless_values (); }