--- Comment #6 from Richard Biener <rguenth at gcc dot gnu.org> ---
(In reply to Tom de Vries from comment #4)
> (In reply to rguent...@suse.de from comment #3)
> > This is the usual "you should not repeat analysis during transform" issue.
> > The vectorizer gets around this by caching relevant scalar evolution
> > but obviously that's difficult if using generic stuff like
> > canonicalize_loop_ivs ...
> I wonder if it makes sense to add an interface to scalar_evolution_info to
> update the instantiated_below field for existing entries. So, before the
> loop versioning, the loop preheader is bb10, but after loop versioning, it's
> bb15. If we update the instantiated_below field from 10 to 15, the cached
> scalar evolution info can still be used.
I don't see how this is a sound API that can be used without too much
possibility to shoot yourself in the foot ;)
I _think_ that eventually the bug is fixed if you move the update_ssa after
versioning to after canonicalize_loop_ivs which should have a similar effect
than what you propose. GRAPHITE relies on defered update_ssa as well to
maintain "compatible" SCEV analysis results.