------- 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