1*67e74705SXin Li #include "clang/Basic/Attributes.h"
2*67e74705SXin Li #include "clang/Basic/IdentifierTable.h"
3*67e74705SXin Li #include "llvm/ADT/StringSwitch.h"
4*67e74705SXin Li using namespace clang;
5*67e74705SXin Li
hasAttribute(AttrSyntax Syntax,const IdentifierInfo * Scope,const IdentifierInfo * Attr,const TargetInfo & Target,const LangOptions & LangOpts)6*67e74705SXin Li int clang::hasAttribute(AttrSyntax Syntax, const IdentifierInfo *Scope,
7*67e74705SXin Li const IdentifierInfo *Attr, const TargetInfo &Target,
8*67e74705SXin Li const LangOptions &LangOpts) {
9*67e74705SXin Li StringRef Name = Attr->getName();
10*67e74705SXin Li // Normalize the attribute name, __foo__ becomes foo.
11*67e74705SXin Li if (Name.size() >= 4 && Name.startswith("__") && Name.endswith("__"))
12*67e74705SXin Li Name = Name.substr(2, Name.size() - 4);
13*67e74705SXin Li
14*67e74705SXin Li #include "clang/Basic/AttrHasAttributeImpl.inc"
15*67e74705SXin Li
16*67e74705SXin Li return 0;
17*67e74705SXin Li }
18