xazax.hun accepted this revision. xazax.hun added inline comments.
================ Comment at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/MemRegion.h:1282 + LLVM_ATTRIBUTE_RETURNS_NONNULL + const Expr *getExpr() const { return Ex; } + LLVM_ATTRIBUTE_RETURNS_NONNULL ---------------- tomasz-kaminski-sonarsource wrote: > xazax.hun wrote: > > Do we actually need this `Expr` in the memory region? > Yes they are needed for region identification, as one variable my be lifetime > extending multiple temporary. > For illustration consider following example from test: > ``` > auto const& viaReference = RefAggregate{10, Composite{}}; // extends `int`, > `Composite`, and `RefAggregate` > clang_analyzer_dump(viaReference); // expected-warning-re > {{&lifetime_extended_object{RefAggregate, viaReference, S{{[0-9]+}}} }} > clang_analyzer_dump(viaReference.rx); // expected-warning-re > {{&lifetime_extended_object{int, viaReference, S{{[0-9]+}}} }} > clang_analyzer_dump(viaReference.ry); // expected-warning-re > {{&lifetime_extended_object{Composite, viaReference, S{{[0-9]+}}} }} > ``` > `viaReference` declaration is extending 3 temporaries, and they get > identified by expression. Ah, OK. Makes sense, thanks! 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