#include "clang/Sema/ParsedAttr.h"
#include "clang/AST/ASTContext.h"
#include "clang/Basic/AttrSubjectMatchRules.h"
#include "clang/Basic/IdentifierTable.h"
#include "clang/Basic/TargetInfo.h"
#include "clang/Sema/SemaInternal.h"
#include "llvm/ADT/SmallString.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/StringRef.h"
#include <cassert>
#include <cstddef>
#include <utility>
usingnamespaceclang;
IdentifierLoc *IdentifierLoc::create(ASTContext &Ctx, SourceLocation Loc,
IdentifierInfo *Ident) { … }
size_t ParsedAttr::allocated_size() const { … }
AttributeFactory::AttributeFactory() { … }
AttributeFactory::~AttributeFactory() = default;
static size_t getFreeListIndexForSize(size_t size) { … }
void *AttributeFactory::allocate(size_t size) { … }
void AttributeFactory::deallocate(ParsedAttr *Attr) { … }
void AttributeFactory::reclaimPool(AttributePool &cur) { … }
void AttributePool::takePool(AttributePool &pool) { … }
void AttributePool::takeFrom(ParsedAttributesView &List, AttributePool &Pool) { … }
namespace {
#include "clang/Sema/AttrParsedAttrImpl.inc"
}
const ParsedAttrInfo &ParsedAttrInfo::get(const AttributeCommonInfo &A) { … }
ArrayRef<const ParsedAttrInfo *> ParsedAttrInfo::getAllBuiltin() { … }
unsigned ParsedAttr::getMinArgs() const { … }
unsigned ParsedAttr::getMaxArgs() const { … }
unsigned ParsedAttr::getNumArgMembers() const { … }
bool ParsedAttr::hasCustomParsing() const { … }
bool ParsedAttr::diagnoseAppertainsTo(Sema &S, const Decl *D) const { … }
bool ParsedAttr::diagnoseAppertainsTo(Sema &S, const Stmt *St) const { … }
bool ParsedAttr::diagnoseMutualExclusion(Sema &S, const Decl *D) const { … }
bool ParsedAttr::appliesToDecl(const Decl *D,
attr::SubjectMatchRule MatchRule) const { … }
void ParsedAttr::getMatchRules(
const LangOptions &LangOpts,
SmallVectorImpl<std::pair<attr::SubjectMatchRule, bool>> &MatchRules)
const { … }
bool ParsedAttr::diagnoseLangOpts(Sema &S) const { … }
bool ParsedAttr::isTargetSpecificAttr() const { … }
bool ParsedAttr::isTypeAttr() const { … }
bool ParsedAttr::isStmtAttr() const { … }
bool ParsedAttr::existsInTarget(const TargetInfo &Target) const { … }
bool ParsedAttr::isKnownToGCC() const { … }
bool ParsedAttr::isSupportedByPragmaAttribute() const { … }
bool ParsedAttr::slidesFromDeclToDeclSpecLegacyBehavior() const { … }
bool ParsedAttr::acceptsExprPack() const { … }
unsigned ParsedAttr::getSemanticSpelling() const { … }
bool ParsedAttr::hasVariadicArg() const { … }
bool ParsedAttr::isParamExpr(size_t N) const { … }
void ParsedAttr::handleAttrWithDelayedArgs(Sema &S, Decl *D) const { … }
static unsigned getNumAttributeArgs(const ParsedAttr &AL) { … }
template <typename Compare>
static bool checkAttributeNumArgsImpl(Sema &S, const ParsedAttr &AL,
unsigned Num, unsigned Diag,
Compare Comp) { … }
bool ParsedAttr::checkExactlyNumArgs(Sema &S, unsigned Num) const { … }
bool ParsedAttr::checkAtLeastNumArgs(Sema &S, unsigned Num) const { … }
bool ParsedAttr::checkAtMostNumArgs(Sema &S, unsigned Num) const { … }
void clang::takeAndConcatenateAttrs(ParsedAttributes &First,
ParsedAttributes &Second,
ParsedAttributes &Result) { … }