xref: /aosp_15_r20/external/clang/lib/Basic/Attributes.cpp (revision 67e74705e28f6214e480b399dd47ea732279e315)
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