[PATCH] D64448: gsl::Owner/gsl::Pointer: Add implicit annotations for some std types

Matthias Gehre via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Tue Jul 30 14:24:24 PDT 2019

mgehre added inline comments.

Comment at: clang/include/clang/Sema/Sema.h:6097
+  /// Add [[gsl::Owner]] and [[gsl::Pointer]] attributes for std:: types.
+  void addDefaultGslPointerAttribute(TypedefNameDecl *TD);
gribozavr wrote:
> It seems like this function does not add gsl::Owner.
Fixed comment

Comment at: clang/lib/Sema/SemaTemplate.cpp:1689
+  addDefaultGslOwnerPointerAttribute(NewClass);
gribozavr wrote:
> It shouldn't be necessary to perform inference here, instead, the attributes should be instantiated, see `instantiateDependentAlignedAttr` in SemaTemplateInstantiateDecl.cpp for an example.
>From what I understand, here the attribute is put on the `ClassTemplateDecl`. Without this, there would be no attribute to instantiate from?
The instantiation of OwnerAttr/PointerAttr is auto-generated into instantiateTemplateAttribute() in `build/tools/clang/include/clang/Sema/AttrTemplateInstantiate.inc`.

Comment at: clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:702
   SemaRef.InstantiateAttrs(TemplateArgs, D, Typedef);
+  SemaRef.addDefaultGslPointerAttribute(Typedef);
gribozavr wrote:
> Ditto, should not be necessary to perform inference here.
I'll move this to already act on the typedef in the ClassTemplateDecl (instead of the instantiation here).

  rG LLVM Github Monorepo



More information about the cfe-commits mailing list