[PATCH] D63279: [Analyzer] Unroll for-loops where the upper boundary is a variable with know value
Kristóf Umann via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Jul 17 07:43:11 PDT 2019
Szelethus added a comment.
I think you forgot to remove `/* */` and clang formatting before uploading the patch.
Comment at: lib/StaticAnalyzer/Core/LoopUnrolling.cpp:214-216
+ const Expr *BoundExpr = CondOp->getLHS()->IgnoreParenImpCasts();
+ if (BoundExpr == Matches.getNodeAs<Expr>("boundVarOperand"))
+ BoundExpr = CondOp->getRHS()->IgnoreParenImpCasts();
> NoQ wrote:
> > Szelethus wrote:
> > > Alright, I stood on top of this for longer than I'd like to admit, what's happening here? Like, `CondExpr`, with the given testfile, should be `i < n`, right? Then `BoundExpr` is supposed to be `i`, and if that is equal to `Matches.getNodeAs<Expr>("boundVarOperand")` (which I guess is supposed to `n`), which I'm not sure how it could ever happen, we assign the RHS of the assignment to `BoundExpr`?
> > >
> > > What does this do? Why is it needed? Which 2 test cases cover these lines?
> > I think this is about `i < n` vs. `n > i`.
> If that is the case, I'd be more comfortable seeing a test for it (there doesn't seem to be any) before landing this.
I'd appreciate a few lines of comment, given that there's evidence that it might not be obvious what's happening here :^)
CHANGES SINCE LAST ACTION
More information about the cfe-commits