[PATCH] D110973: [DA] Handle mismatching loop levels by considering them non-linear
Bardia Mahjour via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed May 4 12:06:05 PDT 2022
bmahjour added inline comments.
================
Comment at: llvm/lib/Analysis/DependenceAnalysis.cpp:917
+ DispositionTy Disposition = SE->getLoopDisposition(AddRec, LoopNest);
+ if (Disposition != DispositionTy::LoopInvariant &&
+ Disposition != DispositionTy::LoopComputable)
----------------
congzhe wrote:
> congzhe wrote:
> > Thanks for the change, It looks good to me. I don't know if Micheal has further comments?
> >
> > [nit] I'm wondering if it would be better to simplify the code like this?
> > ```
> > if (SE->getLoopDisposition(AddRec, LoopNest) == ScalarEvolution::LoopDisposition::LoopVariant )
> > return false;
> > ```
> > Thanks for the change, It looks good to me. I don't know if Micheal has further comments?
> >
> > [nit] I'm wondering if it would be better to simplify the code like this?
> > ```
> > if (SE->getLoopDisposition(AddRec, LoopNest) == ScalarEvolution::LoopDisposition::LoopVariant )
> > return false;
> > ```
>
> Actually could be futher simplified to
> ```
> if (SE->getLoopDisposition(AddRec, LoopNest) == ScalarEvolution::LoopVariant )
> return false;
> ```
>
I thought about that too, but decided to check for `LoopComputable` and `LoopInvariant` specifically, in case new enums are added to `LoopDisposition` in the future. The logic also makes a bit more sense when I think about it as neither invariant nor computable. LoopVariant isn't the best wording for what it really means.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D110973/new/
https://reviews.llvm.org/D110973
More information about the llvm-commits
mailing list