------- Comment #2 from rguenth at gcc dot gnu dot org 2007-09-20 11:50 ------- At least the unmodifiable_var_p (alias) call looks suspicious (but probably unrelated to the problem):
Index: tree-ssa-alias.c =================================================================== --- tree-ssa-alias.c (revision 128618) +++ tree-ssa-alias.c (working copy) @@ -561,7 +561,7 @@ set_initial_properties (struct alias_inf subvar_t svars; svars = get_subvars_for_var (SFT_PARENT_VAR (alias)); for (; svars; svars = svars->next) - if (!unmodifiable_var_p (alias)) + if (!unmodifiable_var_p (svars->var)) mark_call_clobbered (svars->var, pi->escape_mask); } else if (!unmodifiable_var_p (alias)) what we have is that SFT_PARENT_VAR is of type 'union Meep' which has quite a lot of fields and the above loop is quadratic in the number of fields. -- rguenth at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |rguenth at gcc dot gnu dot | |org Keywords| |alias Summary|tree struct aliasing goes |tree struct aliasing goes |into a loop marking call |into a loop marking call |clobbers. |clobbers. http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33508