summaryrefslogtreecommitdiffstats
path: root/clang/lib/Basic/Attributes.cpp
diff options
context:
space:
mode:
authorAlex Lorenz <arphaman@gmail.com>2017-04-18 14:33:39 +0000
committerAlex Lorenz <arphaman@gmail.com>2017-04-18 14:33:39 +0000
commit9e7bf161ea9083e9282cf4af72ac0d5f13115753 (patch)
treea51f80872174c643ea9571063b38a035b28ded07 /clang/lib/Basic/Attributes.cpp
parentf9799c70a3dbb58b68b45640383ca2fe3d70caf6 (diff)
downloadbcm5719-llvm-9e7bf161ea9083e9282cf4af72ac0d5f13115753.tar.gz
bcm5719-llvm-9e7bf161ea9083e9282cf4af72ac0d5f13115753.zip
Add #pragma clang attribute
This is a recommit of r300539 that was reverted in r300543 due to test failures. The original commit message is displayed below: 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: 300556
Diffstat (limited to 'clang/lib/Basic/Attributes.cpp')
-rw-r--r--clang/lib/Basic/Attributes.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/clang/lib/Basic/Attributes.cpp b/clang/lib/Basic/Attributes.cpp
index c215366fc39..b7570d03c85 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");
+}
OpenPOWER on IntegriCloud