baloghadamsoftware added a comment. In D77229#1980665 <https://reviews.llvm.org/D77229#1980665>, @NoQ wrote:
> Aha, ok, sounds like i thought that it's not worth it to inline the > constructor for an argument when the call itself is not inlined, therefore i > didn't model the construction context for this call. See also D49443#1193290 > <https://reviews.llvm.org/D49443#1193290>. Your example shows that i was > wrong to give up and this is something we should totally implement. > > The proper solution is to model the target region in `ExprEngine` as a > parameter region based on the `ParmVarDecl` that //would have been used if > the function was inlined//, instead of the dummy temporary. Then it'll be > kept alive as an object under construction. > > The most annoying part is to make sure that you're using the same > `FunctionDecl` consistently everywhere. If this turns out to be too annoying, > we could also replace `VarRegion{ParmVarDecl}` with a new sort of region that > doesn't include a specific `ParmVarDecl` but merely a parameter index (and > maybe a type or a call site expr), so that not to bother with redeclarations; > this is the right thing to do anyway. I am trying to understand where I have to implement this but I have some problems. The first is that when a function is not inlined it does not have a `StackFrameContext`. What to use instead? I usually try to use the caller's stack frame but it seems to be incorrect and causes assertions. Or should we create a stack frame for non-inlined functions as well? Where are the parameter regions created? In `case ConstructionContext::ArgumentKind` of function `ExprEngine::handleConstructionContext()`? Or in `CallEvent::getParameterLocation()`? Or somewhere else? I tried to look at D49443 <https://reviews.llvm.org/D49443>, especially the diff where you gave up regions for parameters of non-inlined functions but there you only had changes in `CallEvent`. For using the same `FunctionDecl`: would it help if we always use the "first" `Decl` in the chain? CHANGES SINCE LAST ACTION https://reviews.llvm.org/D77229/new/ https://reviews.llvm.org/D77229 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits