diff options
| author | Alex Lorenz <arphaman@gmail.com> | 2017-04-18 14:33:39 +0000 | 
|---|---|---|
| committer | Alex Lorenz <arphaman@gmail.com> | 2017-04-18 14:33:39 +0000 | 
| commit | 9e7bf161ea9083e9282cf4af72ac0d5f13115753 (patch) | |
| tree | a51f80872174c643ea9571063b38a035b28ded07 /clang/lib/Basic | |
| parent | f9799c70a3dbb58b68b45640383ca2fe3d70caf6 (diff) | |
| download | bcm5719-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')
| -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 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"); +}  | 

