http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50904
Eric Botcazou <ebotcazou at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|ASSIGNED |NEW CC| |rguenth at gcc dot gnu.org Component|rtl-optimization |tree-optimization AssignedTo|ebotcazou at gcc dot |unassigned at gcc dot |gnu.org |gnu.org --- Comment #15 from Eric Botcazou <ebotcazou at gcc dot gnu.org> 2011-11-12 16:45:13 UTC --- > I don't see why RTL invariant motion should move the one variant but not > the other. Of course this also shows that we should, after loop unrolling > on the tree level, also perform loop invariant motion again ... AFAICS we already do that (lim3 is run after cunroll). The problem is that lim3 considers that the loads cannot be hoisted because they are "dependent". And it looks like a ccp pass is missing after cunroll as there is a lot of cruft... Recategorizing, at least temporarily, for further investigation. If nothing can be done at the Tree level, we could consider applying the RTL patch.