[PATCH] D77229: [Analyzer][WIP] Avoid handling of LazyCompundVals in IteratorModeling

Artem Dergachev via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Tue Apr 7 10:19:08 PDT 2020


NoQ added a comment.

In D77229#1966888 <https://reviews.llvm.org/D77229#1966888>, @baloghadamsoftware wrote:

> Not so strange, of course, they are destructed before the `postCall()` as they should be, but the question still remains: how to keep them alive for post-checking the call, but not forever.


Nope, temporaries are destroyed at the end of the full-expression, which is much later than `PostCall`.

What code are you debugging?



================
Comment at: clang/lib/StaticAnalyzer/Core/ExprEngineCXX.cpp:231-235
+        if (dyn_cast_or_null<InitListExpr>(LCtx->getParentMap().getParent(E))) {
+          MemRegionManager &MRMgr = getSValBuilder().getRegionManager();
+          return std::make_pair(
+              State, loc::MemRegionVal(MRMgr.getCXXTempObjectRegion(E, LCtx)));
+        }
----------------
baloghadamsoftware wrote:
> Did you mean this piece of code? It returns `&temp_object{struct simple_iterator_base, S44016}`. Is this correct? If so, I will factor out this code and put it into a common function to be used by both this function and the original one.
No, this one's for members, we've been talking about base classes.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D77229/new/

https://reviews.llvm.org/D77229





More information about the cfe-commits mailing list