ymandel added inline comments.
================ Comment at: clang/lib/Analysis/FlowSensitive/Models/UncheckedOptionalAccessModel.cpp:110 + return false; + auto TypeName = Type->getAsCXXRecordDecl()->getQualifiedNameAsString(); + return TypeName == "std::optional" || TypeName == "absl::optional" || ---------------- This could get expensive. Maybe add a FIXME to optimize this by avoiding `getQualifiedNameAsString`? ================ Comment at: clang/lib/Analysis/FlowSensitive/Models/UncheckedOptionalAccessModel.cpp:264 + +[](const CXXMemberCallExpr *E, LatticeTransferState &State) { + assignOptionalValue(*E->getImplicitObjectArgument(), State, + State.Env.getBoolLiteralValue(true)); ---------------- I realize this is consistent with the previous version, but just noticed this issue. By using `assignOptionalValue` for `emplace` (and `reset`), does that break the following case? ``` optional<int> opt; if (p) opt.emplace(3); someCode(); if (p) use(*opt); ``` Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D121602/new/ https://reviews.llvm.org/D121602 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits