http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50904
--- Comment #18 from rguenther at suse dot de <rguenther at suse dot de> 2011-12-01 08:51:07 UTC --- On Sat, 12 Nov 2011, ebotcazou at gcc dot gnu.org wrote: > 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... lim3 was added as a "hack", now yes, cunroll needs ccp after it (but it's there in the form of DOM and VRP). It's a pass ordering issue that we cannot ever solve. > Recategorizing, at least temporarily, for further investigation. If nothing > can be done at the Tree level, we could consider applying the RTL patch. Please - it seems like a missed optimization there, too. Richard.