PR debug/60381
authoraoliva <aoliva@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 6 Mar 2014 07:04:47 +0000 (07:04 +0000)
committeraoliva <aoliva@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 6 Mar 2014 07:04:47 +0000 (07:04 +0000)
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@208361 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/cselib.c

index b71499d..f231dd4 100644 (file)
@@ -1,3 +1,13 @@
+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
index 0fcfe28..4dfc557 100644 (file)
@@ -681,14 +681,6 @@ remove_useless_values (void)
 {
   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
@@ -2720,7 +2712,13 @@ cselib_process_insn (rtx insn)
 
   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