This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug tree-optimization/83126] [8 Regression] ICE in transform_to_exit_first_loop_alt, at tree-parloops.c:1713


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83126

--- Comment #6 from Richard Biener <rguenth at gcc dot gnu.org> ---
(In reply to Tom de Vries from comment #4)
> (In reply to rguenther@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.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]