================ @@ -470,10 +474,24 @@ static void visitFunctionCallArguments(IndirectLocalPath &Path, Expr *Call, VisitGSLPointerArg(Callee, Args[0], !Callee->getReturnType()->isReferenceType()); } else { - if (auto *CCE = dyn_cast<CXXConstructExpr>(Call); - CCE && CCE->getConstructor()->getParent()->hasAttr<PointerAttr>()) - VisitGSLPointerArg(CCE->getConstructor()->getParamDecl(0), Args[0], - true); + if (auto *Ctor = dyn_cast<CXXConstructExpr>(Call)) { + const auto *ClassD = Ctor->getConstructor()->getParent(); + // Constructing the Container<GSLPointer> case (e.g. + // std::optional<string_view>) case. + if (const auto *CTSD = + dyn_cast<ClassTemplateSpecializationDecl>(ClassD)) { + if (isFirstTemplateArgumentGSLPointer(CTSD->getTemplateArgs()) && + CTSD->hasAttr<OwnerAttr>()) { + VisitGSLPointerArg(Ctor->getConstructor()->getParamDecl(0), + Args[0], true); + return; ---------------- hokein wrote:
oops, it is not intended. https://github.com/llvm/llvm-project/pull/107213 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits