xazax.hun added inline comments.
================ Comment at: clang/lib/StaticAnalyzer/Checkers/MoveChecker.cpp:556 + bool IsLocal = + isa_and_nonnull<VarRegion, CXXLifetimeExtendedObjectRegion>(MR) && + isa<StackSpaceRegion>(MR->getMemorySpace()); ---------------- tomasz-kaminski-sonarsource wrote: > xazax.hun wrote: > > I think strictly speaking this might be "unsound" resulting in false > > positives in scenarios like: > > ``` > > void f(bool reset) { > > static T&& extended = getTemp(); > > if (reset) { > > extended = getTemp(); > > return; > > } > > consume(std::move(extended)); > > f(true); > > extended.use(); > > } > > ``` > > > > In case the call to `f(true)` is not inlined (or in other cases there is > > some aliasing the analyzer does not know about), we might not realize that > > the object is reset and might falsely report a use after move. > > > > But I think this is probably sufficiently rare that we do not care about > > those. > Aren't such case already excluded by the > `isa<StackSpaceRegion>(MR->getMemorySpace())`, in a same way as we do for > variables? > In such case, we should be creating > `getCXXStaticLifetimeExtendedObjectRegion` so it will not be located on stack. Whoops, indeed, sorry. ================ Comment at: clang/lib/StaticAnalyzer/Checkers/StackAddrEscapeChecker.cpp:101 + QualType Ty = LER->getValueType().getLocalUnqualifiedType(); + os << "stack memory associated with temporary object of type '"; + Ty.print(os, Ctx.getPrintingPolicy()); ---------------- tomasz-kaminski-sonarsource wrote: > xazax.hun wrote: > > Is this a good wording for static lifetime extended temporaries? > Lifetime extended static temporaries should never enter here, as they are not > in `StackSpaceRegion`. > Previously we have had `CXXStaticTempObjects` and now they are turned into > `CXXStaticLifetimeExtendedObjectRegion`. Ah, my bad. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D151325/new/ https://reviews.llvm.org/D151325 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits