Add lifetime categories attributes
authorMatthias Gehre <M.Gehre@gmx.de>
Thu, 25 Jul 2019 17:50:51 +0000 (17:50 +0000)
committerMatthias Gehre <M.Gehre@gmx.de>
Thu, 25 Jul 2019 17:50:51 +0000 (17:50 +0000)
commitd293cbd5fd44549bb48314499bc3b266d8967249
treeab6670feffca7c33388bc45e9dba4f3aa4bef18b
parent393094859e45f7a6ccbade1c919dee2c2e2f3a7e
Add lifetime categories attributes

Summary:
This is the first part of work announced in
"[RFC] Adding lifetime analysis to clang" [0],
i.e. the addition of the [[gsl::Owner(T)]] and
[[gsl::Pointer(T)]] attributes, which
will enable user-defined types to participate in
the lifetime analysis (which will be part of the
next PR).
The type `T` here is called "DerefType" in the paper,
and denotes the type that an Owner owns and a Pointer
points to. E.g. `std::vector<int>` should be annotated
with `[[gsl::Owner(int)]]` and
a `std::vector<int>::iterator` with `[[gsl::Pointer(int)]]`.

[0] http://lists.llvm.org/pipermail/cfe-dev/2018-November/060355.html

Reviewers: gribozavr

Subscribers: xazax.hun, cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D63954

llvm-svn: 367040
clang/include/clang/Basic/Attr.td
clang/include/clang/Basic/AttrDocs.td
clang/include/clang/Basic/DiagnosticSemaKinds.td
clang/lib/Parse/ParseDecl.cpp
clang/lib/Sema/SemaDeclAttr.cpp
clang/test/AST/ast-dump-attr.cpp
clang/test/Misc/pragma-attribute-supported-attributes-list.test
clang/test/SemaCXX/attr-gsl-owner-pointer.cpp [new file with mode: 0644]
clang/test/SemaOpenCL/invalid-kernel-attrs.cl
clang/utils/TableGen/ClangAttrEmitter.cpp