Fix for debug/35065 (compile time hog)

Michael Matz matz@suse.de
Tue Feb 12 16:24:00 GMT 2008


Hi,

there's an obvious error in clobber_variable_part which causes 
instability.  Depending on if the searched item is the first in list or 
not, either only it is removed, or the whole list is emptied.  This 
dependence on input order causes instability of the OUT sets, and as this 
is a loop, causes oscillation and an endless loop.

This fixes it.  I'm currently regstrapping on i686 and x86_64.  Okay for 
trunk if that passes?


Ciao,
Michael.

	* var-tracking.c (clobber_variable_part): Correctly traverse the
	list.

Index: gcc/var-tracking.c
===================================================================
--- gcc/var-tracking.c	(revision 132254)
+++ gcc/var-tracking.c	(working copy)
@@ -2595,6 +2655,8 @@ clobber_variable_part (dataflow_set *set
 			      pool_free (attrs_pool, anode);
 			      *anextp = anext;
 			    }
+			  else
+			    anextp = &anode->next;
 			}
 		    }
 



More information about the Gcc-patches mailing list