blob: b97e345b958db8f31fbbd1dbdf56eba91caeeeb1 [file] [log] [blame]
/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
|* *|
|* Attribute deserialization code *|
|* *|
|* Automatically generated file, do not edit! *|
|* *|
\*===----------------------------------------------------------------------===*/
switch (Kind) {
case attr::AArch64VectorPcs: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) AArch64VectorPcsAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::AMDGPUFlatWorkGroupSize: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
Expr * min = Record.readExpr();
Expr * max = Record.readExpr();
New = new (Context) AMDGPUFlatWorkGroupSizeAttr(Context, Info, min, max);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::AMDGPUNumSGPR: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
unsigned numSGPR = Record.readInt();
New = new (Context) AMDGPUNumSGPRAttr(Context, Info, numSGPR);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::AMDGPUNumVGPR: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
unsigned numVGPR = Record.readInt();
New = new (Context) AMDGPUNumVGPRAttr(Context, Info, numVGPR);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::AMDGPUWavesPerEU: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
Expr * min = Record.readExpr();
Expr * max = Record.readExpr();
New = new (Context) AMDGPUWavesPerEUAttr(Context, Info, min, max);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::ARMInterrupt: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
ARMInterruptAttr::InterruptType interrupt(static_cast<ARMInterruptAttr::InterruptType>(Record.readInt()));
New = new (Context) ARMInterruptAttr(Context, Info, interrupt);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::AVRInterrupt: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) AVRInterruptAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::AVRSignal: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) AVRSignalAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::AbiTag: {
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
unsigned tagsSize = Record.readInt();
SmallVector<StringRef, 4> tags;
tags.reserve(tagsSize);
SmallVector<std::string, 4> tagsStorage;
tagsStorage.reserve(tagsSize);
for (unsigned i = 0; i != tagsSize; ++i)
tagsStorage.push_back(Record.readString());
for (unsigned i = 0; i != tagsSize; ++i)
tags.push_back(tagsStorage[i]);
New = new (Context) AbiTagAttr(Context, Info, tags.data(), tagsSize);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::AcquireCapability: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
unsigned argsSize = Record.readInt();
SmallVector<Expr *, 4> args;
args.reserve(argsSize);
for (unsigned i = 0; i != argsSize; ++i)
args.push_back(Record.readExpr());
New = new (Context) AcquireCapabilityAttr(Context, Info, args.data(), argsSize);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::AcquireHandle: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
std::string handleType= Record.readString();
New = new (Context) AcquireHandleAttr(Context, Info, handleType);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::AcquiredAfter: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
unsigned argsSize = Record.readInt();
SmallVector<Expr *, 4> args;
args.reserve(argsSize);
for (unsigned i = 0; i != argsSize; ++i)
args.push_back(Record.readExpr());
New = new (Context) AcquiredAfterAttr(Context, Info, args.data(), argsSize);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::AcquiredBefore: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
unsigned argsSize = Record.readInt();
SmallVector<Expr *, 4> args;
args.reserve(argsSize);
for (unsigned i = 0; i != argsSize; ++i)
args.push_back(Record.readExpr());
New = new (Context) AcquiredBeforeAttr(Context, Info, args.data(), argsSize);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::AddressSpace: {
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
int addressSpace = Record.readInt();
New = new (Context) AddressSpaceAttr(Context, Info, addressSpace);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::Alias: {
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
std::string aliasee= Record.readString();
New = new (Context) AliasAttr(Context, Info, aliasee);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::AlignMac68k: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) AlignMac68kAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::AlignNatural: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) AlignNaturalAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::AlignValue: {
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
Expr * alignment = Record.readExpr();
New = new (Context) AlignValueAttr(Context, Info, alignment);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::Aligned: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
bool isalignmentExpr = Record.readInt();
void *alignmentPtr;
if (isalignmentExpr)
alignmentPtr = Record.readExpr();
else
alignmentPtr = Record.readTypeSourceInfo();
New = new (Context) AlignedAttr(Context, Info, isalignmentExpr, alignmentPtr);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::AllocAlign: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
ParamIdx paramIndex = ParamIdx::deserialize(Record.readInt());
New = new (Context) AllocAlignAttr(Context, Info, paramIndex);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::AllocSize: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
ParamIdx elemSizeParam = ParamIdx::deserialize(Record.readInt());
ParamIdx numElemsParam = ParamIdx::deserialize(Record.readInt());
New = new (Context) AllocSizeAttr(Context, Info, elemSizeParam, numElemsParam);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::AlwaysDestroy: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) AlwaysDestroyAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::AlwaysInline: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) AlwaysInlineAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::AnalyzerNoReturn: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) AnalyzerNoReturnAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::Annotate: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
std::string annotation= Record.readString();
unsigned argsSize = Record.readInt();
SmallVector<Expr *, 4> args;
args.reserve(argsSize);
for (unsigned i = 0; i != argsSize; ++i)
args.push_back(Record.readExpr());
New = new (Context) AnnotateAttr(Context, Info, annotation, args.data(), argsSize);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::AnyX86Interrupt: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) AnyX86InterruptAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::AnyX86NoCallerSavedRegisters: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) AnyX86NoCallerSavedRegistersAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::AnyX86NoCfCheck: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) AnyX86NoCfCheckAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::ArcWeakrefUnavailable: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) ArcWeakrefUnavailableAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::ArgumentWithTypeTag: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
IdentifierInfo * argumentKind = Record.readIdentifier();
ParamIdx argumentIdx = ParamIdx::deserialize(Record.readInt());
ParamIdx typeTagIdx = ParamIdx::deserialize(Record.readInt());
bool isPointer = Record.readInt();
New = new (Context) ArgumentWithTypeTagAttr(Context, Info, argumentKind, argumentIdx, typeTagIdx, isPointer);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::ArmBuiltinAlias: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
IdentifierInfo * builtinName = Record.readIdentifier();
New = new (Context) ArmBuiltinAliasAttr(Context, Info, builtinName);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::ArmMveStrictPolymorphism: {
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) ArmMveStrictPolymorphismAttr(Context, Info);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::Artificial: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) ArtificialAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::AsmLabel: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
std::string label= Record.readString();
bool isLiteralLabel = Record.readInt();
New = new (Context) AsmLabelAttr(Context, Info, label, isLiteralLabel);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::AssertCapability: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
unsigned argsSize = Record.readInt();
SmallVector<Expr *, 4> args;
args.reserve(argsSize);
for (unsigned i = 0; i != argsSize; ++i)
args.push_back(Record.readExpr());
New = new (Context) AssertCapabilityAttr(Context, Info, args.data(), argsSize);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::AssertExclusiveLock: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
unsigned argsSize = Record.readInt();
SmallVector<Expr *, 4> args;
args.reserve(argsSize);
for (unsigned i = 0; i != argsSize; ++i)
args.push_back(Record.readExpr());
New = new (Context) AssertExclusiveLockAttr(Context, Info, args.data(), argsSize);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::AssertSharedLock: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
unsigned argsSize = Record.readInt();
SmallVector<Expr *, 4> args;
args.reserve(argsSize);
for (unsigned i = 0; i != argsSize; ++i)
args.push_back(Record.readExpr());
New = new (Context) AssertSharedLockAttr(Context, Info, args.data(), argsSize);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::AssumeAligned: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
Expr * alignment = Record.readExpr();
Expr * offset = Record.readExpr();
New = new (Context) AssumeAlignedAttr(Context, Info, alignment, offset);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::Assumption: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
std::string assumption= Record.readString();
New = new (Context) AssumptionAttr(Context, Info, assumption);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::Availability: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
IdentifierInfo * platform = Record.readIdentifier();
VersionTuple introduced= Record.readVersionTuple();
VersionTuple deprecated= Record.readVersionTuple();
VersionTuple obsoleted= Record.readVersionTuple();
bool unavailable = Record.readInt();
std::string message= Record.readString();
bool strict = Record.readInt();
std::string replacement= Record.readString();
int priority = Record.readInt();
New = new (Context) AvailabilityAttr(Context, Info, platform, introduced, deprecated, obsoleted, unavailable, message, strict, replacement, priority);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::BPFPreserveAccessIndex: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) BPFPreserveAccessIndexAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::BTFDeclTag: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
std::string bTFDeclTag= Record.readString();
New = new (Context) BTFDeclTagAttr(Context, Info, bTFDeclTag);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::BTFTypeTag: {
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
std::string bTFTypeTag= Record.readString();
New = new (Context) BTFTypeTagAttr(Context, Info, bTFTypeTag);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::Blocks: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
BlocksAttr::BlockType type(static_cast<BlocksAttr::BlockType>(Record.readInt()));
New = new (Context) BlocksAttr(Context, Info, type);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::Builtin: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
unsigned iD = Record.readInt();
New = new (Context) BuiltinAttr(Context, Info, iD);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::BuiltinAlias: {
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
IdentifierInfo * builtinName = Record.readIdentifier();
New = new (Context) BuiltinAliasAttr(Context, Info, builtinName);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::C11NoReturn: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) C11NoReturnAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::CDecl: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) CDeclAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::CFAuditedTransfer: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) CFAuditedTransferAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::CFConsumed: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) CFConsumedAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::CFGuard: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
CFGuardAttr::GuardArg guard(static_cast<CFGuardAttr::GuardArg>(Record.readInt()));
New = new (Context) CFGuardAttr(Context, Info, guard);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::CFICanonicalJumpTable: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) CFICanonicalJumpTableAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::CFReturnsNotRetained: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) CFReturnsNotRetainedAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::CFReturnsRetained: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) CFReturnsRetainedAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::CFUnknownTransfer: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) CFUnknownTransferAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::CPUDispatch: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
unsigned cpusSize = Record.readInt();
SmallVector<IdentifierInfo *, 4> cpus;
cpus.reserve(cpusSize);
for (unsigned i = 0; i != cpusSize; ++i)
cpus.push_back(Record.readIdentifier());
New = new (Context) CPUDispatchAttr(Context, Info, cpus.data(), cpusSize);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::CPUSpecific: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
unsigned cpusSize = Record.readInt();
SmallVector<IdentifierInfo *, 4> cpus;
cpus.reserve(cpusSize);
for (unsigned i = 0; i != cpusSize; ++i)
cpus.push_back(Record.readIdentifier());
New = new (Context) CPUSpecificAttr(Context, Info, cpus.data(), cpusSize);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::CUDAConstant: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) CUDAConstantAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::CUDADevice: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) CUDADeviceAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::CUDADeviceBuiltinSurfaceType: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) CUDADeviceBuiltinSurfaceTypeAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::CUDADeviceBuiltinTextureType: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) CUDADeviceBuiltinTextureTypeAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::CUDAGlobal: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) CUDAGlobalAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::CUDAHost: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) CUDAHostAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::CUDAInvalidTarget: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) CUDAInvalidTargetAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::CUDALaunchBounds: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
Expr * maxThreads = Record.readExpr();
Expr * minBlocks = Record.readExpr();
New = new (Context) CUDALaunchBoundsAttr(Context, Info, maxThreads, minBlocks);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::CUDAShared: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) CUDASharedAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::CXX11NoReturn: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) CXX11NoReturnAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::CallableWhen: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
unsigned callableStatesSize = Record.readInt();
SmallVector<CallableWhenAttr::ConsumedState, 4> callableStates;
callableStates.reserve(callableStatesSize);
for (unsigned i = callableStatesSize; i; --i)
callableStates.push_back(static_cast<CallableWhenAttr::ConsumedState>(Record.readInt()));
New = new (Context) CallableWhenAttr(Context, Info, callableStates.data(), callableStatesSize);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::Callback: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
unsigned encodingSize = Record.readInt();
SmallVector<int, 4> encoding;
encoding.reserve(encodingSize);
for (unsigned i = 0; i != encodingSize; ++i)
encoding.push_back(Record.readInt());
New = new (Context) CallbackAttr(Context, Info, encoding.data(), encodingSize);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::CalledOnce: {
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) CalledOnceAttr(Context, Info);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::Capability: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
std::string name= Record.readString();
New = new (Context) CapabilityAttr(Context, Info, name);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::CapturedRecord: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) CapturedRecordAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::CarriesDependency: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) CarriesDependencyAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::Cleanup: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
FunctionDecl * functionDecl = Record.GetLocalDeclAs<FunctionDecl >(Record.readInt());
New = new (Context) CleanupAttr(Context, Info, functionDecl);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::CmseNSCall: {
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) CmseNSCallAttr(Context, Info);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::CmseNSEntry: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) CmseNSEntryAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::CodeSeg: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
std::string name= Record.readString();
New = new (Context) CodeSegAttr(Context, Info, name);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::Cold: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) ColdAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::Common: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) CommonAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::Const: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) ConstAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::ConstInit: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) ConstInitAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::Constructor: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
int priority = Record.readInt();
New = new (Context) ConstructorAttr(Context, Info, priority);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::Consumable: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
ConsumableAttr::ConsumedState defaultState(static_cast<ConsumableAttr::ConsumedState>(Record.readInt()));
New = new (Context) ConsumableAttr(Context, Info, defaultState);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::ConsumableAutoCast: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) ConsumableAutoCastAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::ConsumableSetOnRead: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) ConsumableSetOnReadAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::Convergent: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) ConvergentAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::DLLExport: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) DLLExportAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::DLLExportStaticLocal: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) DLLExportStaticLocalAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::DLLImport: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) DLLImportAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::DLLImportStaticLocal: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) DLLImportStaticLocalAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::Deprecated: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
std::string message= Record.readString();
std::string replacement= Record.readString();
New = new (Context) DeprecatedAttr(Context, Info, message, replacement);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::Destructor: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
int priority = Record.readInt();
New = new (Context) DestructorAttr(Context, Info, priority);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::DiagnoseAsBuiltin: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
FunctionDecl * function = Record.GetLocalDeclAs<FunctionDecl >(Record.readInt());
unsigned argIndicesSize = Record.readInt();
SmallVector<unsigned, 4> argIndices;
argIndices.reserve(argIndicesSize);
for (unsigned i = 0; i != argIndicesSize; ++i)
argIndices.push_back(Record.readInt());
New = new (Context) DiagnoseAsBuiltinAttr(Context, Info, function, argIndices.data(), argIndicesSize);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::DiagnoseIf: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
Expr * cond = Record.readExpr();
std::string message= Record.readString();
DiagnoseIfAttr::DiagnosticType diagnosticType(static_cast<DiagnoseIfAttr::DiagnosticType>(Record.readInt()));
bool argDependent = Record.readInt();
NamedDecl * parent = Record.GetLocalDeclAs<NamedDecl >(Record.readInt());
New = new (Context) DiagnoseIfAttr(Context, Info, cond, message, diagnosticType, argDependent, parent);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::DisableSanitizerInstrumentation: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) DisableSanitizerInstrumentationAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::DisableTailCalls: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) DisableTailCallsAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::EmptyBases: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) EmptyBasesAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::EnableIf: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
Expr * cond = Record.readExpr();
std::string message= Record.readString();
New = new (Context) EnableIfAttr(Context, Info, cond, message);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::EnforceTCB: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
std::string tCBName= Record.readString();
New = new (Context) EnforceTCBAttr(Context, Info, tCBName);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::EnforceTCBLeaf: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
std::string tCBName= Record.readString();
New = new (Context) EnforceTCBLeafAttr(Context, Info, tCBName);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::EnumExtensibility: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
EnumExtensibilityAttr::Kind extensibility(static_cast<EnumExtensibilityAttr::Kind>(Record.readInt()));
New = new (Context) EnumExtensibilityAttr(Context, Info, extensibility);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::Error: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
std::string userDiagnostic= Record.readString();
New = new (Context) ErrorAttr(Context, Info, userDiagnostic);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::ExcludeFromExplicitInstantiation: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) ExcludeFromExplicitInstantiationAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::ExclusiveTrylockFunction: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
Expr * successValue = Record.readExpr();
unsigned argsSize = Record.readInt();
SmallVector<Expr *, 4> args;
args.reserve(argsSize);
for (unsigned i = 0; i != argsSize; ++i)
args.push_back(Record.readExpr());
New = new (Context) ExclusiveTrylockFunctionAttr(Context, Info, successValue, args.data(), argsSize);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::ExternalSourceSymbol: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
std::string language= Record.readString();
std::string definedIn= Record.readString();
bool generatedDeclaration = Record.readInt();
New = new (Context) ExternalSourceSymbolAttr(Context, Info, language, definedIn, generatedDeclaration);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::FallThrough: {
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) FallThroughAttr(Context, Info);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::FastCall: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) FastCallAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::Final: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) FinalAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::FlagEnum: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) FlagEnumAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::Flatten: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) FlattenAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::Format: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
IdentifierInfo * type = Record.readIdentifier();
int formatIdx = Record.readInt();
int firstArg = Record.readInt();
New = new (Context) FormatAttr(Context, Info, type, formatIdx, firstArg);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::FormatArg: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
ParamIdx formatIdx = ParamIdx::deserialize(Record.readInt());
New = new (Context) FormatArgAttr(Context, Info, formatIdx);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::GNUInline: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) GNUInlineAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::GuardedBy: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
Expr * arg = Record.readExpr();
New = new (Context) GuardedByAttr(Context, Info, arg);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::GuardedVar: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) GuardedVarAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::HIPManaged: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) HIPManagedAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::Hot: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) HotAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::IBAction: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) IBActionAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::IBOutlet: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) IBOutletAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::IBOutletCollection: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
TypeSourceInfo * interface_ = Record.readTypeSourceInfo();
New = new (Context) IBOutletCollectionAttr(Context, Info, interface_);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::IFunc: {
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
std::string resolver= Record.readString();
New = new (Context) IFuncAttr(Context, Info, resolver);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::InitPriority: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
unsigned priority = Record.readInt();
New = new (Context) InitPriorityAttr(Context, Info, priority);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::InitSeg: {
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
std::string section= Record.readString();
New = new (Context) InitSegAttr(Context, Info, section);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::IntelOclBicc: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) IntelOclBiccAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::InternalLinkage: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) InternalLinkageAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::LTOVisibilityPublic: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) LTOVisibilityPublicAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::LayoutVersion: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
unsigned version = Record.readInt();
New = new (Context) LayoutVersionAttr(Context, Info, version);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::Leaf: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) LeafAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::LifetimeBound: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) LifetimeBoundAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::Likely: {
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) LikelyAttr(Context, Info);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::LoaderUninitialized: {
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) LoaderUninitializedAttr(Context, Info);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::LockReturned: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
Expr * arg = Record.readExpr();
New = new (Context) LockReturnedAttr(Context, Info, arg);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::LocksExcluded: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
unsigned argsSize = Record.readInt();
SmallVector<Expr *, 4> args;
args.reserve(argsSize);
for (unsigned i = 0; i != argsSize; ++i)
args.push_back(Record.readExpr());
New = new (Context) LocksExcludedAttr(Context, Info, args.data(), argsSize);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::LoopHint: {
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
LoopHintAttr::OptionType option(static_cast<LoopHintAttr::OptionType>(Record.readInt()));
LoopHintAttr::LoopHintState state(static_cast<LoopHintAttr::LoopHintState>(Record.readInt()));
Expr * value = Record.readExpr();
New = new (Context) LoopHintAttr(Context, Info, option, state, value);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::M68kInterrupt: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
unsigned number = Record.readInt();
New = new (Context) M68kInterruptAttr(Context, Info, number);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::MIGServerRoutine: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) MIGServerRoutineAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::MSABI: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) MSABIAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::MSAllocator: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) MSAllocatorAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::MSInheritance: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
bool bestCase = Record.readInt();
New = new (Context) MSInheritanceAttr(Context, Info, bestCase);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::MSNoVTable: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) MSNoVTableAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::MSP430Interrupt: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
unsigned number = Record.readInt();
New = new (Context) MSP430InterruptAttr(Context, Info, number);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::MSStruct: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) MSStructAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::MSVtorDisp: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
unsigned vdm = Record.readInt();
New = new (Context) MSVtorDispAttr(Context, Info, vdm);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::MaxFieldAlignment: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
unsigned alignment = Record.readInt();
New = new (Context) MaxFieldAlignmentAttr(Context, Info, alignment);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::MayAlias: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) MayAliasAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::MicroMips: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) MicroMipsAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::MinSize: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) MinSizeAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::MinVectorWidth: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
unsigned vectorWidth = Record.readInt();
New = new (Context) MinVectorWidthAttr(Context, Info, vectorWidth);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::Mips16: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) Mips16Attr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::MipsInterrupt: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
MipsInterruptAttr::InterruptType interrupt(static_cast<MipsInterruptAttr::InterruptType>(Record.readInt()));
New = new (Context) MipsInterruptAttr(Context, Info, interrupt);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::MipsLongCall: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) MipsLongCallAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::MipsShortCall: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) MipsShortCallAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::Mode: {
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
IdentifierInfo * mode = Record.readIdentifier();
New = new (Context) ModeAttr(Context, Info, mode);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::MustTail: {
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) MustTailAttr(Context, Info);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::NSConsumed: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) NSConsumedAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::NSConsumesSelf: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) NSConsumesSelfAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::NSErrorDomain: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
VarDecl * errorDomain = Record.GetLocalDeclAs<VarDecl >(Record.readInt());
New = new (Context) NSErrorDomainAttr(Context, Info, errorDomain);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::NSReturnsAutoreleased: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) NSReturnsAutoreleasedAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::NSReturnsNotRetained: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) NSReturnsNotRetainedAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::NSReturnsRetained: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) NSReturnsRetainedAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::Naked: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) NakedAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::NoAlias: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) NoAliasAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::NoBuiltin: {
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
unsigned builtinNamesSize = Record.readInt();
SmallVector<StringRef, 4> builtinNames;
builtinNames.reserve(builtinNamesSize);
SmallVector<std::string, 4> builtinNamesStorage;
builtinNamesStorage.reserve(builtinNamesSize);
for (unsigned i = 0; i != builtinNamesSize; ++i)
builtinNamesStorage.push_back(Record.readString());
for (unsigned i = 0; i != builtinNamesSize; ++i)
builtinNames.push_back(builtinNamesStorage[i]);
New = new (Context) NoBuiltinAttr(Context, Info, builtinNames.data(), builtinNamesSize);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::NoCommon: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) NoCommonAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::NoDebug: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) NoDebugAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::NoDeref: {
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) NoDerefAttr(Context, Info);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::NoDestroy: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) NoDestroyAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::NoDuplicate: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) NoDuplicateAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::NoEscape: {
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) NoEscapeAttr(Context, Info);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::NoInline: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) NoInlineAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::NoInstrumentFunction: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) NoInstrumentFunctionAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::NoMerge: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) NoMergeAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::NoMicroMips: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) NoMicroMipsAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::NoMips16: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) NoMips16Attr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::NoProfileFunction: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) NoProfileFunctionAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::NoReturn: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) NoReturnAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::NoSanitize: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
unsigned sanitizersSize = Record.readInt();
SmallVector<StringRef, 4> sanitizers;
sanitizers.reserve(sanitizersSize);
SmallVector<std::string, 4> sanitizersStorage;
sanitizersStorage.reserve(sanitizersSize);
for (unsigned i = 0; i != sanitizersSize; ++i)
sanitizersStorage.push_back(Record.readString());
for (unsigned i = 0; i != sanitizersSize; ++i)
sanitizers.push_back(sanitizersStorage[i]);
New = new (Context) NoSanitizeAttr(Context, Info, sanitizers.data(), sanitizersSize);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::NoSpeculativeLoadHardening: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) NoSpeculativeLoadHardeningAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::NoSplitStack: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) NoSplitStackAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::NoStackProtector: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) NoStackProtectorAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::NoThreadSafetyAnalysis: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) NoThreadSafetyAnalysisAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::NoThrow: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) NoThrowAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::NoUniqueAddress: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) NoUniqueAddressAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::NonNull: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
unsigned argsSize = Record.readInt();
SmallVector<ParamIdx, 4> args;
args.reserve(argsSize);
for (unsigned i = 0; i != argsSize; ++i)
args.push_back(ParamIdx::deserialize(Record.readInt()));
New = new (Context) NonNullAttr(Context, Info, args.data(), argsSize);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::NotTailCalled: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) NotTailCalledAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::OMPAllocateDecl: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
OMPAllocateDeclAttr::AllocatorTypeTy allocatorType(static_cast<OMPAllocateDeclAttr::AllocatorTypeTy>(Record.readInt()));
Expr * allocator = Record.readExpr();
Expr * alignment = Record.readExpr();
New = new (Context) OMPAllocateDeclAttr(Context, Info, allocatorType, allocator, alignment);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::OMPCaptureKind: {
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
unsigned captureKindVal = Record.readInt();
New = new (Context) OMPCaptureKindAttr(Context, Info, captureKindVal);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::OMPCaptureNoInit: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) OMPCaptureNoInitAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::OMPDeclareSimdDecl: {
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
OMPDeclareSimdDeclAttr::BranchStateTy branchState(static_cast<OMPDeclareSimdDeclAttr::BranchStateTy>(Record.readInt()));
Expr * simdlen = Record.readExpr();
unsigned uniformsSize = Record.readInt();
SmallVector<Expr *, 4> uniforms;
uniforms.reserve(uniformsSize);
for (unsigned i = 0; i != uniformsSize; ++i)
uniforms.push_back(Record.readExpr());
unsigned alignedsSize = Record.readInt();
SmallVector<Expr *, 4> aligneds;
aligneds.reserve(alignedsSize);
for (unsigned i = 0; i != alignedsSize; ++i)
aligneds.push_back(Record.readExpr());
unsigned alignmentsSize = Record.readInt();
SmallVector<Expr *, 4> alignments;
alignments.reserve(alignmentsSize);
for (unsigned i = 0; i != alignmentsSize; ++i)
alignments.push_back(Record.readExpr());
unsigned linearsSize = Record.readInt();
SmallVector<Expr *, 4> linears;
linears.reserve(linearsSize);
for (unsigned i = 0; i != linearsSize; ++i)
linears.push_back(Record.readExpr());
unsigned modifiersSize = Record.readInt();
SmallVector<unsigned, 4> modifiers;
modifiers.reserve(modifiersSize);
for (unsigned i = 0; i != modifiersSize; ++i)
modifiers.push_back(Record.readInt());
unsigned stepsSize = Record.readInt();
SmallVector<Expr *, 4> steps;
steps.reserve(stepsSize);
for (unsigned i = 0; i != stepsSize; ++i)
steps.push_back(Record.readExpr());
New = new (Context) OMPDeclareSimdDeclAttr(Context, Info, branchState, simdlen, uniforms.data(), uniformsSize, aligneds.data(), alignedsSize, alignments.data(), alignmentsSize, linears.data(), linearsSize, modifiers.data(), modifiersSize, steps.data(), stepsSize);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::OMPDeclareTargetDecl: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
OMPDeclareTargetDeclAttr::MapTypeTy mapType(static_cast<OMPDeclareTargetDeclAttr::MapTypeTy>(Record.readInt()));
OMPDeclareTargetDeclAttr::DevTypeTy devType(static_cast<OMPDeclareTargetDeclAttr::DevTypeTy>(Record.readInt()));
unsigned level = Record.readInt();
New = new (Context) OMPDeclareTargetDeclAttr(Context, Info, mapType, devType, level);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::OMPDeclareVariant: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
Expr * variantFuncRef = Record.readExpr();
OMPTraitInfo * traitInfos = Record.readOMPTraitInfo();
unsigned adjustArgsNothingSize = Record.readInt();
SmallVector<Expr *, 4> adjustArgsNothing;
adjustArgsNothing.reserve(adjustArgsNothingSize);
for (unsigned i = 0; i != adjustArgsNothingSize; ++i)
adjustArgsNothing.push_back(Record.readExpr());
unsigned adjustArgsNeedDevicePtrSize = Record.readInt();
SmallVector<Expr *, 4> adjustArgsNeedDevicePtr;
adjustArgsNeedDevicePtr.reserve(adjustArgsNeedDevicePtrSize);
for (unsigned i = 0; i != adjustArgsNeedDevicePtrSize; ++i)
adjustArgsNeedDevicePtr.push_back(Record.readExpr());
unsigned appendArgsSize = Record.readInt();
SmallVector<OMPDeclareVariantAttr::InteropType, 4> appendArgs;
appendArgs.reserve(appendArgsSize);
for (unsigned i = appendArgsSize; i; --i)
appendArgs.push_back(static_cast<OMPDeclareVariantAttr::InteropType>(Record.readInt()));
New = new (Context) OMPDeclareVariantAttr(Context, Info, variantFuncRef, traitInfos, adjustArgsNothing.data(), adjustArgsNothingSize, adjustArgsNeedDevicePtr.data(), adjustArgsNeedDevicePtrSize, appendArgs.data(), appendArgsSize);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::OMPReferencedVar: {
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
Expr * ref = Record.readExpr();
New = new (Context) OMPReferencedVarAttr(Context, Info, ref);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::OMPThreadPrivateDecl: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) OMPThreadPrivateDeclAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::OSConsumed: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) OSConsumedAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::OSConsumesThis: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) OSConsumesThisAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::OSReturnsNotRetained: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) OSReturnsNotRetainedAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::OSReturnsRetained: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) OSReturnsRetainedAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::OSReturnsRetainedOnNonZero: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) OSReturnsRetainedOnNonZeroAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::OSReturnsRetainedOnZero: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) OSReturnsRetainedOnZeroAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::ObjCBoxable: {
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) ObjCBoxableAttr(Context, Info);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::ObjCBridge: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
IdentifierInfo * bridgedType = Record.readIdentifier();
New = new (Context) ObjCBridgeAttr(Context, Info, bridgedType);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::ObjCBridgeMutable: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
IdentifierInfo * bridgedType = Record.readIdentifier();
New = new (Context) ObjCBridgeMutableAttr(Context, Info, bridgedType);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::ObjCBridgeRelated: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
IdentifierInfo * relatedClass = Record.readIdentifier();
IdentifierInfo * classMethod = Record.readIdentifier();
IdentifierInfo * instanceMethod = Record.readIdentifier();
New = new (Context) ObjCBridgeRelatedAttr(Context, Info, relatedClass, classMethod, instanceMethod);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::ObjCClassStub: {
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) ObjCClassStubAttr(Context, Info);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::ObjCDesignatedInitializer: {
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) ObjCDesignatedInitializerAttr(Context, Info);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::ObjCDirect: {
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) ObjCDirectAttr(Context, Info);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::ObjCDirectMembers: {
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) ObjCDirectMembersAttr(Context, Info);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::ObjCException: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) ObjCExceptionAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::ObjCExplicitProtocolImpl: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) ObjCExplicitProtocolImplAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::ObjCExternallyRetained: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) ObjCExternallyRetainedAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::ObjCGC: {
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
IdentifierInfo * kind = Record.readIdentifier();
New = new (Context) ObjCGCAttr(Context, Info, kind);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::ObjCIndependentClass: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) ObjCIndependentClassAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::ObjCInertUnsafeUnretained: {
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) ObjCInertUnsafeUnretainedAttr(Context, Info);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::ObjCKindOf: {
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) ObjCKindOfAttr(Context, Info);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::ObjCMethodFamily: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
ObjCMethodFamilyAttr::FamilyKind family(static_cast<ObjCMethodFamilyAttr::FamilyKind>(Record.readInt()));
New = new (Context) ObjCMethodFamilyAttr(Context, Info, family);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::ObjCNSObject: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) ObjCNSObjectAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::ObjCNonLazyClass: {
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) ObjCNonLazyClassAttr(Context, Info);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::ObjCNonRuntimeProtocol: {
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) ObjCNonRuntimeProtocolAttr(Context, Info);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::ObjCOwnership: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
IdentifierInfo * kind = Record.readIdentifier();
New = new (Context) ObjCOwnershipAttr(Context, Info, kind);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::ObjCPreciseLifetime: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) ObjCPreciseLifetimeAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::ObjCRequiresPropertyDefs: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) ObjCRequiresPropertyDefsAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::ObjCRequiresSuper: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) ObjCRequiresSuperAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::ObjCReturnsInnerPointer: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) ObjCReturnsInnerPointerAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::ObjCRootClass: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) ObjCRootClassAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::ObjCRuntimeName: {
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
std::string metadataName= Record.readString();
New = new (Context) ObjCRuntimeNameAttr(Context, Info, metadataName);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::ObjCRuntimeVisible: {
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) ObjCRuntimeVisibleAttr(Context, Info);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::ObjCSubclassingRestricted: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) ObjCSubclassingRestrictedAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::OpenCLAccess: {
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) OpenCLAccessAttr(Context, Info);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::OpenCLConstantAddressSpace: {
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) OpenCLConstantAddressSpaceAttr(Context, Info);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::OpenCLGenericAddressSpace: {
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) OpenCLGenericAddressSpaceAttr(Context, Info);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::OpenCLGlobalAddressSpace: {
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) OpenCLGlobalAddressSpaceAttr(Context, Info);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::OpenCLGlobalDeviceAddressSpace: {
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) OpenCLGlobalDeviceAddressSpaceAttr(Context, Info);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::OpenCLGlobalHostAddressSpace: {
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) OpenCLGlobalHostAddressSpaceAttr(Context, Info);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::OpenCLIntelReqdSubGroupSize: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
unsigned subGroupSize = Record.readInt();
New = new (Context) OpenCLIntelReqdSubGroupSizeAttr(Context, Info, subGroupSize);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::OpenCLKernel: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) OpenCLKernelAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::OpenCLLocalAddressSpace: {
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) OpenCLLocalAddressSpaceAttr(Context, Info);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::OpenCLPrivateAddressSpace: {
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) OpenCLPrivateAddressSpaceAttr(Context, Info);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::OpenCLUnrollHint: {
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
unsigned unrollHint = Record.readInt();
New = new (Context) OpenCLUnrollHintAttr(Context, Info, unrollHint);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::OptimizeNone: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) OptimizeNoneAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::Overloadable: {
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) OverloadableAttr(Context, Info);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::Override: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) OverrideAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::Owner: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
TypeSourceInfo * derefType = Record.readTypeSourceInfo();
New = new (Context) OwnerAttr(Context, Info, derefType);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::Ownership: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
IdentifierInfo * module = Record.readIdentifier();
unsigned argsSize = Record.readInt();
SmallVector<ParamIdx, 4> args;
args.reserve(argsSize);
for (unsigned i = 0; i != argsSize; ++i)
args.push_back(ParamIdx::deserialize(Record.readInt()));
New = new (Context) OwnershipAttr(Context, Info, module, args.data(), argsSize);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::Packed: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) PackedAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::ParamTypestate: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
ParamTypestateAttr::ConsumedState paramState(static_cast<ParamTypestateAttr::ConsumedState>(Record.readInt()));
New = new (Context) ParamTypestateAttr(Context, Info, paramState);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::Pascal: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) PascalAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::PassObjectSize: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
int type = Record.readInt();
New = new (Context) PassObjectSizeAttr(Context, Info, type);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::PatchableFunctionEntry: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
unsigned count = Record.readInt();
int offset = Record.readInt();
New = new (Context) PatchableFunctionEntryAttr(Context, Info, count, offset);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::Pcs: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
PcsAttr::PCSType pCS(static_cast<PcsAttr::PCSType>(Record.readInt()));
New = new (Context) PcsAttr(Context, Info, pCS);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::Pointer: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
TypeSourceInfo * derefType = Record.readTypeSourceInfo();
New = new (Context) PointerAttr(Context, Info, derefType);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::PragmaClangBSSSection: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
std::string name= Record.readString();
New = new (Context) PragmaClangBSSSectionAttr(Context, Info, name);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::PragmaClangDataSection: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
std::string name= Record.readString();
New = new (Context) PragmaClangDataSectionAttr(Context, Info, name);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::PragmaClangRelroSection: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
std::string name= Record.readString();
New = new (Context) PragmaClangRelroSectionAttr(Context, Info, name);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::PragmaClangRodataSection: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
std::string name= Record.readString();
New = new (Context) PragmaClangRodataSectionAttr(Context, Info, name);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::PragmaClangTextSection: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
std::string name= Record.readString();
New = new (Context) PragmaClangTextSectionAttr(Context, Info, name);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::PreferredName: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
TypeSourceInfo * typedefType = Record.readTypeSourceInfo();
New = new (Context) PreferredNameAttr(Context, Info, typedefType);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::PreserveAll: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) PreserveAllAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::PreserveMost: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) PreserveMostAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::PtGuardedBy: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
Expr * arg = Record.readExpr();
New = new (Context) PtGuardedByAttr(Context, Info, arg);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::PtGuardedVar: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) PtGuardedVarAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::Ptr32: {
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) Ptr32Attr(Context, Info);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::Ptr64: {
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) Ptr64Attr(Context, Info);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::Pure: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) PureAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::RISCVInterrupt: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
RISCVInterruptAttr::InterruptType interrupt(static_cast<RISCVInterruptAttr::InterruptType>(Record.readInt()));
New = new (Context) RISCVInterruptAttr(Context, Info, interrupt);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::RegCall: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) RegCallAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::Reinitializes: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) ReinitializesAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::ReleaseCapability: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
unsigned argsSize = Record.readInt();
SmallVector<Expr *, 4> args;
args.reserve(argsSize);
for (unsigned i = 0; i != argsSize; ++i)
args.push_back(Record.readExpr());
New = new (Context) ReleaseCapabilityAttr(Context, Info, args.data(), argsSize);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::ReleaseHandle: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
std::string handleType= Record.readString();
New = new (Context) ReleaseHandleAttr(Context, Info, handleType);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::RenderScriptKernel: {
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) RenderScriptKernelAttr(Context, Info);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::ReqdWorkGroupSize: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
unsigned xDim = Record.readInt();
unsigned yDim = Record.readInt();
unsigned zDim = Record.readInt();
New = new (Context) ReqdWorkGroupSizeAttr(Context, Info, xDim, yDim, zDim);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::RequiresCapability: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
unsigned argsSize = Record.readInt();
SmallVector<Expr *, 4> args;
args.reserve(argsSize);
for (unsigned i = 0; i != argsSize; ++i)
args.push_back(Record.readExpr());
New = new (Context) RequiresCapabilityAttr(Context, Info, args.data(), argsSize);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::Restrict: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) RestrictAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::Retain: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) RetainAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::ReturnTypestate: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
ReturnTypestateAttr::ConsumedState state(static_cast<ReturnTypestateAttr::ConsumedState>(Record.readInt()));
New = new (Context) ReturnTypestateAttr(Context, Info, state);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::ReturnsNonNull: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) ReturnsNonNullAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::ReturnsTwice: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) ReturnsTwiceAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::SPtr: {
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) SPtrAttr(Context, Info);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::SYCLKernel: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) SYCLKernelAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::ScopedLockable: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) ScopedLockableAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::Section: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
std::string name= Record.readString();
New = new (Context) SectionAttr(Context, Info, name);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::SelectAny: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) SelectAnyAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::Sentinel: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
int sentinel = Record.readInt();
int nullPos = Record.readInt();
New = new (Context) SentinelAttr(Context, Info, sentinel, nullPos);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::SetTypestate: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
SetTypestateAttr::ConsumedState newState(static_cast<SetTypestateAttr::ConsumedState>(Record.readInt()));
New = new (Context) SetTypestateAttr(Context, Info, newState);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::SharedTrylockFunction: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
Expr * successValue = Record.readExpr();
unsigned argsSize = Record.readInt();
SmallVector<Expr *, 4> args;
args.reserve(argsSize);
for (unsigned i = 0; i != argsSize; ++i)
args.push_back(Record.readExpr());
New = new (Context) SharedTrylockFunctionAttr(Context, Info, successValue, args.data(), argsSize);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::SpeculativeLoadHardening: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) SpeculativeLoadHardeningAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::StandaloneDebug: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) StandaloneDebugAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::StdCall: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) StdCallAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::StrictFP: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) StrictFPAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::Suppress: {
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
unsigned diagnosticIdentifiersSize = Record.readInt();
SmallVector<StringRef, 4> diagnosticIdentifiers;
diagnosticIdentifiers.reserve(diagnosticIdentifiersSize);
SmallVector<std::string, 4> diagnosticIdentifiersStorage;
diagnosticIdentifiersStorage.reserve(diagnosticIdentifiersSize);
for (unsigned i = 0; i != diagnosticIdentifiersSize; ++i)
diagnosticIdentifiersStorage.push_back(Record.readString());
for (unsigned i = 0; i != diagnosticIdentifiersSize; ++i)
diagnosticIdentifiers.push_back(diagnosticIdentifiersStorage[i]);
New = new (Context) SuppressAttr(Context, Info, diagnosticIdentifiers.data(), diagnosticIdentifiersSize);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::SwiftAsync: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
SwiftAsyncAttr::Kind kind(static_cast<SwiftAsyncAttr::Kind>(Record.readInt()));
ParamIdx completionHandlerIndex = ParamIdx::deserialize(Record.readInt());
New = new (Context) SwiftAsyncAttr(Context, Info, kind, completionHandlerIndex);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::SwiftAsyncCall: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) SwiftAsyncCallAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::SwiftAsyncContext: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) SwiftAsyncContextAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::SwiftAsyncError: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
SwiftAsyncErrorAttr::ConventionKind convention(static_cast<SwiftAsyncErrorAttr::ConventionKind>(Record.readInt()));
unsigned handlerParamIdx = Record.readInt();
New = new (Context) SwiftAsyncErrorAttr(Context, Info, convention, handlerParamIdx);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::SwiftAsyncName: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
std::string name= Record.readString();
New = new (Context) SwiftAsyncNameAttr(Context, Info, name);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::SwiftAttr: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
std::string attribute= Record.readString();
New = new (Context) SwiftAttrAttr(Context, Info, attribute);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::SwiftBridge: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
std::string swiftType= Record.readString();
New = new (Context) SwiftBridgeAttr(Context, Info, swiftType);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::SwiftBridgedTypedef: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) SwiftBridgedTypedefAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::SwiftCall: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) SwiftCallAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::SwiftContext: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) SwiftContextAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::SwiftError: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
SwiftErrorAttr::ConventionKind convention(static_cast<SwiftErrorAttr::ConventionKind>(Record.readInt()));
New = new (Context) SwiftErrorAttr(Context, Info, convention);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::SwiftErrorResult: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) SwiftErrorResultAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::SwiftIndirectResult: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) SwiftIndirectResultAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::SwiftName: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
std::string name= Record.readString();
New = new (Context) SwiftNameAttr(Context, Info, name);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::SwiftNewType: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
SwiftNewTypeAttr::NewtypeKind newtypeKind(static_cast<SwiftNewTypeAttr::NewtypeKind>(Record.readInt()));
New = new (Context) SwiftNewTypeAttr(Context, Info, newtypeKind);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::SwiftObjCMembers: {
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) SwiftObjCMembersAttr(Context, Info);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::SwiftPrivate: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) SwiftPrivateAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::SysVABI: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) SysVABIAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::TLSModel: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
std::string model= Record.readString();
New = new (Context) TLSModelAttr(Context, Info, model);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::Target: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
std::string featuresStr= Record.readString();
New = new (Context) TargetAttr(Context, Info, featuresStr);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::TargetClones: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
unsigned featuresStrsSize = Record.readInt();
SmallVector<StringRef, 4> featuresStrs;
featuresStrs.reserve(featuresStrsSize);
SmallVector<std::string, 4> featuresStrsStorage;
featuresStrsStorage.reserve(featuresStrsSize);
for (unsigned i = 0; i != featuresStrsSize; ++i)
featuresStrsStorage.push_back(Record.readString());
for (unsigned i = 0; i != featuresStrsSize; ++i)
featuresStrs.push_back(featuresStrsStorage[i]);
New = new (Context) TargetClonesAttr(Context, Info, featuresStrs.data(), featuresStrsSize);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::TestTypestate: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
TestTypestateAttr::ConsumedState testState(static_cast<TestTypestateAttr::ConsumedState>(Record.readInt()));
New = new (Context) TestTypestateAttr(Context, Info, testState);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::ThisCall: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) ThisCallAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::Thread: {
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) ThreadAttr(Context, Info);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::TransparentUnion: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) TransparentUnionAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::TrivialABI: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) TrivialABIAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::TryAcquireCapability: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
Expr * successValue = Record.readExpr();
unsigned argsSize = Record.readInt();
SmallVector<Expr *, 4> args;
args.reserve(argsSize);
for (unsigned i = 0; i != argsSize; ++i)
args.push_back(Record.readExpr());
New = new (Context) TryAcquireCapabilityAttr(Context, Info, successValue, args.data(), argsSize);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::TypeNonNull: {
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) TypeNonNullAttr(Context, Info);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::TypeNullUnspecified: {
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) TypeNullUnspecifiedAttr(Context, Info);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::TypeNullable: {
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) TypeNullableAttr(Context, Info);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::TypeNullableResult: {
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) TypeNullableResultAttr(Context, Info);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::TypeTagForDatatype: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
IdentifierInfo * argumentKind = Record.readIdentifier();
TypeSourceInfo * matchingCType = Record.readTypeSourceInfo();
bool layoutCompatible = Record.readInt();
bool mustBeNull = Record.readInt();
New = new (Context) TypeTagForDatatypeAttr(Context, Info, argumentKind, matchingCType, layoutCompatible, mustBeNull);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::TypeVisibility: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
TypeVisibilityAttr::VisibilityType visibility(static_cast<TypeVisibilityAttr::VisibilityType>(Record.readInt()));
New = new (Context) TypeVisibilityAttr(Context, Info, visibility);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::UPtr: {
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) UPtrAttr(Context, Info);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::Unavailable: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
std::string message= Record.readString();
UnavailableAttr::ImplicitReason implicitReason(static_cast<UnavailableAttr::ImplicitReason>(Record.readInt()));
New = new (Context) UnavailableAttr(Context, Info, message, implicitReason);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::Uninitialized: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) UninitializedAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::Unlikely: {
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) UnlikelyAttr(Context, Info);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::Unused: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) UnusedAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::UseHandle: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
std::string handleType= Record.readString();
New = new (Context) UseHandleAttr(Context, Info, handleType);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::Used: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) UsedAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::UsingIfExists: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) UsingIfExistsAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::Uuid: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
std::string guid= Record.readString();
MSGuidDecl * guidDecl = Record.GetLocalDeclAs<MSGuidDecl >(Record.readInt());
New = new (Context) UuidAttr(Context, Info, guid, guidDecl);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::VecReturn: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) VecReturnAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::VecTypeHint: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
TypeSourceInfo * typeHint = Record.readTypeSourceInfo();
New = new (Context) VecTypeHintAttr(Context, Info, typeHint);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::VectorCall: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) VectorCallAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::Visibility: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
VisibilityAttr::VisibilityType visibility(static_cast<VisibilityAttr::VisibilityType>(Record.readInt()));
New = new (Context) VisibilityAttr(Context, Info, visibility);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::WarnUnused: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) WarnUnusedAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::WarnUnusedResult: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
std::string message= Record.readString();
New = new (Context) WarnUnusedResultAttr(Context, Info, message);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::Weak: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) WeakAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::WeakImport: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) WeakImportAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::WeakRef: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
std::string aliasee= Record.readString();
New = new (Context) WeakRefAttr(Context, Info, aliasee);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::WebAssemblyExportName: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
std::string exportName= Record.readString();
New = new (Context) WebAssemblyExportNameAttr(Context, Info, exportName);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::WebAssemblyImportModule: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
std::string importModule= Record.readString();
New = new (Context) WebAssemblyImportModuleAttr(Context, Info, importModule);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::WebAssemblyImportName: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
std::string importName= Record.readString();
New = new (Context) WebAssemblyImportNameAttr(Context, Info, importName);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::WorkGroupSizeHint: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
unsigned xDim = Record.readInt();
unsigned yDim = Record.readInt();
unsigned zDim = Record.readInt();
New = new (Context) WorkGroupSizeHintAttr(Context, Info, xDim, yDim, zDim);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::X86ForceAlignArgPointer: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) X86ForceAlignArgPointerAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::XRayInstrument: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
New = new (Context) XRayInstrumentAttr(Context, Info);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
case attr::XRayLogArgs: {
bool isInherited = Record.readInt();
bool isImplicit = Record.readInt();
bool isPackExpansion = Record.readInt();
unsigned argumentCount = Record.readInt();
New = new (Context) XRayLogArgsAttr(Context, Info, argumentCount);
cast<InheritableAttr>(New)->setInherited(isInherited);
New->setImplicit(isImplicit);
New->setPackExpansion(isPackExpansion);
break;
}
}