+2014-03-06 Alexandre Oliva <aoliva@redhat.com>
+
+ PR debug/60381
+ Revert:
+ 2014-02-28 Alexandre Oliva <aoliva@redhat.com>
+ PR debug/59992
+ * cselib.c (remove_useless_values): Skip to avoid quadratic
+ behavior if the condition moved from...
+ (cselib_process_insn): ... here holds.
+
2014-03-05 Jakub Jelinek <jakub@redhat.com>
PR plugins/59335
{
cselib_val **p, *v;
- if (n_useless_values <= MAX_USELESS_VALUES
- /* remove_useless_values is linear in the hash table size. Avoid
- quadratic behavior for very large hashtables with very few
- useless elements. */
- || ((unsigned int)n_useless_values
- <= (cselib_hash_table.elements () - n_debug_values) / 4))
- return;
-
/* First pass: eliminate locations that reference the value. That in
turn can make more values useless. */
do
cselib_current_insn = NULL_RTX;
- remove_useless_values ();
+ if (n_useless_values > MAX_USELESS_VALUES
+ /* remove_useless_values is linear in the hash table size. Avoid
+ quadratic behavior for very large hashtables with very few
+ useless elements. */
+ && ((unsigned int)n_useless_values
+ > (cselib_hash_table.elements () - n_debug_values) / 4))
+ remove_useless_values ();
}
/* Initialize cselib for one pass. The caller must also call