diff options
author | Alex Lorenz <arphaman@gmail.com> | 2017-04-18 09:41:47 +0000 |
---|---|---|
committer | Alex Lorenz <arphaman@gmail.com> | 2017-04-18 09:41:47 +0000 |
commit | 0a849f47d2f76a09be9d30d3f7809663efaf87e8 (patch) | |
tree | 812a6e29782dfec24bdb79dc28a0f6bdf4772a19 /clang/lib/Basic/Attributes.cpp | |
parent | a4e79cca776269505453882eb3aa90bfa281dbe8 (diff) | |
download | llvm-0a849f47d2f76a09be9d30d3f7809663efaf87e8.zip llvm-0a849f47d2f76a09be9d30d3f7809663efaf87e8.tar.gz llvm-0a849f47d2f76a09be9d30d3f7809663efaf87e8.tar.bz2 |
Add #pragma clang attribute
The new '#pragma clang attribute' directive can be used to apply attributes to
multiple declarations. An attribute must satisfy the following conditions to
be supported by the pragma:
- It must have a subject list that's defined in the TableGen file.
- It must be documented.
- It must not be late parsed.
- It must have a GNU/C++11 spelling.
Differential Revision: https://reviews.llvm.org/D30009
llvm-svn: 300539
Diffstat (limited to 'clang/lib/Basic/Attributes.cpp')
-rw-r--r-- | clang/lib/Basic/Attributes.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/clang/lib/Basic/Attributes.cpp b/clang/lib/Basic/Attributes.cpp index c215366..b7570d0 100644 --- a/clang/lib/Basic/Attributes.cpp +++ b/clang/lib/Basic/Attributes.cpp @@ -1,4 +1,5 @@ #include "clang/Basic/Attributes.h" +#include "clang/Basic/AttrSubjectMatchRules.h" #include "clang/Basic/IdentifierTable.h" #include "llvm/ADT/StringSwitch.h" using namespace clang; @@ -15,3 +16,13 @@ int clang::hasAttribute(AttrSyntax Syntax, const IdentifierInfo *Scope, return 0; } + +const char *attr::getSubjectMatchRuleSpelling(attr::SubjectMatchRule Rule) { + switch (Rule) { +#define ATTR_MATCH_RULE(NAME, SPELLING, IsAbstract) \ + case attr::NAME: \ + return SPELLING; +#include "clang/Basic/AttrSubMatchRulesList.inc" + } + llvm_unreachable("Invalid subject match rule"); +} |