blob: c2cc7d50e6cb489d4290352e918593b22689f293 [file] [log] [blame]
/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
|* *|
|*Attribute deserialization code *|
|* *|
|* Automatically generated file, do not edit! *|
|* *|
\*===----------------------------------------------------------------------===*/
switch (Kind) {
default:
llvm_unreachable("Unknown attribute!");
case attr::ARMInterrupt: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
ARMInterruptAttr::InterruptType interrupt(static_cast<ARMInterruptAttr::InterruptType>(Record[Idx++]));
New = new (Context) ARMInterruptAttr(Range, Context, interrupt, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::AcquireCapability: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
unsigned argsSize = Record[Idx++];
SmallVector<Expr *, 4> args;
args.reserve(argsSize);
for (unsigned i = argsSize; i; --i)
args.push_back(ReadExpr(F));
New = new (Context) AcquireCapabilityAttr(Range, Context, args.data(), argsSize, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::AcquiredAfter: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
unsigned argsSize = Record[Idx++];
SmallVector<Expr *, 4> args;
args.reserve(argsSize);
for (unsigned i = argsSize; i; --i)
args.push_back(ReadExpr(F));
New = new (Context) AcquiredAfterAttr(Range, Context, args.data(), argsSize, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::AcquiredBefore: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
unsigned argsSize = Record[Idx++];
SmallVector<Expr *, 4> args;
args.reserve(argsSize);
for (unsigned i = argsSize; i; --i)
args.push_back(ReadExpr(F));
New = new (Context) AcquiredBeforeAttr(Range, Context, args.data(), argsSize, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::Alias: {
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
std::string aliasee= ReadString(Record, Idx);
New = new (Context) AliasAttr(Range, Context, aliasee, Spelling);
New->setImplicit(isImplicit);
break;
}
case attr::AlignMac68k: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) AlignMac68kAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::Aligned: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
bool isalignmentExpr = Record[Idx++];
void *alignmentPtr;
if (isalignmentExpr)
alignmentPtr = ReadExpr(F);
else
alignmentPtr = GetTypeSourceInfo(F, Record, Idx);
New = new (Context) AlignedAttr(Range, Context, isalignmentExpr, alignmentPtr, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::AlwaysInline: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) AlwaysInlineAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::AnalyzerNoReturn: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) AnalyzerNoReturnAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::Annotate: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
std::string annotation= ReadString(Record, Idx);
New = new (Context) AnnotateAttr(Range, Context, annotation, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::ArcWeakrefUnavailable: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) ArcWeakrefUnavailableAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::ArgumentWithTypeTag: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
IdentifierInfo * argumentKind = GetIdentifierInfo(F, Record, Idx);
unsigned argumentIdx = Record[Idx++];
unsigned typeTagIdx = Record[Idx++];
bool isPointer = Record[Idx++];
New = new (Context) ArgumentWithTypeTagAttr(Range, Context, argumentKind, argumentIdx, typeTagIdx, isPointer, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::AsmLabel: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
std::string label= ReadString(Record, Idx);
New = new (Context) AsmLabelAttr(Range, Context, label, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::AssertCapability: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
Expr * expr = ReadExpr(F);
New = new (Context) AssertCapabilityAttr(Range, Context, expr, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::AssertExclusiveLock: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
unsigned argsSize = Record[Idx++];
SmallVector<Expr *, 4> args;
args.reserve(argsSize);
for (unsigned i = argsSize; i; --i)
args.push_back(ReadExpr(F));
New = new (Context) AssertExclusiveLockAttr(Range, Context, args.data(), argsSize, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::AssertSharedLock: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
unsigned argsSize = Record[Idx++];
SmallVector<Expr *, 4> args;
args.reserve(argsSize);
for (unsigned i = argsSize; i; --i)
args.push_back(ReadExpr(F));
New = new (Context) AssertSharedLockAttr(Range, Context, args.data(), argsSize, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::Availability: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
IdentifierInfo * platform = GetIdentifierInfo(F, Record, Idx);
VersionTuple introduced= ReadVersionTuple(Record, Idx);
VersionTuple deprecated= ReadVersionTuple(Record, Idx);
VersionTuple obsoleted= ReadVersionTuple(Record, Idx);
bool unavailable = Record[Idx++];
std::string message= ReadString(Record, Idx);
New = new (Context) AvailabilityAttr(Range, Context, platform, introduced, deprecated, obsoleted, unavailable, message, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::Blocks: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
BlocksAttr::BlockType type(static_cast<BlocksAttr::BlockType>(Record[Idx++]));
New = new (Context) BlocksAttr(Range, Context, type, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::C11NoReturn: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) C11NoReturnAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::CDecl: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) CDeclAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::CFAuditedTransfer: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) CFAuditedTransferAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::CFConsumed: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) CFConsumedAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::CFReturnsNotRetained: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) CFReturnsNotRetainedAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::CFReturnsRetained: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) CFReturnsRetainedAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::CFUnknownTransfer: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) CFUnknownTransferAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::CUDAConstant: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) CUDAConstantAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::CUDADevice: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) CUDADeviceAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::CUDAGlobal: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) CUDAGlobalAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::CUDAHost: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) CUDAHostAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::CUDALaunchBounds: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
int maxThreads = Record[Idx++];
int minBlocks = Record[Idx++];
New = new (Context) CUDALaunchBoundsAttr(Range, Context, maxThreads, minBlocks, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::CUDAShared: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) CUDASharedAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::CXX11NoReturn: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) CXX11NoReturnAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::CallableWhen: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
unsigned callableStatesSize = Record[Idx++];
SmallVector<CallableWhenAttr::ConsumedState, 4> callableStates;
callableStates.reserve(callableStatesSize);
for (unsigned i = callableStatesSize; i; --i)
callableStates.push_back(static_cast<CallableWhenAttr::ConsumedState>(Record[Idx++]));
New = new (Context) CallableWhenAttr(Range, Context, callableStates.data(), callableStatesSize, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::Capability: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
std::string name= ReadString(Record, Idx);
New = new (Context) CapabilityAttr(Range, Context, name, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::CarriesDependency: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) CarriesDependencyAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::Cleanup: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
FunctionDecl * functionDecl = GetLocalDeclAs<FunctionDecl >(F, Record[Idx++]);
New = new (Context) CleanupAttr(Range, Context, functionDecl, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::Cold: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) ColdAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::Common: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) CommonAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::Const: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) ConstAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::Constructor: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
int priority = Record[Idx++];
New = new (Context) ConstructorAttr(Range, Context, priority, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::Consumable: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
ConsumableAttr::ConsumedState defaultState(static_cast<ConsumableAttr::ConsumedState>(Record[Idx++]));
New = new (Context) ConsumableAttr(Range, Context, defaultState, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::ConsumableAutoCast: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) ConsumableAutoCastAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::ConsumableSetOnRead: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) ConsumableSetOnReadAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::DLLExport: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) DLLExportAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::DLLImport: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) DLLImportAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::Deprecated: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
std::string message= ReadString(Record, Idx);
New = new (Context) DeprecatedAttr(Range, Context, message, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::Destructor: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
int priority = Record[Idx++];
New = new (Context) DestructorAttr(Range, Context, priority, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::EnableIf: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
Expr * cond = ReadExpr(F);
std::string message= ReadString(Record, Idx);
New = new (Context) EnableIfAttr(Range, Context, cond, message, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::ExclusiveTrylockFunction: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
Expr * successValue = ReadExpr(F);
unsigned argsSize = Record[Idx++];
SmallVector<Expr *, 4> args;
args.reserve(argsSize);
for (unsigned i = argsSize; i; --i)
args.push_back(ReadExpr(F));
New = new (Context) ExclusiveTrylockFunctionAttr(Range, Context, successValue, args.data(), argsSize, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::FallThrough: {
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) FallThroughAttr(Range, Context, Spelling);
New->setImplicit(isImplicit);
break;
}
case attr::FastCall: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) FastCallAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::Final: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) FinalAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::Flatten: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) FlattenAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::Format: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
IdentifierInfo * type = GetIdentifierInfo(F, Record, Idx);
int formatIdx = Record[Idx++];
int firstArg = Record[Idx++];
New = new (Context) FormatAttr(Range, Context, type, formatIdx, firstArg, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::FormatArg: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
int formatIdx = Record[Idx++];
New = new (Context) FormatArgAttr(Range, Context, formatIdx, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::GNUInline: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) GNUInlineAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::GuardedBy: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
Expr * arg = ReadExpr(F);
New = new (Context) GuardedByAttr(Range, Context, arg, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::GuardedVar: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) GuardedVarAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::Hot: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) HotAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::IBAction: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) IBActionAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::IBOutlet: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) IBOutletAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::IBOutletCollection: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
TypeSourceInfo * interface = GetTypeSourceInfo(F, Record, Idx);
New = new (Context) IBOutletCollectionAttr(Range, Context, interface, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::InitPriority: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
unsigned priority = Record[Idx++];
New = new (Context) InitPriorityAttr(Range, Context, priority, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::InitSeg: {
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
std::string section= ReadString(Record, Idx);
New = new (Context) InitSegAttr(Range, Context, section, Spelling);
New->setImplicit(isImplicit);
break;
}
case attr::IntelOclBicc: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) IntelOclBiccAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::LockReturned: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
Expr * arg = ReadExpr(F);
New = new (Context) LockReturnedAttr(Range, Context, arg, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::LocksExcluded: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
unsigned argsSize = Record[Idx++];
SmallVector<Expr *, 4> args;
args.reserve(argsSize);
for (unsigned i = argsSize; i; --i)
args.push_back(ReadExpr(F));
New = new (Context) LocksExcludedAttr(Range, Context, args.data(), argsSize, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::LoopHint: {
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
LoopHintAttr::OptionType option(static_cast<LoopHintAttr::OptionType>(Record[Idx++]));
int value = Record[Idx++];
New = new (Context) LoopHintAttr(Range, Context, option, value, Spelling);
New->setImplicit(isImplicit);
break;
}
case attr::MSABI: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) MSABIAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::MSInheritance: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
bool bestCase = Record[Idx++];
New = new (Context) MSInheritanceAttr(Range, Context, bestCase, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::MSP430Interrupt: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
unsigned number = Record[Idx++];
New = new (Context) MSP430InterruptAttr(Range, Context, number, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::MSVtorDisp: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
unsigned vdm = Record[Idx++];
New = new (Context) MSVtorDispAttr(Range, Context, vdm, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::Malloc: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) MallocAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::MaxFieldAlignment: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
unsigned alignment = Record[Idx++];
New = new (Context) MaxFieldAlignmentAttr(Range, Context, alignment, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::MayAlias: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) MayAliasAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::MinSize: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) MinSizeAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::Mips16: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) Mips16Attr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::Mode: {
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
IdentifierInfo * mode = GetIdentifierInfo(F, Record, Idx);
New = new (Context) ModeAttr(Range, Context, mode, Spelling);
New->setImplicit(isImplicit);
break;
}
case attr::MsStruct: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) MsStructAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::NSConsumed: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) NSConsumedAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::NSConsumesSelf: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) NSConsumesSelfAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::NSReturnsAutoreleased: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) NSReturnsAutoreleasedAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::NSReturnsNotRetained: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) NSReturnsNotRetainedAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::NSReturnsRetained: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) NSReturnsRetainedAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::Naked: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) NakedAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::NoCommon: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) NoCommonAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::NoDebug: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) NoDebugAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::NoDuplicate: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) NoDuplicateAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::NoInline: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) NoInlineAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::NoInstrumentFunction: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) NoInstrumentFunctionAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::NoMips16: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) NoMips16Attr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::NoReturn: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) NoReturnAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::NoSanitizeAddress: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) NoSanitizeAddressAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::NoSanitizeMemory: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) NoSanitizeMemoryAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::NoSanitizeThread: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) NoSanitizeThreadAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::NoSplitStack: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) NoSplitStackAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::NoThreadSafetyAnalysis: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) NoThreadSafetyAnalysisAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::NoThrow: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) NoThrowAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::NonNull: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
unsigned argsSize = Record[Idx++];
SmallVector<unsigned, 4> args;
args.reserve(argsSize);
for (unsigned i = argsSize; i; --i)
args.push_back(Record[Idx++]);
New = new (Context) NonNullAttr(Range, Context, args.data(), argsSize, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::ObjCBridge: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
IdentifierInfo * bridgedType = GetIdentifierInfo(F, Record, Idx);
New = new (Context) ObjCBridgeAttr(Range, Context, bridgedType, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::ObjCBridgeMutable: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
IdentifierInfo * bridgedType = GetIdentifierInfo(F, Record, Idx);
New = new (Context) ObjCBridgeMutableAttr(Range, Context, bridgedType, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::ObjCBridgeRelated: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
IdentifierInfo * relatedClass = GetIdentifierInfo(F, Record, Idx);
IdentifierInfo * classMethod = GetIdentifierInfo(F, Record, Idx);
IdentifierInfo * instanceMethod = GetIdentifierInfo(F, Record, Idx);
New = new (Context) ObjCBridgeRelatedAttr(Range, Context, relatedClass, classMethod, instanceMethod, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::ObjCDesignatedInitializer: {
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) ObjCDesignatedInitializerAttr(Range, Context, Spelling);
New->setImplicit(isImplicit);
break;
}
case attr::ObjCException: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) ObjCExceptionAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::ObjCExplicitProtocolImpl: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) ObjCExplicitProtocolImplAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::ObjCMethodFamily: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
ObjCMethodFamilyAttr::FamilyKind family(static_cast<ObjCMethodFamilyAttr::FamilyKind>(Record[Idx++]));
New = new (Context) ObjCMethodFamilyAttr(Range, Context, family, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::ObjCNSObject: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) ObjCNSObjectAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::ObjCPreciseLifetime: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) ObjCPreciseLifetimeAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::ObjCRequiresPropertyDefs: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) ObjCRequiresPropertyDefsAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::ObjCRequiresSuper: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) ObjCRequiresSuperAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::ObjCReturnsInnerPointer: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) ObjCReturnsInnerPointerAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::ObjCRootClass: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) ObjCRootClassAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::ObjCRuntimeName: {
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
std::string metadataName= ReadString(Record, Idx);
New = new (Context) ObjCRuntimeNameAttr(Range, Context, metadataName, Spelling);
New->setImplicit(isImplicit);
break;
}
case attr::OpenCLImageAccess: {
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) OpenCLImageAccessAttr(Range, Context, Spelling);
New->setImplicit(isImplicit);
break;
}
case attr::OpenCLKernel: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) OpenCLKernelAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::OptimizeNone: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) OptimizeNoneAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::Overloadable: {
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) OverloadableAttr(Range, Context, Spelling);
New->setImplicit(isImplicit);
break;
}
case attr::Override: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) OverrideAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::Ownership: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
IdentifierInfo * module = GetIdentifierInfo(F, Record, Idx);
unsigned argsSize = Record[Idx++];
SmallVector<unsigned, 4> args;
args.reserve(argsSize);
for (unsigned i = argsSize; i; --i)
args.push_back(Record[Idx++]);
New = new (Context) OwnershipAttr(Range, Context, module, args.data(), argsSize, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::Packed: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) PackedAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::ParamTypestate: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
ParamTypestateAttr::ConsumedState paramState(static_cast<ParamTypestateAttr::ConsumedState>(Record[Idx++]));
New = new (Context) ParamTypestateAttr(Range, Context, paramState, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::Pascal: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) PascalAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::Pcs: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
PcsAttr::PCSType pCS(static_cast<PcsAttr::PCSType>(Record[Idx++]));
New = new (Context) PcsAttr(Range, Context, pCS, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::PnaclCall: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) PnaclCallAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::PtGuardedBy: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
Expr * arg = ReadExpr(F);
New = new (Context) PtGuardedByAttr(Range, Context, arg, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::PtGuardedVar: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) PtGuardedVarAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::Pure: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) PureAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::ReleaseCapability: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
unsigned argsSize = Record[Idx++];
SmallVector<Expr *, 4> args;
args.reserve(argsSize);
for (unsigned i = argsSize; i; --i)
args.push_back(ReadExpr(F));
New = new (Context) ReleaseCapabilityAttr(Range, Context, args.data(), argsSize, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::ReqdWorkGroupSize: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
unsigned xDim = Record[Idx++];
unsigned yDim = Record[Idx++];
unsigned zDim = Record[Idx++];
New = new (Context) ReqdWorkGroupSizeAttr(Range, Context, xDim, yDim, zDim, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::RequiresCapability: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
unsigned argsSize = Record[Idx++];
SmallVector<Expr *, 4> args;
args.reserve(argsSize);
for (unsigned i = argsSize; i; --i)
args.push_back(ReadExpr(F));
New = new (Context) RequiresCapabilityAttr(Range, Context, args.data(), argsSize, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::ReturnTypestate: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
ReturnTypestateAttr::ConsumedState state(static_cast<ReturnTypestateAttr::ConsumedState>(Record[Idx++]));
New = new (Context) ReturnTypestateAttr(Range, Context, state, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::ReturnsNonNull: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) ReturnsNonNullAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::ReturnsTwice: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) ReturnsTwiceAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::ScopedLockable: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) ScopedLockableAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::Section: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
std::string name= ReadString(Record, Idx);
New = new (Context) SectionAttr(Range, Context, name, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::SelectAny: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) SelectAnyAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::Sentinel: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
int sentinel = Record[Idx++];
int nullPos = Record[Idx++];
New = new (Context) SentinelAttr(Range, Context, sentinel, nullPos, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::SetTypestate: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
SetTypestateAttr::ConsumedState newState(static_cast<SetTypestateAttr::ConsumedState>(Record[Idx++]));
New = new (Context) SetTypestateAttr(Range, Context, newState, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::SharedTrylockFunction: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
Expr * successValue = ReadExpr(F);
unsigned argsSize = Record[Idx++];
SmallVector<Expr *, 4> args;
args.reserve(argsSize);
for (unsigned i = argsSize; i; --i)
args.push_back(ReadExpr(F));
New = new (Context) SharedTrylockFunctionAttr(Range, Context, successValue, args.data(), argsSize, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::StdCall: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) StdCallAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::SysVABI: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) SysVABIAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::TLSModel: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
std::string model= ReadString(Record, Idx);
New = new (Context) TLSModelAttr(Range, Context, model, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::TestTypestate: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
TestTypestateAttr::ConsumedState testState(static_cast<TestTypestateAttr::ConsumedState>(Record[Idx++]));
New = new (Context) TestTypestateAttr(Range, Context, testState, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::ThisCall: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) ThisCallAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::Thread: {
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) ThreadAttr(Range, Context, Spelling);
New->setImplicit(isImplicit);
break;
}
case attr::TransparentUnion: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) TransparentUnionAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::TryAcquireCapability: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
Expr * successValue = ReadExpr(F);
unsigned argsSize = Record[Idx++];
SmallVector<Expr *, 4> args;
args.reserve(argsSize);
for (unsigned i = argsSize; i; --i)
args.push_back(ReadExpr(F));
New = new (Context) TryAcquireCapabilityAttr(Range, Context, successValue, args.data(), argsSize, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::TypeTagForDatatype: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
IdentifierInfo * argumentKind = GetIdentifierInfo(F, Record, Idx);
TypeSourceInfo * matchingCType = GetTypeSourceInfo(F, Record, Idx);
bool layoutCompatible = Record[Idx++];
bool mustBeNull = Record[Idx++];
New = new (Context) TypeTagForDatatypeAttr(Range, Context, argumentKind, matchingCType, layoutCompatible, mustBeNull, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::TypeVisibility: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
TypeVisibilityAttr::VisibilityType visibility(static_cast<TypeVisibilityAttr::VisibilityType>(Record[Idx++]));
New = new (Context) TypeVisibilityAttr(Range, Context, visibility, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::Unavailable: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
std::string message= ReadString(Record, Idx);
New = new (Context) UnavailableAttr(Range, Context, message, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::Unused: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) UnusedAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::Used: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) UsedAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::Uuid: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
std::string guid= ReadString(Record, Idx);
New = new (Context) UuidAttr(Range, Context, guid, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::VecReturn: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) VecReturnAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::VecTypeHint: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
TypeSourceInfo * typeHint = GetTypeSourceInfo(F, Record, Idx);
New = new (Context) VecTypeHintAttr(Range, Context, typeHint, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::Visibility: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
VisibilityAttr::VisibilityType visibility(static_cast<VisibilityAttr::VisibilityType>(Record[Idx++]));
New = new (Context) VisibilityAttr(Range, Context, visibility, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::WarnUnused: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) WarnUnusedAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::WarnUnusedResult: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) WarnUnusedResultAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::Weak: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) WeakAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::WeakImport: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) WeakImportAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::WeakRef: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
std::string aliasee= ReadString(Record, Idx);
New = new (Context) WeakRefAttr(Range, Context, aliasee, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::WorkGroupSizeHint: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
unsigned xDim = Record[Idx++];
unsigned yDim = Record[Idx++];
unsigned zDim = Record[Idx++];
New = new (Context) WorkGroupSizeHintAttr(Range, Context, xDim, yDim, zDim, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
case attr::X86ForceAlignArgPointer: {
bool isInherited = Record[Idx++];
bool isImplicit = Record[Idx++];
unsigned Spelling = Record[Idx++];
New = new (Context) X86ForceAlignArgPointerAttr(Range, Context, Spelling);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
break;
}
}