[PATCH] D17201: [SCEV] Introduce a guarded backedge taken count and use it in LAA and LV
silviu.baranga@arm.com via llvm-commits
llvm-commits at lists.llvm.org
Mon Feb 22 09:20:53 PST 2016
sbaranga added inline comments.
================
Comment at: lib/Analysis/ScalarEvolution.cpp:5683
@@ -5607,1 +5682,3 @@
+ // Try to compute it using assumptions.
+ return computeExitLimitFromICmp(L, ExitCond, TBB, FBB, ControlsExit, true);
}
----------------
sanjoy wrote:
> sbaranga wrote:
> > sanjoy wrote:
> > > I don't think this is the right layering -- for instance, this forces SCEV clients that don't want speculative / predicated trip counts to pay to cost of computing them.
> > >
> > > I'd say SCEV users that care about predicated trip counts should do this retry themselves, i.e. something like
> > >
> > > ```
> > > const SCEV *TC = getBackedgeTakenCount(L);
> > > if (TC is SCEVCouldNotCompute) {
> > > SE->forgetLoop(L);
> > > TC = getPredicatedBackedgeTakenCount(L);
> > > }
> > > ```
> > >
> > Good point. I'll look into how we could compute this more lazily.
> >
> > Why do you think we would need a SE->forgetLoop() here? FWIW I'm generally trying to avoid having to invalidate the analysis for a given loop.
> > Why do you think we would need a SE->forgetLoop() here?
>
> To forget the cached CouldNotCompute trip count. But you're right -- we're probably better off not invalidating the whole analysis -- we can just have the second call to `getPredicatedBackedgeTakenCount` overwrite CouldNotCompute.
Thanks! We'll take this approach then.
http://reviews.llvm.org/D17201
More information about the llvm-commits
mailing list