Warning, /include/clang/Serialization/AttrPCHRead.inc is written in an unsupported language. File is not indexed.
0001 /*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
0002 |* *|
0003 |* Attribute deserialization code *|
0004 |* *|
0005 |* Automatically generated file, do not edit! *|
0006 |* From: Attr.td *|
0007 |* *|
0008 \*===----------------------------------------------------------------------===*/
0009
0010 switch (Kind) {
0011 case attr::AArch64SVEPcs: {
0012 bool isInherited = Record.readInt();
0013 bool isImplicit = Record.readInt();
0014 bool isPackExpansion = Record.readInt();
0015 New = new (Context) AArch64SVEPcsAttr(Context, Info);
0016 cast<InheritableAttr>(New)->setInherited(isInherited);
0017 New->setImplicit(isImplicit);
0018 New->setPackExpansion(isPackExpansion);
0019 break;
0020 }
0021 case attr::AArch64VectorPcs: {
0022 bool isInherited = Record.readInt();
0023 bool isImplicit = Record.readInt();
0024 bool isPackExpansion = Record.readInt();
0025 New = new (Context) AArch64VectorPcsAttr(Context, Info);
0026 cast<InheritableAttr>(New)->setInherited(isInherited);
0027 New->setImplicit(isImplicit);
0028 New->setPackExpansion(isPackExpansion);
0029 break;
0030 }
0031 case attr::AMDGPUFlatWorkGroupSize: {
0032 bool isInherited = Record.readInt();
0033 bool isImplicit = Record.readInt();
0034 bool isPackExpansion = Record.readInt();
0035 Expr * min = Record.readExpr();
0036 Expr * max = Record.readExpr();
0037 New = new (Context) AMDGPUFlatWorkGroupSizeAttr(Context, Info, min, max);
0038 cast<InheritableAttr>(New)->setInherited(isInherited);
0039 New->setImplicit(isImplicit);
0040 New->setPackExpansion(isPackExpansion);
0041 break;
0042 }
0043 case attr::AMDGPUKernelCall: {
0044 bool isInherited = Record.readInt();
0045 bool isImplicit = Record.readInt();
0046 bool isPackExpansion = Record.readInt();
0047 New = new (Context) AMDGPUKernelCallAttr(Context, Info);
0048 cast<InheritableAttr>(New)->setInherited(isInherited);
0049 New->setImplicit(isImplicit);
0050 New->setPackExpansion(isPackExpansion);
0051 break;
0052 }
0053 case attr::AMDGPUMaxNumWorkGroups: {
0054 bool isInherited = Record.readInt();
0055 bool isImplicit = Record.readInt();
0056 bool isPackExpansion = Record.readInt();
0057 Expr * maxNumWorkGroupsX = Record.readExpr();
0058 Expr * maxNumWorkGroupsY = Record.readExpr();
0059 Expr * maxNumWorkGroupsZ = Record.readExpr();
0060 New = new (Context) AMDGPUMaxNumWorkGroupsAttr(Context, Info, maxNumWorkGroupsX, maxNumWorkGroupsY, maxNumWorkGroupsZ);
0061 cast<InheritableAttr>(New)->setInherited(isInherited);
0062 New->setImplicit(isImplicit);
0063 New->setPackExpansion(isPackExpansion);
0064 break;
0065 }
0066 case attr::AMDGPUNumSGPR: {
0067 bool isInherited = Record.readInt();
0068 bool isImplicit = Record.readInt();
0069 bool isPackExpansion = Record.readInt();
0070 unsigned numSGPR = Record.readInt();
0071 New = new (Context) AMDGPUNumSGPRAttr(Context, Info, numSGPR);
0072 cast<InheritableAttr>(New)->setInherited(isInherited);
0073 New->setImplicit(isImplicit);
0074 New->setPackExpansion(isPackExpansion);
0075 break;
0076 }
0077 case attr::AMDGPUNumVGPR: {
0078 bool isInherited = Record.readInt();
0079 bool isImplicit = Record.readInt();
0080 bool isPackExpansion = Record.readInt();
0081 unsigned numVGPR = Record.readInt();
0082 New = new (Context) AMDGPUNumVGPRAttr(Context, Info, numVGPR);
0083 cast<InheritableAttr>(New)->setInherited(isInherited);
0084 New->setImplicit(isImplicit);
0085 New->setPackExpansion(isPackExpansion);
0086 break;
0087 }
0088 case attr::AMDGPUWavesPerEU: {
0089 bool isInherited = Record.readInt();
0090 bool isImplicit = Record.readInt();
0091 bool isPackExpansion = Record.readInt();
0092 Expr * min = Record.readExpr();
0093 Expr * max = Record.readExpr();
0094 New = new (Context) AMDGPUWavesPerEUAttr(Context, Info, min, max);
0095 cast<InheritableAttr>(New)->setInherited(isInherited);
0096 New->setImplicit(isImplicit);
0097 New->setPackExpansion(isPackExpansion);
0098 break;
0099 }
0100 case attr::ARMInterrupt: {
0101 bool isInherited = Record.readInt();
0102 bool isImplicit = Record.readInt();
0103 bool isPackExpansion = Record.readInt();
0104 ARMInterruptAttr::InterruptType interrupt(static_cast<ARMInterruptAttr::InterruptType>(Record.readInt()));
0105 New = new (Context) ARMInterruptAttr(Context, Info, interrupt);
0106 cast<InheritableAttr>(New)->setInherited(isInherited);
0107 New->setImplicit(isImplicit);
0108 New->setPackExpansion(isPackExpansion);
0109 break;
0110 }
0111 case attr::AVRInterrupt: {
0112 bool isInherited = Record.readInt();
0113 bool isImplicit = Record.readInt();
0114 bool isPackExpansion = Record.readInt();
0115 New = new (Context) AVRInterruptAttr(Context, Info);
0116 cast<InheritableAttr>(New)->setInherited(isInherited);
0117 New->setImplicit(isImplicit);
0118 New->setPackExpansion(isPackExpansion);
0119 break;
0120 }
0121 case attr::AVRSignal: {
0122 bool isInherited = Record.readInt();
0123 bool isImplicit = Record.readInt();
0124 bool isPackExpansion = Record.readInt();
0125 New = new (Context) AVRSignalAttr(Context, Info);
0126 cast<InheritableAttr>(New)->setInherited(isInherited);
0127 New->setImplicit(isImplicit);
0128 New->setPackExpansion(isPackExpansion);
0129 break;
0130 }
0131 case attr::AbiTag: {
0132 bool isImplicit = Record.readInt();
0133 bool isPackExpansion = Record.readInt();
0134 unsigned tagsSize = Record.readInt();
0135 SmallVector<StringRef, 4> tags;
0136 tags.reserve(tagsSize);
0137 SmallVector<std::string, 4> tagsStorage;
0138 tagsStorage.reserve(tagsSize);
0139 for (unsigned i = 0; i != tagsSize; ++i)
0140 tagsStorage.push_back(Record.readString());
0141 for (unsigned i = 0; i != tagsSize; ++i)
0142 tags.push_back(tagsStorage[i]);
0143 New = new (Context) AbiTagAttr(Context, Info, tags.data(), tagsSize);
0144 New->setImplicit(isImplicit);
0145 New->setPackExpansion(isPackExpansion);
0146 break;
0147 }
0148 case attr::AcquireCapability: {
0149 bool isInherited = Record.readInt();
0150 bool isImplicit = Record.readInt();
0151 bool isPackExpansion = Record.readInt();
0152 unsigned argsSize = Record.readInt();
0153 SmallVector<Expr *, 4> args;
0154 args.reserve(argsSize);
0155 for (unsigned i = 0; i != argsSize; ++i)
0156 args.push_back(Record.readExpr());
0157 New = new (Context) AcquireCapabilityAttr(Context, Info, args.data(), argsSize);
0158 cast<InheritableAttr>(New)->setInherited(isInherited);
0159 New->setImplicit(isImplicit);
0160 New->setPackExpansion(isPackExpansion);
0161 break;
0162 }
0163 case attr::AcquireHandle: {
0164 bool isInherited = Record.readInt();
0165 bool isImplicit = Record.readInt();
0166 bool isPackExpansion = Record.readInt();
0167 std::string handleType= Record.readString();
0168 New = new (Context) AcquireHandleAttr(Context, Info, handleType);
0169 cast<InheritableAttr>(New)->setInherited(isInherited);
0170 New->setImplicit(isImplicit);
0171 New->setPackExpansion(isPackExpansion);
0172 break;
0173 }
0174 case attr::AcquiredAfter: {
0175 bool isInherited = Record.readInt();
0176 bool isImplicit = Record.readInt();
0177 bool isPackExpansion = Record.readInt();
0178 unsigned argsSize = Record.readInt();
0179 SmallVector<Expr *, 4> args;
0180 args.reserve(argsSize);
0181 for (unsigned i = 0; i != argsSize; ++i)
0182 args.push_back(Record.readExpr());
0183 New = new (Context) AcquiredAfterAttr(Context, Info, args.data(), argsSize);
0184 cast<InheritableAttr>(New)->setInherited(isInherited);
0185 New->setImplicit(isImplicit);
0186 New->setPackExpansion(isPackExpansion);
0187 break;
0188 }
0189 case attr::AcquiredBefore: {
0190 bool isInherited = Record.readInt();
0191 bool isImplicit = Record.readInt();
0192 bool isPackExpansion = Record.readInt();
0193 unsigned argsSize = Record.readInt();
0194 SmallVector<Expr *, 4> args;
0195 args.reserve(argsSize);
0196 for (unsigned i = 0; i != argsSize; ++i)
0197 args.push_back(Record.readExpr());
0198 New = new (Context) AcquiredBeforeAttr(Context, Info, args.data(), argsSize);
0199 cast<InheritableAttr>(New)->setInherited(isInherited);
0200 New->setImplicit(isImplicit);
0201 New->setPackExpansion(isPackExpansion);
0202 break;
0203 }
0204 case attr::AddressSpace: {
0205 bool isImplicit = Record.readInt();
0206 bool isPackExpansion = Record.readInt();
0207 int addressSpace = Record.readInt();
0208 New = new (Context) AddressSpaceAttr(Context, Info, addressSpace);
0209 New->setImplicit(isImplicit);
0210 New->setPackExpansion(isPackExpansion);
0211 break;
0212 }
0213 case attr::Alias: {
0214 bool isImplicit = Record.readInt();
0215 bool isPackExpansion = Record.readInt();
0216 std::string aliasee= Record.readString();
0217 New = new (Context) AliasAttr(Context, Info, aliasee);
0218 New->setImplicit(isImplicit);
0219 New->setPackExpansion(isPackExpansion);
0220 break;
0221 }
0222 case attr::AlignMac68k: {
0223 bool isInherited = Record.readInt();
0224 bool isImplicit = Record.readInt();
0225 bool isPackExpansion = Record.readInt();
0226 New = new (Context) AlignMac68kAttr(Context, Info);
0227 cast<InheritableAttr>(New)->setInherited(isInherited);
0228 New->setImplicit(isImplicit);
0229 New->setPackExpansion(isPackExpansion);
0230 break;
0231 }
0232 case attr::AlignNatural: {
0233 bool isInherited = Record.readInt();
0234 bool isImplicit = Record.readInt();
0235 bool isPackExpansion = Record.readInt();
0236 New = new (Context) AlignNaturalAttr(Context, Info);
0237 cast<InheritableAttr>(New)->setInherited(isInherited);
0238 New->setImplicit(isImplicit);
0239 New->setPackExpansion(isPackExpansion);
0240 break;
0241 }
0242 case attr::AlignValue: {
0243 bool isImplicit = Record.readInt();
0244 bool isPackExpansion = Record.readInt();
0245 Expr * alignment = Record.readExpr();
0246 New = new (Context) AlignValueAttr(Context, Info, alignment);
0247 New->setImplicit(isImplicit);
0248 New->setPackExpansion(isPackExpansion);
0249 break;
0250 }
0251 case attr::Aligned: {
0252 bool isInherited = Record.readInt();
0253 bool isImplicit = Record.readInt();
0254 bool isPackExpansion = Record.readInt();
0255 bool isalignmentExpr = Record.readInt();
0256 void *alignmentPtr;
0257 if (isalignmentExpr)
0258 alignmentPtr = Record.readExpr();
0259 else
0260 alignmentPtr = Record.readTypeSourceInfo();
0261 New = new (Context) AlignedAttr(Context, Info, isalignmentExpr, alignmentPtr);
0262 cast<InheritableAttr>(New)->setInherited(isInherited);
0263 New->setImplicit(isImplicit);
0264 New->setPackExpansion(isPackExpansion);
0265 break;
0266 }
0267 case attr::AllocAlign: {
0268 bool isInherited = Record.readInt();
0269 bool isImplicit = Record.readInt();
0270 bool isPackExpansion = Record.readInt();
0271 ParamIdx paramIndex = ParamIdx::deserialize(Record.readInt());
0272 New = new (Context) AllocAlignAttr(Context, Info, paramIndex);
0273 cast<InheritableAttr>(New)->setInherited(isInherited);
0274 New->setImplicit(isImplicit);
0275 New->setPackExpansion(isPackExpansion);
0276 break;
0277 }
0278 case attr::AllocSize: {
0279 bool isInherited = Record.readInt();
0280 bool isImplicit = Record.readInt();
0281 bool isPackExpansion = Record.readInt();
0282 ParamIdx elemSizeParam = ParamIdx::deserialize(Record.readInt());
0283 ParamIdx numElemsParam = ParamIdx::deserialize(Record.readInt());
0284 New = new (Context) AllocSizeAttr(Context, Info, elemSizeParam, numElemsParam);
0285 cast<InheritableAttr>(New)->setInherited(isInherited);
0286 New->setImplicit(isImplicit);
0287 New->setPackExpansion(isPackExpansion);
0288 break;
0289 }
0290 case attr::Allocating: {
0291 bool isImplicit = Record.readInt();
0292 bool isPackExpansion = Record.readInt();
0293 New = new (Context) AllocatingAttr(Context, Info);
0294 New->setImplicit(isImplicit);
0295 New->setPackExpansion(isPackExpansion);
0296 break;
0297 }
0298 case attr::AlwaysDestroy: {
0299 bool isInherited = Record.readInt();
0300 bool isImplicit = Record.readInt();
0301 bool isPackExpansion = Record.readInt();
0302 New = new (Context) AlwaysDestroyAttr(Context, Info);
0303 cast<InheritableAttr>(New)->setInherited(isInherited);
0304 New->setImplicit(isImplicit);
0305 New->setPackExpansion(isPackExpansion);
0306 break;
0307 }
0308 case attr::AlwaysInline: {
0309 bool isInherited = Record.readInt();
0310 bool isImplicit = Record.readInt();
0311 bool isPackExpansion = Record.readInt();
0312 New = new (Context) AlwaysInlineAttr(Context, Info);
0313 cast<InheritableAttr>(New)->setInherited(isInherited);
0314 New->setImplicit(isImplicit);
0315 New->setPackExpansion(isPackExpansion);
0316 break;
0317 }
0318 case attr::AnalyzerNoReturn: {
0319 bool isInherited = Record.readInt();
0320 bool isImplicit = Record.readInt();
0321 bool isPackExpansion = Record.readInt();
0322 New = new (Context) AnalyzerNoReturnAttr(Context, Info);
0323 cast<InheritableAttr>(New)->setInherited(isInherited);
0324 New->setImplicit(isImplicit);
0325 New->setPackExpansion(isPackExpansion);
0326 break;
0327 }
0328 case attr::Annotate: {
0329 bool isInherited = Record.readInt();
0330 bool isImplicit = Record.readInt();
0331 bool isPackExpansion = Record.readInt();
0332 unsigned delayedArgsSize = Record.readInt();
0333 SmallVector<Expr *, 4> delayedArgs;
0334 delayedArgs.reserve(delayedArgsSize);
0335 for (unsigned i = 0; i != delayedArgsSize; ++i)
0336 delayedArgs.push_back(Record.readExpr());
0337 std::string annotation= Record.readString();
0338 unsigned argsSize = Record.readInt();
0339 SmallVector<Expr *, 4> args;
0340 args.reserve(argsSize);
0341 for (unsigned i = 0; i != argsSize; ++i)
0342 args.push_back(Record.readExpr());
0343 New = new (Context) AnnotateAttr(Context, Info, annotation, args.data(), argsSize);
0344 cast<InheritableAttr>(New)->setInherited(isInherited);
0345 New->setImplicit(isImplicit);
0346 New->setPackExpansion(isPackExpansion);
0347 cast<AnnotateAttr>(New)->setDelayedArgs(Context, delayedArgs.data(), delayedArgsSize);
0348 break;
0349 }
0350 case attr::AnnotateType: {
0351 bool isImplicit = Record.readInt();
0352 bool isPackExpansion = Record.readInt();
0353 unsigned delayedArgsSize = Record.readInt();
0354 SmallVector<Expr *, 4> delayedArgs;
0355 delayedArgs.reserve(delayedArgsSize);
0356 for (unsigned i = 0; i != delayedArgsSize; ++i)
0357 delayedArgs.push_back(Record.readExpr());
0358 std::string annotation= Record.readString();
0359 unsigned argsSize = Record.readInt();
0360 SmallVector<Expr *, 4> args;
0361 args.reserve(argsSize);
0362 for (unsigned i = 0; i != argsSize; ++i)
0363 args.push_back(Record.readExpr());
0364 New = new (Context) AnnotateTypeAttr(Context, Info, annotation, args.data(), argsSize);
0365 New->setImplicit(isImplicit);
0366 New->setPackExpansion(isPackExpansion);
0367 cast<AnnotateTypeAttr>(New)->setDelayedArgs(Context, delayedArgs.data(), delayedArgsSize);
0368 break;
0369 }
0370 case attr::AnyX86Interrupt: {
0371 bool isInherited = Record.readInt();
0372 bool isImplicit = Record.readInt();
0373 bool isPackExpansion = Record.readInt();
0374 New = new (Context) AnyX86InterruptAttr(Context, Info);
0375 cast<InheritableAttr>(New)->setInherited(isInherited);
0376 New->setImplicit(isImplicit);
0377 New->setPackExpansion(isPackExpansion);
0378 break;
0379 }
0380 case attr::AnyX86NoCallerSavedRegisters: {
0381 bool isInherited = Record.readInt();
0382 bool isImplicit = Record.readInt();
0383 bool isPackExpansion = Record.readInt();
0384 New = new (Context) AnyX86NoCallerSavedRegistersAttr(Context, Info);
0385 cast<InheritableAttr>(New)->setInherited(isInherited);
0386 New->setImplicit(isImplicit);
0387 New->setPackExpansion(isPackExpansion);
0388 break;
0389 }
0390 case attr::AnyX86NoCfCheck: {
0391 bool isInherited = Record.readInt();
0392 bool isImplicit = Record.readInt();
0393 bool isPackExpansion = Record.readInt();
0394 New = new (Context) AnyX86NoCfCheckAttr(Context, Info);
0395 cast<InheritableAttr>(New)->setInherited(isInherited);
0396 New->setImplicit(isImplicit);
0397 New->setPackExpansion(isPackExpansion);
0398 break;
0399 }
0400 case attr::ArcWeakrefUnavailable: {
0401 bool isInherited = Record.readInt();
0402 bool isImplicit = Record.readInt();
0403 bool isPackExpansion = Record.readInt();
0404 New = new (Context) ArcWeakrefUnavailableAttr(Context, Info);
0405 cast<InheritableAttr>(New)->setInherited(isInherited);
0406 New->setImplicit(isImplicit);
0407 New->setPackExpansion(isPackExpansion);
0408 break;
0409 }
0410 case attr::ArgumentWithTypeTag: {
0411 bool isInherited = Record.readInt();
0412 bool isImplicit = Record.readInt();
0413 bool isPackExpansion = Record.readInt();
0414 IdentifierInfo * argumentKind = Record.readIdentifier();
0415 ParamIdx argumentIdx = ParamIdx::deserialize(Record.readInt());
0416 ParamIdx typeTagIdx = ParamIdx::deserialize(Record.readInt());
0417 bool isPointer = Record.readInt();
0418 New = new (Context) ArgumentWithTypeTagAttr(Context, Info, argumentKind, argumentIdx, typeTagIdx, isPointer);
0419 cast<InheritableAttr>(New)->setInherited(isInherited);
0420 New->setImplicit(isImplicit);
0421 New->setPackExpansion(isPackExpansion);
0422 break;
0423 }
0424 case attr::ArmAgnostic: {
0425 bool isImplicit = Record.readInt();
0426 bool isPackExpansion = Record.readInt();
0427 unsigned agnosticArgsSize = Record.readInt();
0428 SmallVector<StringRef, 4> agnosticArgs;
0429 agnosticArgs.reserve(agnosticArgsSize);
0430 SmallVector<std::string, 4> agnosticArgsStorage;
0431 agnosticArgsStorage.reserve(agnosticArgsSize);
0432 for (unsigned i = 0; i != agnosticArgsSize; ++i)
0433 agnosticArgsStorage.push_back(Record.readString());
0434 for (unsigned i = 0; i != agnosticArgsSize; ++i)
0435 agnosticArgs.push_back(agnosticArgsStorage[i]);
0436 New = new (Context) ArmAgnosticAttr(Context, Info, agnosticArgs.data(), agnosticArgsSize);
0437 New->setImplicit(isImplicit);
0438 New->setPackExpansion(isPackExpansion);
0439 break;
0440 }
0441 case attr::ArmBuiltinAlias: {
0442 bool isInherited = Record.readInt();
0443 bool isImplicit = Record.readInt();
0444 bool isPackExpansion = Record.readInt();
0445 IdentifierInfo * builtinName = Record.readIdentifier();
0446 New = new (Context) ArmBuiltinAliasAttr(Context, Info, builtinName);
0447 cast<InheritableAttr>(New)->setInherited(isInherited);
0448 New->setImplicit(isImplicit);
0449 New->setPackExpansion(isPackExpansion);
0450 break;
0451 }
0452 case attr::ArmIn: {
0453 bool isImplicit = Record.readInt();
0454 bool isPackExpansion = Record.readInt();
0455 unsigned inArgsSize = Record.readInt();
0456 SmallVector<StringRef, 4> inArgs;
0457 inArgs.reserve(inArgsSize);
0458 SmallVector<std::string, 4> inArgsStorage;
0459 inArgsStorage.reserve(inArgsSize);
0460 for (unsigned i = 0; i != inArgsSize; ++i)
0461 inArgsStorage.push_back(Record.readString());
0462 for (unsigned i = 0; i != inArgsSize; ++i)
0463 inArgs.push_back(inArgsStorage[i]);
0464 New = new (Context) ArmInAttr(Context, Info, inArgs.data(), inArgsSize);
0465 New->setImplicit(isImplicit);
0466 New->setPackExpansion(isPackExpansion);
0467 break;
0468 }
0469 case attr::ArmInOut: {
0470 bool isImplicit = Record.readInt();
0471 bool isPackExpansion = Record.readInt();
0472 unsigned inOutArgsSize = Record.readInt();
0473 SmallVector<StringRef, 4> inOutArgs;
0474 inOutArgs.reserve(inOutArgsSize);
0475 SmallVector<std::string, 4> inOutArgsStorage;
0476 inOutArgsStorage.reserve(inOutArgsSize);
0477 for (unsigned i = 0; i != inOutArgsSize; ++i)
0478 inOutArgsStorage.push_back(Record.readString());
0479 for (unsigned i = 0; i != inOutArgsSize; ++i)
0480 inOutArgs.push_back(inOutArgsStorage[i]);
0481 New = new (Context) ArmInOutAttr(Context, Info, inOutArgs.data(), inOutArgsSize);
0482 New->setImplicit(isImplicit);
0483 New->setPackExpansion(isPackExpansion);
0484 break;
0485 }
0486 case attr::ArmLocallyStreaming: {
0487 bool isInherited = Record.readInt();
0488 bool isImplicit = Record.readInt();
0489 bool isPackExpansion = Record.readInt();
0490 New = new (Context) ArmLocallyStreamingAttr(Context, Info);
0491 cast<InheritableAttr>(New)->setInherited(isInherited);
0492 New->setImplicit(isImplicit);
0493 New->setPackExpansion(isPackExpansion);
0494 break;
0495 }
0496 case attr::ArmMveStrictPolymorphism: {
0497 bool isImplicit = Record.readInt();
0498 bool isPackExpansion = Record.readInt();
0499 New = new (Context) ArmMveStrictPolymorphismAttr(Context, Info);
0500 New->setImplicit(isImplicit);
0501 New->setPackExpansion(isPackExpansion);
0502 break;
0503 }
0504 case attr::ArmNew: {
0505 bool isInherited = Record.readInt();
0506 bool isImplicit = Record.readInt();
0507 bool isPackExpansion = Record.readInt();
0508 unsigned newArgsSize = Record.readInt();
0509 SmallVector<StringRef, 4> newArgs;
0510 newArgs.reserve(newArgsSize);
0511 SmallVector<std::string, 4> newArgsStorage;
0512 newArgsStorage.reserve(newArgsSize);
0513 for (unsigned i = 0; i != newArgsSize; ++i)
0514 newArgsStorage.push_back(Record.readString());
0515 for (unsigned i = 0; i != newArgsSize; ++i)
0516 newArgs.push_back(newArgsStorage[i]);
0517 New = new (Context) ArmNewAttr(Context, Info, newArgs.data(), newArgsSize);
0518 cast<InheritableAttr>(New)->setInherited(isInherited);
0519 New->setImplicit(isImplicit);
0520 New->setPackExpansion(isPackExpansion);
0521 break;
0522 }
0523 case attr::ArmOut: {
0524 bool isImplicit = Record.readInt();
0525 bool isPackExpansion = Record.readInt();
0526 unsigned outArgsSize = Record.readInt();
0527 SmallVector<StringRef, 4> outArgs;
0528 outArgs.reserve(outArgsSize);
0529 SmallVector<std::string, 4> outArgsStorage;
0530 outArgsStorage.reserve(outArgsSize);
0531 for (unsigned i = 0; i != outArgsSize; ++i)
0532 outArgsStorage.push_back(Record.readString());
0533 for (unsigned i = 0; i != outArgsSize; ++i)
0534 outArgs.push_back(outArgsStorage[i]);
0535 New = new (Context) ArmOutAttr(Context, Info, outArgs.data(), outArgsSize);
0536 New->setImplicit(isImplicit);
0537 New->setPackExpansion(isPackExpansion);
0538 break;
0539 }
0540 case attr::ArmPreserves: {
0541 bool isImplicit = Record.readInt();
0542 bool isPackExpansion = Record.readInt();
0543 unsigned preserveArgsSize = Record.readInt();
0544 SmallVector<StringRef, 4> preserveArgs;
0545 preserveArgs.reserve(preserveArgsSize);
0546 SmallVector<std::string, 4> preserveArgsStorage;
0547 preserveArgsStorage.reserve(preserveArgsSize);
0548 for (unsigned i = 0; i != preserveArgsSize; ++i)
0549 preserveArgsStorage.push_back(Record.readString());
0550 for (unsigned i = 0; i != preserveArgsSize; ++i)
0551 preserveArgs.push_back(preserveArgsStorage[i]);
0552 New = new (Context) ArmPreservesAttr(Context, Info, preserveArgs.data(), preserveArgsSize);
0553 New->setImplicit(isImplicit);
0554 New->setPackExpansion(isPackExpansion);
0555 break;
0556 }
0557 case attr::ArmStreaming: {
0558 bool isImplicit = Record.readInt();
0559 bool isPackExpansion = Record.readInt();
0560 New = new (Context) ArmStreamingAttr(Context, Info);
0561 New->setImplicit(isImplicit);
0562 New->setPackExpansion(isPackExpansion);
0563 break;
0564 }
0565 case attr::ArmStreamingCompatible: {
0566 bool isImplicit = Record.readInt();
0567 bool isPackExpansion = Record.readInt();
0568 New = new (Context) ArmStreamingCompatibleAttr(Context, Info);
0569 New->setImplicit(isImplicit);
0570 New->setPackExpansion(isPackExpansion);
0571 break;
0572 }
0573 case attr::Artificial: {
0574 bool isInherited = Record.readInt();
0575 bool isImplicit = Record.readInt();
0576 bool isPackExpansion = Record.readInt();
0577 New = new (Context) ArtificialAttr(Context, Info);
0578 cast<InheritableAttr>(New)->setInherited(isInherited);
0579 New->setImplicit(isImplicit);
0580 New->setPackExpansion(isPackExpansion);
0581 break;
0582 }
0583 case attr::AsmLabel: {
0584 bool isInherited = Record.readInt();
0585 bool isImplicit = Record.readInt();
0586 bool isPackExpansion = Record.readInt();
0587 std::string label= Record.readString();
0588 bool isLiteralLabel = Record.readInt();
0589 New = new (Context) AsmLabelAttr(Context, Info, label, isLiteralLabel);
0590 cast<InheritableAttr>(New)->setInherited(isInherited);
0591 New->setImplicit(isImplicit);
0592 New->setPackExpansion(isPackExpansion);
0593 break;
0594 }
0595 case attr::AssertCapability: {
0596 bool isInherited = Record.readInt();
0597 bool isImplicit = Record.readInt();
0598 bool isPackExpansion = Record.readInt();
0599 unsigned argsSize = Record.readInt();
0600 SmallVector<Expr *, 4> args;
0601 args.reserve(argsSize);
0602 for (unsigned i = 0; i != argsSize; ++i)
0603 args.push_back(Record.readExpr());
0604 New = new (Context) AssertCapabilityAttr(Context, Info, args.data(), argsSize);
0605 cast<InheritableAttr>(New)->setInherited(isInherited);
0606 New->setImplicit(isImplicit);
0607 New->setPackExpansion(isPackExpansion);
0608 break;
0609 }
0610 case attr::AssertExclusiveLock: {
0611 bool isInherited = Record.readInt();
0612 bool isImplicit = Record.readInt();
0613 bool isPackExpansion = Record.readInt();
0614 unsigned argsSize = Record.readInt();
0615 SmallVector<Expr *, 4> args;
0616 args.reserve(argsSize);
0617 for (unsigned i = 0; i != argsSize; ++i)
0618 args.push_back(Record.readExpr());
0619 New = new (Context) AssertExclusiveLockAttr(Context, Info, args.data(), argsSize);
0620 cast<InheritableAttr>(New)->setInherited(isInherited);
0621 New->setImplicit(isImplicit);
0622 New->setPackExpansion(isPackExpansion);
0623 break;
0624 }
0625 case attr::AssertSharedLock: {
0626 bool isInherited = Record.readInt();
0627 bool isImplicit = Record.readInt();
0628 bool isPackExpansion = Record.readInt();
0629 unsigned argsSize = Record.readInt();
0630 SmallVector<Expr *, 4> args;
0631 args.reserve(argsSize);
0632 for (unsigned i = 0; i != argsSize; ++i)
0633 args.push_back(Record.readExpr());
0634 New = new (Context) AssertSharedLockAttr(Context, Info, args.data(), argsSize);
0635 cast<InheritableAttr>(New)->setInherited(isInherited);
0636 New->setImplicit(isImplicit);
0637 New->setPackExpansion(isPackExpansion);
0638 break;
0639 }
0640 case attr::AssumeAligned: {
0641 bool isInherited = Record.readInt();
0642 bool isImplicit = Record.readInt();
0643 bool isPackExpansion = Record.readInt();
0644 Expr * alignment = Record.readExpr();
0645 Expr * offset = Record.readExpr();
0646 New = new (Context) AssumeAlignedAttr(Context, Info, alignment, offset);
0647 cast<InheritableAttr>(New)->setInherited(isInherited);
0648 New->setImplicit(isImplicit);
0649 New->setPackExpansion(isPackExpansion);
0650 break;
0651 }
0652 case attr::Availability: {
0653 bool isInherited = Record.readInt();
0654 bool isImplicit = Record.readInt();
0655 bool isPackExpansion = Record.readInt();
0656 IdentifierInfo * platform = Record.readIdentifier();
0657 VersionTuple introduced= Record.readVersionTuple();
0658 VersionTuple deprecated= Record.readVersionTuple();
0659 VersionTuple obsoleted= Record.readVersionTuple();
0660 bool unavailable = Record.readInt();
0661 std::string message= Record.readString();
0662 bool strict = Record.readInt();
0663 std::string replacement= Record.readString();
0664 int priority = Record.readInt();
0665 IdentifierInfo * environment = Record.readIdentifier();
0666 New = new (Context) AvailabilityAttr(Context, Info, platform, introduced, deprecated, obsoleted, unavailable, message, strict, replacement, priority, environment);
0667 cast<InheritableAttr>(New)->setInherited(isInherited);
0668 New->setImplicit(isImplicit);
0669 New->setPackExpansion(isPackExpansion);
0670 break;
0671 }
0672 case attr::AvailableOnlyInDefaultEvalMethod: {
0673 bool isInherited = Record.readInt();
0674 bool isImplicit = Record.readInt();
0675 bool isPackExpansion = Record.readInt();
0676 New = new (Context) AvailableOnlyInDefaultEvalMethodAttr(Context, Info);
0677 cast<InheritableAttr>(New)->setInherited(isInherited);
0678 New->setImplicit(isImplicit);
0679 New->setPackExpansion(isPackExpansion);
0680 break;
0681 }
0682 case attr::BPFFastCall: {
0683 bool isInherited = Record.readInt();
0684 bool isImplicit = Record.readInt();
0685 bool isPackExpansion = Record.readInt();
0686 New = new (Context) BPFFastCallAttr(Context, Info);
0687 cast<InheritableAttr>(New)->setInherited(isInherited);
0688 New->setImplicit(isImplicit);
0689 New->setPackExpansion(isPackExpansion);
0690 break;
0691 }
0692 case attr::BPFPreserveAccessIndex: {
0693 bool isInherited = Record.readInt();
0694 bool isImplicit = Record.readInt();
0695 bool isPackExpansion = Record.readInt();
0696 New = new (Context) BPFPreserveAccessIndexAttr(Context, Info);
0697 cast<InheritableAttr>(New)->setInherited(isInherited);
0698 New->setImplicit(isImplicit);
0699 New->setPackExpansion(isPackExpansion);
0700 break;
0701 }
0702 case attr::BPFPreserveStaticOffset: {
0703 bool isInherited = Record.readInt();
0704 bool isImplicit = Record.readInt();
0705 bool isPackExpansion = Record.readInt();
0706 New = new (Context) BPFPreserveStaticOffsetAttr(Context, Info);
0707 cast<InheritableAttr>(New)->setInherited(isInherited);
0708 New->setImplicit(isImplicit);
0709 New->setPackExpansion(isPackExpansion);
0710 break;
0711 }
0712 case attr::BTFDeclTag: {
0713 bool isInherited = Record.readInt();
0714 bool isImplicit = Record.readInt();
0715 bool isPackExpansion = Record.readInt();
0716 std::string bTFDeclTag= Record.readString();
0717 New = new (Context) BTFDeclTagAttr(Context, Info, bTFDeclTag);
0718 cast<InheritableAttr>(New)->setInherited(isInherited);
0719 New->setImplicit(isImplicit);
0720 New->setPackExpansion(isPackExpansion);
0721 break;
0722 }
0723 case attr::BTFTypeTag: {
0724 bool isImplicit = Record.readInt();
0725 bool isPackExpansion = Record.readInt();
0726 std::string bTFTypeTag= Record.readString();
0727 New = new (Context) BTFTypeTagAttr(Context, Info, bTFTypeTag);
0728 New->setImplicit(isImplicit);
0729 New->setPackExpansion(isPackExpansion);
0730 break;
0731 }
0732 case attr::Blocking: {
0733 bool isImplicit = Record.readInt();
0734 bool isPackExpansion = Record.readInt();
0735 New = new (Context) BlockingAttr(Context, Info);
0736 New->setImplicit(isImplicit);
0737 New->setPackExpansion(isPackExpansion);
0738 break;
0739 }
0740 case attr::Blocks: {
0741 bool isInherited = Record.readInt();
0742 bool isImplicit = Record.readInt();
0743 bool isPackExpansion = Record.readInt();
0744 BlocksAttr::BlockType type(static_cast<BlocksAttr::BlockType>(Record.readInt()));
0745 New = new (Context) BlocksAttr(Context, Info, type);
0746 cast<InheritableAttr>(New)->setInherited(isInherited);
0747 New->setImplicit(isImplicit);
0748 New->setPackExpansion(isPackExpansion);
0749 break;
0750 }
0751 case attr::Builtin: {
0752 bool isInherited = Record.readInt();
0753 bool isImplicit = Record.readInt();
0754 bool isPackExpansion = Record.readInt();
0755 unsigned iD = Record.readInt();
0756 New = new (Context) BuiltinAttr(Context, Info, iD);
0757 cast<InheritableAttr>(New)->setInherited(isInherited);
0758 New->setImplicit(isImplicit);
0759 New->setPackExpansion(isPackExpansion);
0760 break;
0761 }
0762 case attr::BuiltinAlias: {
0763 bool isImplicit = Record.readInt();
0764 bool isPackExpansion = Record.readInt();
0765 IdentifierInfo * builtinName = Record.readIdentifier();
0766 New = new (Context) BuiltinAliasAttr(Context, Info, builtinName);
0767 New->setImplicit(isImplicit);
0768 New->setPackExpansion(isPackExpansion);
0769 break;
0770 }
0771 case attr::C11NoReturn: {
0772 bool isInherited = Record.readInt();
0773 bool isImplicit = Record.readInt();
0774 bool isPackExpansion = Record.readInt();
0775 New = new (Context) C11NoReturnAttr(Context, Info);
0776 cast<InheritableAttr>(New)->setInherited(isInherited);
0777 New->setImplicit(isImplicit);
0778 New->setPackExpansion(isPackExpansion);
0779 break;
0780 }
0781 case attr::CDecl: {
0782 bool isInherited = Record.readInt();
0783 bool isImplicit = Record.readInt();
0784 bool isPackExpansion = Record.readInt();
0785 New = new (Context) CDeclAttr(Context, Info);
0786 cast<InheritableAttr>(New)->setInherited(isInherited);
0787 New->setImplicit(isImplicit);
0788 New->setPackExpansion(isPackExpansion);
0789 break;
0790 }
0791 case attr::CFAuditedTransfer: {
0792 bool isInherited = Record.readInt();
0793 bool isImplicit = Record.readInt();
0794 bool isPackExpansion = Record.readInt();
0795 New = new (Context) CFAuditedTransferAttr(Context, Info);
0796 cast<InheritableAttr>(New)->setInherited(isInherited);
0797 New->setImplicit(isImplicit);
0798 New->setPackExpansion(isPackExpansion);
0799 break;
0800 }
0801 case attr::CFConsumed: {
0802 bool isInherited = Record.readInt();
0803 bool isImplicit = Record.readInt();
0804 bool isPackExpansion = Record.readInt();
0805 New = new (Context) CFConsumedAttr(Context, Info);
0806 cast<InheritableAttr>(New)->setInherited(isInherited);
0807 New->setImplicit(isImplicit);
0808 New->setPackExpansion(isPackExpansion);
0809 break;
0810 }
0811 case attr::CFGuard: {
0812 bool isInherited = Record.readInt();
0813 bool isImplicit = Record.readInt();
0814 bool isPackExpansion = Record.readInt();
0815 CFGuardAttr::GuardArg guard(static_cast<CFGuardAttr::GuardArg>(Record.readInt()));
0816 New = new (Context) CFGuardAttr(Context, Info, guard);
0817 cast<InheritableAttr>(New)->setInherited(isInherited);
0818 New->setImplicit(isImplicit);
0819 New->setPackExpansion(isPackExpansion);
0820 break;
0821 }
0822 case attr::CFICanonicalJumpTable: {
0823 bool isInherited = Record.readInt();
0824 bool isImplicit = Record.readInt();
0825 bool isPackExpansion = Record.readInt();
0826 New = new (Context) CFICanonicalJumpTableAttr(Context, Info);
0827 cast<InheritableAttr>(New)->setInherited(isInherited);
0828 New->setImplicit(isImplicit);
0829 New->setPackExpansion(isPackExpansion);
0830 break;
0831 }
0832 case attr::CFReturnsNotRetained: {
0833 bool isInherited = Record.readInt();
0834 bool isImplicit = Record.readInt();
0835 bool isPackExpansion = Record.readInt();
0836 New = new (Context) CFReturnsNotRetainedAttr(Context, Info);
0837 cast<InheritableAttr>(New)->setInherited(isInherited);
0838 New->setImplicit(isImplicit);
0839 New->setPackExpansion(isPackExpansion);
0840 break;
0841 }
0842 case attr::CFReturnsRetained: {
0843 bool isInherited = Record.readInt();
0844 bool isImplicit = Record.readInt();
0845 bool isPackExpansion = Record.readInt();
0846 New = new (Context) CFReturnsRetainedAttr(Context, Info);
0847 cast<InheritableAttr>(New)->setInherited(isInherited);
0848 New->setImplicit(isImplicit);
0849 New->setPackExpansion(isPackExpansion);
0850 break;
0851 }
0852 case attr::CFUnknownTransfer: {
0853 bool isInherited = Record.readInt();
0854 bool isImplicit = Record.readInt();
0855 bool isPackExpansion = Record.readInt();
0856 New = new (Context) CFUnknownTransferAttr(Context, Info);
0857 cast<InheritableAttr>(New)->setInherited(isInherited);
0858 New->setImplicit(isImplicit);
0859 New->setPackExpansion(isPackExpansion);
0860 break;
0861 }
0862 case attr::CPUDispatch: {
0863 bool isInherited = Record.readInt();
0864 bool isImplicit = Record.readInt();
0865 bool isPackExpansion = Record.readInt();
0866 unsigned cpusSize = Record.readInt();
0867 SmallVector<IdentifierInfo *, 4> cpus;
0868 cpus.reserve(cpusSize);
0869 for (unsigned i = 0; i != cpusSize; ++i)
0870 cpus.push_back(Record.readIdentifier());
0871 New = new (Context) CPUDispatchAttr(Context, Info, cpus.data(), cpusSize);
0872 cast<InheritableAttr>(New)->setInherited(isInherited);
0873 New->setImplicit(isImplicit);
0874 New->setPackExpansion(isPackExpansion);
0875 break;
0876 }
0877 case attr::CPUSpecific: {
0878 bool isInherited = Record.readInt();
0879 bool isImplicit = Record.readInt();
0880 bool isPackExpansion = Record.readInt();
0881 unsigned cpusSize = Record.readInt();
0882 SmallVector<IdentifierInfo *, 4> cpus;
0883 cpus.reserve(cpusSize);
0884 for (unsigned i = 0; i != cpusSize; ++i)
0885 cpus.push_back(Record.readIdentifier());
0886 New = new (Context) CPUSpecificAttr(Context, Info, cpus.data(), cpusSize);
0887 cast<InheritableAttr>(New)->setInherited(isInherited);
0888 New->setImplicit(isImplicit);
0889 New->setPackExpansion(isPackExpansion);
0890 break;
0891 }
0892 case attr::CUDAConstant: {
0893 bool isInherited = Record.readInt();
0894 bool isImplicit = Record.readInt();
0895 bool isPackExpansion = Record.readInt();
0896 New = new (Context) CUDAConstantAttr(Context, Info);
0897 cast<InheritableAttr>(New)->setInherited(isInherited);
0898 New->setImplicit(isImplicit);
0899 New->setPackExpansion(isPackExpansion);
0900 break;
0901 }
0902 case attr::CUDADevice: {
0903 bool isInherited = Record.readInt();
0904 bool isImplicit = Record.readInt();
0905 bool isPackExpansion = Record.readInt();
0906 New = new (Context) CUDADeviceAttr(Context, Info);
0907 cast<InheritableAttr>(New)->setInherited(isInherited);
0908 New->setImplicit(isImplicit);
0909 New->setPackExpansion(isPackExpansion);
0910 break;
0911 }
0912 case attr::CUDADeviceBuiltinSurfaceType: {
0913 bool isInherited = Record.readInt();
0914 bool isImplicit = Record.readInt();
0915 bool isPackExpansion = Record.readInt();
0916 New = new (Context) CUDADeviceBuiltinSurfaceTypeAttr(Context, Info);
0917 cast<InheritableAttr>(New)->setInherited(isInherited);
0918 New->setImplicit(isImplicit);
0919 New->setPackExpansion(isPackExpansion);
0920 break;
0921 }
0922 case attr::CUDADeviceBuiltinTextureType: {
0923 bool isInherited = Record.readInt();
0924 bool isImplicit = Record.readInt();
0925 bool isPackExpansion = Record.readInt();
0926 New = new (Context) CUDADeviceBuiltinTextureTypeAttr(Context, Info);
0927 cast<InheritableAttr>(New)->setInherited(isInherited);
0928 New->setImplicit(isImplicit);
0929 New->setPackExpansion(isPackExpansion);
0930 break;
0931 }
0932 case attr::CUDAGlobal: {
0933 bool isInherited = Record.readInt();
0934 bool isImplicit = Record.readInt();
0935 bool isPackExpansion = Record.readInt();
0936 New = new (Context) CUDAGlobalAttr(Context, Info);
0937 cast<InheritableAttr>(New)->setInherited(isInherited);
0938 New->setImplicit(isImplicit);
0939 New->setPackExpansion(isPackExpansion);
0940 break;
0941 }
0942 case attr::CUDAGridConstant: {
0943 bool isInherited = Record.readInt();
0944 bool isImplicit = Record.readInt();
0945 bool isPackExpansion = Record.readInt();
0946 New = new (Context) CUDAGridConstantAttr(Context, Info);
0947 cast<InheritableAttr>(New)->setInherited(isInherited);
0948 New->setImplicit(isImplicit);
0949 New->setPackExpansion(isPackExpansion);
0950 break;
0951 }
0952 case attr::CUDAHost: {
0953 bool isInherited = Record.readInt();
0954 bool isImplicit = Record.readInt();
0955 bool isPackExpansion = Record.readInt();
0956 New = new (Context) CUDAHostAttr(Context, Info);
0957 cast<InheritableAttr>(New)->setInherited(isInherited);
0958 New->setImplicit(isImplicit);
0959 New->setPackExpansion(isPackExpansion);
0960 break;
0961 }
0962 case attr::CUDAInvalidTarget: {
0963 bool isInherited = Record.readInt();
0964 bool isImplicit = Record.readInt();
0965 bool isPackExpansion = Record.readInt();
0966 New = new (Context) CUDAInvalidTargetAttr(Context, Info);
0967 cast<InheritableAttr>(New)->setInherited(isInherited);
0968 New->setImplicit(isImplicit);
0969 New->setPackExpansion(isPackExpansion);
0970 break;
0971 }
0972 case attr::CUDALaunchBounds: {
0973 bool isInherited = Record.readInt();
0974 bool isImplicit = Record.readInt();
0975 bool isPackExpansion = Record.readInt();
0976 Expr * maxThreads = Record.readExpr();
0977 Expr * minBlocks = Record.readExpr();
0978 Expr * maxBlocks = Record.readExpr();
0979 New = new (Context) CUDALaunchBoundsAttr(Context, Info, maxThreads, minBlocks, maxBlocks);
0980 cast<InheritableAttr>(New)->setInherited(isInherited);
0981 New->setImplicit(isImplicit);
0982 New->setPackExpansion(isPackExpansion);
0983 break;
0984 }
0985 case attr::CUDAShared: {
0986 bool isInherited = Record.readInt();
0987 bool isImplicit = Record.readInt();
0988 bool isPackExpansion = Record.readInt();
0989 New = new (Context) CUDASharedAttr(Context, Info);
0990 cast<InheritableAttr>(New)->setInherited(isInherited);
0991 New->setImplicit(isImplicit);
0992 New->setPackExpansion(isPackExpansion);
0993 break;
0994 }
0995 case attr::CXX11NoReturn: {
0996 bool isInherited = Record.readInt();
0997 bool isImplicit = Record.readInt();
0998 bool isPackExpansion = Record.readInt();
0999 New = new (Context) CXX11NoReturnAttr(Context, Info);
1000 cast<InheritableAttr>(New)->setInherited(isInherited);
1001 New->setImplicit(isImplicit);
1002 New->setPackExpansion(isPackExpansion);
1003 break;
1004 }
1005 case attr::CXXAssume: {
1006 bool isImplicit = Record.readInt();
1007 bool isPackExpansion = Record.readInt();
1008 Expr * assumption = Record.readExpr();
1009 New = new (Context) CXXAssumeAttr(Context, Info, assumption);
1010 New->setImplicit(isImplicit);
1011 New->setPackExpansion(isPackExpansion);
1012 break;
1013 }
1014 case attr::CallableWhen: {
1015 bool isInherited = Record.readInt();
1016 bool isImplicit = Record.readInt();
1017 bool isPackExpansion = Record.readInt();
1018 unsigned callableStatesSize = Record.readInt();
1019 SmallVector<CallableWhenAttr::ConsumedState, 4> callableStates;
1020 callableStates.reserve(callableStatesSize);
1021 for (unsigned i = callableStatesSize; i; --i)
1022 callableStates.push_back(static_cast<CallableWhenAttr::ConsumedState>(Record.readInt()));
1023 New = new (Context) CallableWhenAttr(Context, Info, callableStates.data(), callableStatesSize);
1024 cast<InheritableAttr>(New)->setInherited(isInherited);
1025 New->setImplicit(isImplicit);
1026 New->setPackExpansion(isPackExpansion);
1027 break;
1028 }
1029 case attr::Callback: {
1030 bool isInherited = Record.readInt();
1031 bool isImplicit = Record.readInt();
1032 bool isPackExpansion = Record.readInt();
1033 unsigned encodingSize = Record.readInt();
1034 SmallVector<int, 4> encoding;
1035 encoding.reserve(encodingSize);
1036 for (unsigned i = 0; i != encodingSize; ++i)
1037 encoding.push_back(Record.readInt());
1038 New = new (Context) CallbackAttr(Context, Info, encoding.data(), encodingSize);
1039 cast<InheritableAttr>(New)->setInherited(isInherited);
1040 New->setImplicit(isImplicit);
1041 New->setPackExpansion(isPackExpansion);
1042 break;
1043 }
1044 case attr::CalledOnce: {
1045 bool isImplicit = Record.readInt();
1046 bool isPackExpansion = Record.readInt();
1047 New = new (Context) CalledOnceAttr(Context, Info);
1048 New->setImplicit(isImplicit);
1049 New->setPackExpansion(isPackExpansion);
1050 break;
1051 }
1052 case attr::Capability: {
1053 bool isInherited = Record.readInt();
1054 bool isImplicit = Record.readInt();
1055 bool isPackExpansion = Record.readInt();
1056 std::string name= Record.readString();
1057 New = new (Context) CapabilityAttr(Context, Info, name);
1058 cast<InheritableAttr>(New)->setInherited(isInherited);
1059 New->setImplicit(isImplicit);
1060 New->setPackExpansion(isPackExpansion);
1061 break;
1062 }
1063 case attr::CapturedRecord: {
1064 bool isInherited = Record.readInt();
1065 bool isImplicit = Record.readInt();
1066 bool isPackExpansion = Record.readInt();
1067 New = new (Context) CapturedRecordAttr(Context, Info);
1068 cast<InheritableAttr>(New)->setInherited(isInherited);
1069 New->setImplicit(isImplicit);
1070 New->setPackExpansion(isPackExpansion);
1071 break;
1072 }
1073 case attr::CarriesDependency: {
1074 bool isInherited = Record.readInt();
1075 bool isImplicit = Record.readInt();
1076 bool isPackExpansion = Record.readInt();
1077 New = new (Context) CarriesDependencyAttr(Context, Info);
1078 cast<InheritableAttr>(New)->setInherited(isInherited);
1079 New->setImplicit(isImplicit);
1080 New->setPackExpansion(isPackExpansion);
1081 break;
1082 }
1083 case attr::Cleanup: {
1084 bool isInherited = Record.readInt();
1085 bool isImplicit = Record.readInt();
1086 bool isPackExpansion = Record.readInt();
1087 FunctionDecl * functionDecl = Record.readDeclAs<FunctionDecl >();
1088 New = new (Context) CleanupAttr(Context, Info, functionDecl);
1089 cast<InheritableAttr>(New)->setInherited(isInherited);
1090 New->setImplicit(isImplicit);
1091 New->setPackExpansion(isPackExpansion);
1092 break;
1093 }
1094 case attr::ClspvLibclcBuiltin: {
1095 bool isInherited = Record.readInt();
1096 bool isImplicit = Record.readInt();
1097 bool isPackExpansion = Record.readInt();
1098 New = new (Context) ClspvLibclcBuiltinAttr(Context, Info);
1099 cast<InheritableAttr>(New)->setInherited(isInherited);
1100 New->setImplicit(isImplicit);
1101 New->setPackExpansion(isPackExpansion);
1102 break;
1103 }
1104 case attr::CmseNSCall: {
1105 bool isImplicit = Record.readInt();
1106 bool isPackExpansion = Record.readInt();
1107 New = new (Context) CmseNSCallAttr(Context, Info);
1108 New->setImplicit(isImplicit);
1109 New->setPackExpansion(isPackExpansion);
1110 break;
1111 }
1112 case attr::CmseNSEntry: {
1113 bool isInherited = Record.readInt();
1114 bool isImplicit = Record.readInt();
1115 bool isPackExpansion = Record.readInt();
1116 New = new (Context) CmseNSEntryAttr(Context, Info);
1117 cast<InheritableAttr>(New)->setInherited(isInherited);
1118 New->setImplicit(isImplicit);
1119 New->setPackExpansion(isPackExpansion);
1120 break;
1121 }
1122 case attr::CodeAlign: {
1123 bool isImplicit = Record.readInt();
1124 bool isPackExpansion = Record.readInt();
1125 Expr * alignment = Record.readExpr();
1126 New = new (Context) CodeAlignAttr(Context, Info, alignment);
1127 New->setImplicit(isImplicit);
1128 New->setPackExpansion(isPackExpansion);
1129 break;
1130 }
1131 case attr::CodeModel: {
1132 bool isInherited = Record.readInt();
1133 bool isImplicit = Record.readInt();
1134 bool isPackExpansion = Record.readInt();
1135 llvm::CodeModel::Model model(static_cast<llvm::CodeModel::Model>(Record.readInt()));
1136 New = new (Context) CodeModelAttr(Context, Info, model);
1137 cast<InheritableAttr>(New)->setInherited(isInherited);
1138 New->setImplicit(isImplicit);
1139 New->setPackExpansion(isPackExpansion);
1140 break;
1141 }
1142 case attr::CodeSeg: {
1143 bool isInherited = Record.readInt();
1144 bool isImplicit = Record.readInt();
1145 bool isPackExpansion = Record.readInt();
1146 std::string name= Record.readString();
1147 New = new (Context) CodeSegAttr(Context, Info, name);
1148 cast<InheritableAttr>(New)->setInherited(isInherited);
1149 New->setImplicit(isImplicit);
1150 New->setPackExpansion(isPackExpansion);
1151 break;
1152 }
1153 case attr::Cold: {
1154 bool isInherited = Record.readInt();
1155 bool isImplicit = Record.readInt();
1156 bool isPackExpansion = Record.readInt();
1157 New = new (Context) ColdAttr(Context, Info);
1158 cast<InheritableAttr>(New)->setInherited(isInherited);
1159 New->setImplicit(isImplicit);
1160 New->setPackExpansion(isPackExpansion);
1161 break;
1162 }
1163 case attr::Common: {
1164 bool isInherited = Record.readInt();
1165 bool isImplicit = Record.readInt();
1166 bool isPackExpansion = Record.readInt();
1167 New = new (Context) CommonAttr(Context, Info);
1168 cast<InheritableAttr>(New)->setInherited(isInherited);
1169 New->setImplicit(isImplicit);
1170 New->setPackExpansion(isPackExpansion);
1171 break;
1172 }
1173 case attr::Const: {
1174 bool isInherited = Record.readInt();
1175 bool isImplicit = Record.readInt();
1176 bool isPackExpansion = Record.readInt();
1177 New = new (Context) ConstAttr(Context, Info);
1178 cast<InheritableAttr>(New)->setInherited(isInherited);
1179 New->setImplicit(isImplicit);
1180 New->setPackExpansion(isPackExpansion);
1181 break;
1182 }
1183 case attr::ConstInit: {
1184 bool isInherited = Record.readInt();
1185 bool isImplicit = Record.readInt();
1186 bool isPackExpansion = Record.readInt();
1187 New = new (Context) ConstInitAttr(Context, Info);
1188 cast<InheritableAttr>(New)->setInherited(isInherited);
1189 New->setImplicit(isImplicit);
1190 New->setPackExpansion(isPackExpansion);
1191 break;
1192 }
1193 case attr::Constructor: {
1194 bool isInherited = Record.readInt();
1195 bool isImplicit = Record.readInt();
1196 bool isPackExpansion = Record.readInt();
1197 int priority = Record.readInt();
1198 New = new (Context) ConstructorAttr(Context, Info, priority);
1199 cast<InheritableAttr>(New)->setInherited(isInherited);
1200 New->setImplicit(isImplicit);
1201 New->setPackExpansion(isPackExpansion);
1202 break;
1203 }
1204 case attr::Consumable: {
1205 bool isInherited = Record.readInt();
1206 bool isImplicit = Record.readInt();
1207 bool isPackExpansion = Record.readInt();
1208 ConsumableAttr::ConsumedState defaultState(static_cast<ConsumableAttr::ConsumedState>(Record.readInt()));
1209 New = new (Context) ConsumableAttr(Context, Info, defaultState);
1210 cast<InheritableAttr>(New)->setInherited(isInherited);
1211 New->setImplicit(isImplicit);
1212 New->setPackExpansion(isPackExpansion);
1213 break;
1214 }
1215 case attr::ConsumableAutoCast: {
1216 bool isInherited = Record.readInt();
1217 bool isImplicit = Record.readInt();
1218 bool isPackExpansion = Record.readInt();
1219 New = new (Context) ConsumableAutoCastAttr(Context, Info);
1220 cast<InheritableAttr>(New)->setInherited(isInherited);
1221 New->setImplicit(isImplicit);
1222 New->setPackExpansion(isPackExpansion);
1223 break;
1224 }
1225 case attr::ConsumableSetOnRead: {
1226 bool isInherited = Record.readInt();
1227 bool isImplicit = Record.readInt();
1228 bool isPackExpansion = Record.readInt();
1229 New = new (Context) ConsumableSetOnReadAttr(Context, Info);
1230 cast<InheritableAttr>(New)->setInherited(isInherited);
1231 New->setImplicit(isImplicit);
1232 New->setPackExpansion(isPackExpansion);
1233 break;
1234 }
1235 case attr::Convergent: {
1236 bool isInherited = Record.readInt();
1237 bool isImplicit = Record.readInt();
1238 bool isPackExpansion = Record.readInt();
1239 New = new (Context) ConvergentAttr(Context, Info);
1240 cast<InheritableAttr>(New)->setInherited(isInherited);
1241 New->setImplicit(isImplicit);
1242 New->setPackExpansion(isPackExpansion);
1243 break;
1244 }
1245 case attr::CoroAwaitElidable: {
1246 bool isInherited = Record.readInt();
1247 bool isImplicit = Record.readInt();
1248 bool isPackExpansion = Record.readInt();
1249 New = new (Context) CoroAwaitElidableAttr(Context, Info);
1250 cast<InheritableAttr>(New)->setInherited(isInherited);
1251 New->setImplicit(isImplicit);
1252 New->setPackExpansion(isPackExpansion);
1253 break;
1254 }
1255 case attr::CoroAwaitElidableArgument: {
1256 bool isInherited = Record.readInt();
1257 bool isImplicit = Record.readInt();
1258 bool isPackExpansion = Record.readInt();
1259 New = new (Context) CoroAwaitElidableArgumentAttr(Context, Info);
1260 cast<InheritableAttr>(New)->setInherited(isInherited);
1261 New->setImplicit(isImplicit);
1262 New->setPackExpansion(isPackExpansion);
1263 break;
1264 }
1265 case attr::CoroDisableLifetimeBound: {
1266 bool isInherited = Record.readInt();
1267 bool isImplicit = Record.readInt();
1268 bool isPackExpansion = Record.readInt();
1269 New = new (Context) CoroDisableLifetimeBoundAttr(Context, Info);
1270 cast<InheritableAttr>(New)->setInherited(isInherited);
1271 New->setImplicit(isImplicit);
1272 New->setPackExpansion(isPackExpansion);
1273 break;
1274 }
1275 case attr::CoroLifetimeBound: {
1276 bool isInherited = Record.readInt();
1277 bool isImplicit = Record.readInt();
1278 bool isPackExpansion = Record.readInt();
1279 New = new (Context) CoroLifetimeBoundAttr(Context, Info);
1280 cast<InheritableAttr>(New)->setInherited(isInherited);
1281 New->setImplicit(isImplicit);
1282 New->setPackExpansion(isPackExpansion);
1283 break;
1284 }
1285 case attr::CoroOnlyDestroyWhenComplete: {
1286 bool isInherited = Record.readInt();
1287 bool isImplicit = Record.readInt();
1288 bool isPackExpansion = Record.readInt();
1289 New = new (Context) CoroOnlyDestroyWhenCompleteAttr(Context, Info);
1290 cast<InheritableAttr>(New)->setInherited(isInherited);
1291 New->setImplicit(isImplicit);
1292 New->setPackExpansion(isPackExpansion);
1293 break;
1294 }
1295 case attr::CoroReturnType: {
1296 bool isInherited = Record.readInt();
1297 bool isImplicit = Record.readInt();
1298 bool isPackExpansion = Record.readInt();
1299 New = new (Context) CoroReturnTypeAttr(Context, Info);
1300 cast<InheritableAttr>(New)->setInherited(isInherited);
1301 New->setImplicit(isImplicit);
1302 New->setPackExpansion(isPackExpansion);
1303 break;
1304 }
1305 case attr::CoroWrapper: {
1306 bool isInherited = Record.readInt();
1307 bool isImplicit = Record.readInt();
1308 bool isPackExpansion = Record.readInt();
1309 New = new (Context) CoroWrapperAttr(Context, Info);
1310 cast<InheritableAttr>(New)->setInherited(isInherited);
1311 New->setImplicit(isImplicit);
1312 New->setPackExpansion(isPackExpansion);
1313 break;
1314 }
1315 case attr::CountedBy: {
1316 bool isInherited = Record.readInt();
1317 bool isImplicit = Record.readInt();
1318 bool isPackExpansion = Record.readInt();
1319 Expr * count = Record.readExpr();
1320 int nestedLevel = Record.readInt();
1321 New = new (Context) CountedByAttr(Context, Info, count, nestedLevel);
1322 cast<InheritableAttr>(New)->setInherited(isInherited);
1323 New->setImplicit(isImplicit);
1324 New->setPackExpansion(isPackExpansion);
1325 break;
1326 }
1327 case attr::CountedByOrNull: {
1328 bool isInherited = Record.readInt();
1329 bool isImplicit = Record.readInt();
1330 bool isPackExpansion = Record.readInt();
1331 Expr * count = Record.readExpr();
1332 int nestedLevel = Record.readInt();
1333 New = new (Context) CountedByOrNullAttr(Context, Info, count, nestedLevel);
1334 cast<InheritableAttr>(New)->setInherited(isInherited);
1335 New->setImplicit(isImplicit);
1336 New->setPackExpansion(isPackExpansion);
1337 break;
1338 }
1339 case attr::DLLExport: {
1340 bool isInherited = Record.readInt();
1341 bool isImplicit = Record.readInt();
1342 bool isPackExpansion = Record.readInt();
1343 New = new (Context) DLLExportAttr(Context, Info);
1344 cast<InheritableAttr>(New)->setInherited(isInherited);
1345 New->setImplicit(isImplicit);
1346 New->setPackExpansion(isPackExpansion);
1347 break;
1348 }
1349 case attr::DLLExportStaticLocal: {
1350 bool isInherited = Record.readInt();
1351 bool isImplicit = Record.readInt();
1352 bool isPackExpansion = Record.readInt();
1353 New = new (Context) DLLExportStaticLocalAttr(Context, Info);
1354 cast<InheritableAttr>(New)->setInherited(isInherited);
1355 New->setImplicit(isImplicit);
1356 New->setPackExpansion(isPackExpansion);
1357 break;
1358 }
1359 case attr::DLLImport: {
1360 bool isInherited = Record.readInt();
1361 bool isImplicit = Record.readInt();
1362 bool isPackExpansion = Record.readInt();
1363 New = new (Context) DLLImportAttr(Context, Info);
1364 cast<InheritableAttr>(New)->setInherited(isInherited);
1365 New->setImplicit(isImplicit);
1366 New->setPackExpansion(isPackExpansion);
1367 break;
1368 }
1369 case attr::DLLImportStaticLocal: {
1370 bool isInherited = Record.readInt();
1371 bool isImplicit = Record.readInt();
1372 bool isPackExpansion = Record.readInt();
1373 New = new (Context) DLLImportStaticLocalAttr(Context, Info);
1374 cast<InheritableAttr>(New)->setInherited(isInherited);
1375 New->setImplicit(isImplicit);
1376 New->setPackExpansion(isPackExpansion);
1377 break;
1378 }
1379 case attr::Deprecated: {
1380 bool isInherited = Record.readInt();
1381 bool isImplicit = Record.readInt();
1382 bool isPackExpansion = Record.readInt();
1383 std::string message= Record.readString();
1384 std::string replacement= Record.readString();
1385 New = new (Context) DeprecatedAttr(Context, Info, message, replacement);
1386 cast<InheritableAttr>(New)->setInherited(isInherited);
1387 New->setImplicit(isImplicit);
1388 New->setPackExpansion(isPackExpansion);
1389 break;
1390 }
1391 case attr::Destructor: {
1392 bool isInherited = Record.readInt();
1393 bool isImplicit = Record.readInt();
1394 bool isPackExpansion = Record.readInt();
1395 int priority = Record.readInt();
1396 New = new (Context) DestructorAttr(Context, Info, priority);
1397 cast<InheritableAttr>(New)->setInherited(isInherited);
1398 New->setImplicit(isImplicit);
1399 New->setPackExpansion(isPackExpansion);
1400 break;
1401 }
1402 case attr::DiagnoseAsBuiltin: {
1403 bool isInherited = Record.readInt();
1404 bool isImplicit = Record.readInt();
1405 bool isPackExpansion = Record.readInt();
1406 FunctionDecl * function = Record.readDeclAs<FunctionDecl >();
1407 unsigned argIndicesSize = Record.readInt();
1408 SmallVector<unsigned, 4> argIndices;
1409 argIndices.reserve(argIndicesSize);
1410 for (unsigned i = 0; i != argIndicesSize; ++i)
1411 argIndices.push_back(Record.readInt());
1412 New = new (Context) DiagnoseAsBuiltinAttr(Context, Info, function, argIndices.data(), argIndicesSize);
1413 cast<InheritableAttr>(New)->setInherited(isInherited);
1414 New->setImplicit(isImplicit);
1415 New->setPackExpansion(isPackExpansion);
1416 break;
1417 }
1418 case attr::DiagnoseIf: {
1419 bool isInherited = Record.readInt();
1420 bool isImplicit = Record.readInt();
1421 bool isPackExpansion = Record.readInt();
1422 Expr * cond = Record.readExpr();
1423 std::string message= Record.readString();
1424 DiagnoseIfAttr::DefaultSeverity defaultSeverity(static_cast<DiagnoseIfAttr::DefaultSeverity>(Record.readInt()));
1425 std::string warningGroup= Record.readString();
1426 bool argDependent = Record.readInt();
1427 NamedDecl * parent = Record.readDeclAs<NamedDecl >();
1428 New = new (Context) DiagnoseIfAttr(Context, Info, cond, message, defaultSeverity, warningGroup, argDependent, parent);
1429 cast<InheritableAttr>(New)->setInherited(isInherited);
1430 New->setImplicit(isImplicit);
1431 New->setPackExpansion(isPackExpansion);
1432 break;
1433 }
1434 case attr::DisableSanitizerInstrumentation: {
1435 bool isInherited = Record.readInt();
1436 bool isImplicit = Record.readInt();
1437 bool isPackExpansion = Record.readInt();
1438 New = new (Context) DisableSanitizerInstrumentationAttr(Context, Info);
1439 cast<InheritableAttr>(New)->setInherited(isInherited);
1440 New->setImplicit(isImplicit);
1441 New->setPackExpansion(isPackExpansion);
1442 break;
1443 }
1444 case attr::DisableTailCalls: {
1445 bool isInherited = Record.readInt();
1446 bool isImplicit = Record.readInt();
1447 bool isPackExpansion = Record.readInt();
1448 New = new (Context) DisableTailCallsAttr(Context, Info);
1449 cast<InheritableAttr>(New)->setInherited(isInherited);
1450 New->setImplicit(isImplicit);
1451 New->setPackExpansion(isPackExpansion);
1452 break;
1453 }
1454 case attr::EmptyBases: {
1455 bool isInherited = Record.readInt();
1456 bool isImplicit = Record.readInt();
1457 bool isPackExpansion = Record.readInt();
1458 New = new (Context) EmptyBasesAttr(Context, Info);
1459 cast<InheritableAttr>(New)->setInherited(isInherited);
1460 New->setImplicit(isImplicit);
1461 New->setPackExpansion(isPackExpansion);
1462 break;
1463 }
1464 case attr::EnableIf: {
1465 bool isInherited = Record.readInt();
1466 bool isImplicit = Record.readInt();
1467 bool isPackExpansion = Record.readInt();
1468 Expr * cond = Record.readExpr();
1469 std::string message= Record.readString();
1470 New = new (Context) EnableIfAttr(Context, Info, cond, message);
1471 cast<InheritableAttr>(New)->setInherited(isInherited);
1472 New->setImplicit(isImplicit);
1473 New->setPackExpansion(isPackExpansion);
1474 break;
1475 }
1476 case attr::EnforceTCB: {
1477 bool isInherited = Record.readInt();
1478 bool isImplicit = Record.readInt();
1479 bool isPackExpansion = Record.readInt();
1480 std::string tCBName= Record.readString();
1481 New = new (Context) EnforceTCBAttr(Context, Info, tCBName);
1482 cast<InheritableAttr>(New)->setInherited(isInherited);
1483 New->setImplicit(isImplicit);
1484 New->setPackExpansion(isPackExpansion);
1485 break;
1486 }
1487 case attr::EnforceTCBLeaf: {
1488 bool isInherited = Record.readInt();
1489 bool isImplicit = Record.readInt();
1490 bool isPackExpansion = Record.readInt();
1491 std::string tCBName= Record.readString();
1492 New = new (Context) EnforceTCBLeafAttr(Context, Info, tCBName);
1493 cast<InheritableAttr>(New)->setInherited(isInherited);
1494 New->setImplicit(isImplicit);
1495 New->setPackExpansion(isPackExpansion);
1496 break;
1497 }
1498 case attr::EnumExtensibility: {
1499 bool isInherited = Record.readInt();
1500 bool isImplicit = Record.readInt();
1501 bool isPackExpansion = Record.readInt();
1502 EnumExtensibilityAttr::Kind extensibility(static_cast<EnumExtensibilityAttr::Kind>(Record.readInt()));
1503 New = new (Context) EnumExtensibilityAttr(Context, Info, extensibility);
1504 cast<InheritableAttr>(New)->setInherited(isInherited);
1505 New->setImplicit(isImplicit);
1506 New->setPackExpansion(isPackExpansion);
1507 break;
1508 }
1509 case attr::Error: {
1510 bool isInherited = Record.readInt();
1511 bool isImplicit = Record.readInt();
1512 bool isPackExpansion = Record.readInt();
1513 std::string userDiagnostic= Record.readString();
1514 New = new (Context) ErrorAttr(Context, Info, userDiagnostic);
1515 cast<InheritableAttr>(New)->setInherited(isInherited);
1516 New->setImplicit(isImplicit);
1517 New->setPackExpansion(isPackExpansion);
1518 break;
1519 }
1520 case attr::ExcludeFromExplicitInstantiation: {
1521 bool isInherited = Record.readInt();
1522 bool isImplicit = Record.readInt();
1523 bool isPackExpansion = Record.readInt();
1524 New = new (Context) ExcludeFromExplicitInstantiationAttr(Context, Info);
1525 cast<InheritableAttr>(New)->setInherited(isInherited);
1526 New->setImplicit(isImplicit);
1527 New->setPackExpansion(isPackExpansion);
1528 break;
1529 }
1530 case attr::ExclusiveTrylockFunction: {
1531 bool isInherited = Record.readInt();
1532 bool isImplicit = Record.readInt();
1533 bool isPackExpansion = Record.readInt();
1534 Expr * successValue = Record.readExpr();
1535 unsigned argsSize = Record.readInt();
1536 SmallVector<Expr *, 4> args;
1537 args.reserve(argsSize);
1538 for (unsigned i = 0; i != argsSize; ++i)
1539 args.push_back(Record.readExpr());
1540 New = new (Context) ExclusiveTrylockFunctionAttr(Context, Info, successValue, args.data(), argsSize);
1541 cast<InheritableAttr>(New)->setInherited(isInherited);
1542 New->setImplicit(isImplicit);
1543 New->setPackExpansion(isPackExpansion);
1544 break;
1545 }
1546 case attr::ExplicitInit: {
1547 bool isInherited = Record.readInt();
1548 bool isImplicit = Record.readInt();
1549 bool isPackExpansion = Record.readInt();
1550 New = new (Context) ExplicitInitAttr(Context, Info);
1551 cast<InheritableAttr>(New)->setInherited(isInherited);
1552 New->setImplicit(isImplicit);
1553 New->setPackExpansion(isPackExpansion);
1554 break;
1555 }
1556 case attr::ExternalSourceSymbol: {
1557 bool isInherited = Record.readInt();
1558 bool isImplicit = Record.readInt();
1559 bool isPackExpansion = Record.readInt();
1560 std::string language= Record.readString();
1561 std::string definedIn= Record.readString();
1562 bool generatedDeclaration = Record.readInt();
1563 std::string uSR= Record.readString();
1564 New = new (Context) ExternalSourceSymbolAttr(Context, Info, language, definedIn, generatedDeclaration, uSR);
1565 cast<InheritableAttr>(New)->setInherited(isInherited);
1566 New->setImplicit(isImplicit);
1567 New->setPackExpansion(isPackExpansion);
1568 break;
1569 }
1570 case attr::FallThrough: {
1571 bool isImplicit = Record.readInt();
1572 bool isPackExpansion = Record.readInt();
1573 New = new (Context) FallThroughAttr(Context, Info);
1574 New->setImplicit(isImplicit);
1575 New->setPackExpansion(isPackExpansion);
1576 break;
1577 }
1578 case attr::FastCall: {
1579 bool isInherited = Record.readInt();
1580 bool isImplicit = Record.readInt();
1581 bool isPackExpansion = Record.readInt();
1582 New = new (Context) FastCallAttr(Context, Info);
1583 cast<InheritableAttr>(New)->setInherited(isInherited);
1584 New->setImplicit(isImplicit);
1585 New->setPackExpansion(isPackExpansion);
1586 break;
1587 }
1588 case attr::Final: {
1589 bool isInherited = Record.readInt();
1590 bool isImplicit = Record.readInt();
1591 bool isPackExpansion = Record.readInt();
1592 New = new (Context) FinalAttr(Context, Info);
1593 cast<InheritableAttr>(New)->setInherited(isInherited);
1594 New->setImplicit(isImplicit);
1595 New->setPackExpansion(isPackExpansion);
1596 break;
1597 }
1598 case attr::FlagEnum: {
1599 bool isInherited = Record.readInt();
1600 bool isImplicit = Record.readInt();
1601 bool isPackExpansion = Record.readInt();
1602 New = new (Context) FlagEnumAttr(Context, Info);
1603 cast<InheritableAttr>(New)->setInherited(isInherited);
1604 New->setImplicit(isImplicit);
1605 New->setPackExpansion(isPackExpansion);
1606 break;
1607 }
1608 case attr::Flatten: {
1609 bool isInherited = Record.readInt();
1610 bool isImplicit = Record.readInt();
1611 bool isPackExpansion = Record.readInt();
1612 New = new (Context) FlattenAttr(Context, Info);
1613 cast<InheritableAttr>(New)->setInherited(isInherited);
1614 New->setImplicit(isImplicit);
1615 New->setPackExpansion(isPackExpansion);
1616 break;
1617 }
1618 case attr::Format: {
1619 bool isInherited = Record.readInt();
1620 bool isImplicit = Record.readInt();
1621 bool isPackExpansion = Record.readInt();
1622 IdentifierInfo * type = Record.readIdentifier();
1623 int formatIdx = Record.readInt();
1624 int firstArg = Record.readInt();
1625 New = new (Context) FormatAttr(Context, Info, type, formatIdx, firstArg);
1626 cast<InheritableAttr>(New)->setInherited(isInherited);
1627 New->setImplicit(isImplicit);
1628 New->setPackExpansion(isPackExpansion);
1629 break;
1630 }
1631 case attr::FormatArg: {
1632 bool isInherited = Record.readInt();
1633 bool isImplicit = Record.readInt();
1634 bool isPackExpansion = Record.readInt();
1635 ParamIdx formatIdx = ParamIdx::deserialize(Record.readInt());
1636 New = new (Context) FormatArgAttr(Context, Info, formatIdx);
1637 cast<InheritableAttr>(New)->setInherited(isInherited);
1638 New->setImplicit(isImplicit);
1639 New->setPackExpansion(isPackExpansion);
1640 break;
1641 }
1642 case attr::FunctionReturnThunks: {
1643 bool isInherited = Record.readInt();
1644 bool isImplicit = Record.readInt();
1645 bool isPackExpansion = Record.readInt();
1646 FunctionReturnThunksAttr::Kind thunkType(static_cast<FunctionReturnThunksAttr::Kind>(Record.readInt()));
1647 New = new (Context) FunctionReturnThunksAttr(Context, Info, thunkType);
1648 cast<InheritableAttr>(New)->setInherited(isInherited);
1649 New->setImplicit(isImplicit);
1650 New->setPackExpansion(isPackExpansion);
1651 break;
1652 }
1653 case attr::GNUInline: {
1654 bool isInherited = Record.readInt();
1655 bool isImplicit = Record.readInt();
1656 bool isPackExpansion = Record.readInt();
1657 New = new (Context) GNUInlineAttr(Context, Info);
1658 cast<InheritableAttr>(New)->setInherited(isInherited);
1659 New->setImplicit(isImplicit);
1660 New->setPackExpansion(isPackExpansion);
1661 break;
1662 }
1663 case attr::GuardedBy: {
1664 bool isInherited = Record.readInt();
1665 bool isImplicit = Record.readInt();
1666 bool isPackExpansion = Record.readInt();
1667 Expr * arg = Record.readExpr();
1668 New = new (Context) GuardedByAttr(Context, Info, arg);
1669 cast<InheritableAttr>(New)->setInherited(isInherited);
1670 New->setImplicit(isImplicit);
1671 New->setPackExpansion(isPackExpansion);
1672 break;
1673 }
1674 case attr::GuardedVar: {
1675 bool isInherited = Record.readInt();
1676 bool isImplicit = Record.readInt();
1677 bool isPackExpansion = Record.readInt();
1678 New = new (Context) GuardedVarAttr(Context, Info);
1679 cast<InheritableAttr>(New)->setInherited(isInherited);
1680 New->setImplicit(isImplicit);
1681 New->setPackExpansion(isPackExpansion);
1682 break;
1683 }
1684 case attr::HIPManaged: {
1685 bool isInherited = Record.readInt();
1686 bool isImplicit = Record.readInt();
1687 bool isPackExpansion = Record.readInt();
1688 New = new (Context) HIPManagedAttr(Context, Info);
1689 cast<InheritableAttr>(New)->setInherited(isInherited);
1690 New->setImplicit(isImplicit);
1691 New->setPackExpansion(isPackExpansion);
1692 break;
1693 }
1694 case attr::HLSLContainedType: {
1695 bool isImplicit = Record.readInt();
1696 bool isPackExpansion = Record.readInt();
1697 TypeSourceInfo * type = Record.readTypeSourceInfo();
1698 New = new (Context) HLSLContainedTypeAttr(Context, Info, type);
1699 New->setImplicit(isImplicit);
1700 New->setPackExpansion(isPackExpansion);
1701 break;
1702 }
1703 case attr::HLSLControlFlowHint: {
1704 bool isImplicit = Record.readInt();
1705 bool isPackExpansion = Record.readInt();
1706 New = new (Context) HLSLControlFlowHintAttr(Context, Info);
1707 New->setImplicit(isImplicit);
1708 New->setPackExpansion(isPackExpansion);
1709 break;
1710 }
1711 case attr::HLSLGroupSharedAddressSpace: {
1712 bool isImplicit = Record.readInt();
1713 bool isPackExpansion = Record.readInt();
1714 New = new (Context) HLSLGroupSharedAddressSpaceAttr(Context, Info);
1715 New->setImplicit(isImplicit);
1716 New->setPackExpansion(isPackExpansion);
1717 break;
1718 }
1719 case attr::HLSLLoopHint: {
1720 bool isImplicit = Record.readInt();
1721 bool isPackExpansion = Record.readInt();
1722 unsigned directive = Record.readInt();
1723 New = new (Context) HLSLLoopHintAttr(Context, Info, directive);
1724 New->setImplicit(isImplicit);
1725 New->setPackExpansion(isPackExpansion);
1726 break;
1727 }
1728 case attr::HLSLNumThreads: {
1729 bool isInherited = Record.readInt();
1730 bool isImplicit = Record.readInt();
1731 bool isPackExpansion = Record.readInt();
1732 int x = Record.readInt();
1733 int y = Record.readInt();
1734 int z = Record.readInt();
1735 New = new (Context) HLSLNumThreadsAttr(Context, Info, x, y, z);
1736 cast<InheritableAttr>(New)->setInherited(isInherited);
1737 New->setImplicit(isImplicit);
1738 New->setPackExpansion(isPackExpansion);
1739 break;
1740 }
1741 case attr::HLSLPackOffset: {
1742 bool isInherited = Record.readInt();
1743 bool isImplicit = Record.readInt();
1744 bool isPackExpansion = Record.readInt();
1745 int subcomponent = Record.readInt();
1746 int component = Record.readInt();
1747 New = new (Context) HLSLPackOffsetAttr(Context, Info, subcomponent, component);
1748 cast<InheritableAttr>(New)->setInherited(isInherited);
1749 New->setImplicit(isImplicit);
1750 New->setPackExpansion(isPackExpansion);
1751 break;
1752 }
1753 case attr::HLSLParamModifier: {
1754 bool isInherited = Record.readInt();
1755 bool isImplicit = Record.readInt();
1756 bool isPackExpansion = Record.readInt();
1757 bool mergedSpelling = Record.readInt();
1758 New = new (Context) HLSLParamModifierAttr(Context, Info, mergedSpelling);
1759 cast<InheritableAttr>(New)->setInherited(isInherited);
1760 New->setImplicit(isImplicit);
1761 New->setPackExpansion(isPackExpansion);
1762 break;
1763 }
1764 case attr::HLSLROV: {
1765 bool isImplicit = Record.readInt();
1766 bool isPackExpansion = Record.readInt();
1767 New = new (Context) HLSLROVAttr(Context, Info);
1768 New->setImplicit(isImplicit);
1769 New->setPackExpansion(isPackExpansion);
1770 break;
1771 }
1772 case attr::HLSLRawBuffer: {
1773 bool isImplicit = Record.readInt();
1774 bool isPackExpansion = Record.readInt();
1775 New = new (Context) HLSLRawBufferAttr(Context, Info);
1776 New->setImplicit(isImplicit);
1777 New->setPackExpansion(isPackExpansion);
1778 break;
1779 }
1780 case attr::HLSLResource: {
1781 bool isInherited = Record.readInt();
1782 bool isImplicit = Record.readInt();
1783 bool isPackExpansion = Record.readInt();
1784 llvm::hlsl::ResourceKind resourceKind(static_cast<llvm::hlsl::ResourceKind>(Record.readInt()));
1785 New = new (Context) HLSLResourceAttr(Context, Info, resourceKind);
1786 cast<InheritableAttr>(New)->setInherited(isInherited);
1787 New->setImplicit(isImplicit);
1788 New->setPackExpansion(isPackExpansion);
1789 break;
1790 }
1791 case attr::HLSLResourceBinding: {
1792 bool isInherited = Record.readInt();
1793 bool isImplicit = Record.readInt();
1794 bool isPackExpansion = Record.readInt();
1795 std::string slot= Record.readString();
1796 std::string space= Record.readString();
1797 New = new (Context) HLSLResourceBindingAttr(Context, Info, slot, space);
1798 cast<InheritableAttr>(New)->setInherited(isInherited);
1799 New->setImplicit(isImplicit);
1800 New->setPackExpansion(isPackExpansion);
1801 break;
1802 }
1803 case attr::HLSLResourceClass: {
1804 bool isImplicit = Record.readInt();
1805 bool isPackExpansion = Record.readInt();
1806 llvm::hlsl::ResourceClass resourceClass(static_cast<llvm::hlsl::ResourceClass>(Record.readInt()));
1807 New = new (Context) HLSLResourceClassAttr(Context, Info, resourceClass);
1808 New->setImplicit(isImplicit);
1809 New->setPackExpansion(isPackExpansion);
1810 break;
1811 }
1812 case attr::HLSLSV_DispatchThreadID: {
1813 bool isInherited = Record.readInt();
1814 bool isImplicit = Record.readInt();
1815 bool isPackExpansion = Record.readInt();
1816 New = new (Context) HLSLSV_DispatchThreadIDAttr(Context, Info);
1817 cast<InheritableAttr>(New)->setInherited(isInherited);
1818 New->setImplicit(isImplicit);
1819 New->setPackExpansion(isPackExpansion);
1820 break;
1821 }
1822 case attr::HLSLSV_GroupID: {
1823 bool isInherited = Record.readInt();
1824 bool isImplicit = Record.readInt();
1825 bool isPackExpansion = Record.readInt();
1826 New = new (Context) HLSLSV_GroupIDAttr(Context, Info);
1827 cast<InheritableAttr>(New)->setInherited(isInherited);
1828 New->setImplicit(isImplicit);
1829 New->setPackExpansion(isPackExpansion);
1830 break;
1831 }
1832 case attr::HLSLSV_GroupIndex: {
1833 bool isInherited = Record.readInt();
1834 bool isImplicit = Record.readInt();
1835 bool isPackExpansion = Record.readInt();
1836 New = new (Context) HLSLSV_GroupIndexAttr(Context, Info);
1837 cast<InheritableAttr>(New)->setInherited(isInherited);
1838 New->setImplicit(isImplicit);
1839 New->setPackExpansion(isPackExpansion);
1840 break;
1841 }
1842 case attr::HLSLSV_GroupThreadID: {
1843 bool isInherited = Record.readInt();
1844 bool isImplicit = Record.readInt();
1845 bool isPackExpansion = Record.readInt();
1846 New = new (Context) HLSLSV_GroupThreadIDAttr(Context, Info);
1847 cast<InheritableAttr>(New)->setInherited(isInherited);
1848 New->setImplicit(isImplicit);
1849 New->setPackExpansion(isPackExpansion);
1850 break;
1851 }
1852 case attr::HLSLShader: {
1853 bool isInherited = Record.readInt();
1854 bool isImplicit = Record.readInt();
1855 bool isPackExpansion = Record.readInt();
1856 llvm::Triple::EnvironmentType type(static_cast<llvm::Triple::EnvironmentType>(Record.readInt()));
1857 New = new (Context) HLSLShaderAttr(Context, Info, type);
1858 cast<InheritableAttr>(New)->setInherited(isInherited);
1859 New->setImplicit(isImplicit);
1860 New->setPackExpansion(isPackExpansion);
1861 break;
1862 }
1863 case attr::HLSLWaveSize: {
1864 bool isInherited = Record.readInt();
1865 bool isImplicit = Record.readInt();
1866 bool isPackExpansion = Record.readInt();
1867 int min = Record.readInt();
1868 int max = Record.readInt();
1869 int preferred = Record.readInt();
1870 New = new (Context) HLSLWaveSizeAttr(Context, Info, min, max, preferred);
1871 cast<InheritableAttr>(New)->setInherited(isInherited);
1872 New->setImplicit(isImplicit);
1873 New->setPackExpansion(isPackExpansion);
1874 break;
1875 }
1876 case attr::Hot: {
1877 bool isInherited = Record.readInt();
1878 bool isImplicit = Record.readInt();
1879 bool isPackExpansion = Record.readInt();
1880 New = new (Context) HotAttr(Context, Info);
1881 cast<InheritableAttr>(New)->setInherited(isInherited);
1882 New->setImplicit(isImplicit);
1883 New->setPackExpansion(isPackExpansion);
1884 break;
1885 }
1886 case attr::HybridPatchable: {
1887 bool isInherited = Record.readInt();
1888 bool isImplicit = Record.readInt();
1889 bool isPackExpansion = Record.readInt();
1890 New = new (Context) HybridPatchableAttr(Context, Info);
1891 cast<InheritableAttr>(New)->setInherited(isInherited);
1892 New->setImplicit(isImplicit);
1893 New->setPackExpansion(isPackExpansion);
1894 break;
1895 }
1896 case attr::IBAction: {
1897 bool isInherited = Record.readInt();
1898 bool isImplicit = Record.readInt();
1899 bool isPackExpansion = Record.readInt();
1900 New = new (Context) IBActionAttr(Context, Info);
1901 cast<InheritableAttr>(New)->setInherited(isInherited);
1902 New->setImplicit(isImplicit);
1903 New->setPackExpansion(isPackExpansion);
1904 break;
1905 }
1906 case attr::IBOutlet: {
1907 bool isInherited = Record.readInt();
1908 bool isImplicit = Record.readInt();
1909 bool isPackExpansion = Record.readInt();
1910 New = new (Context) IBOutletAttr(Context, Info);
1911 cast<InheritableAttr>(New)->setInherited(isInherited);
1912 New->setImplicit(isImplicit);
1913 New->setPackExpansion(isPackExpansion);
1914 break;
1915 }
1916 case attr::IBOutletCollection: {
1917 bool isInherited = Record.readInt();
1918 bool isImplicit = Record.readInt();
1919 bool isPackExpansion = Record.readInt();
1920 TypeSourceInfo * interface_ = Record.readTypeSourceInfo();
1921 New = new (Context) IBOutletCollectionAttr(Context, Info, interface_);
1922 cast<InheritableAttr>(New)->setInherited(isInherited);
1923 New->setImplicit(isImplicit);
1924 New->setPackExpansion(isPackExpansion);
1925 break;
1926 }
1927 case attr::IFunc: {
1928 bool isImplicit = Record.readInt();
1929 bool isPackExpansion = Record.readInt();
1930 std::string resolver= Record.readString();
1931 New = new (Context) IFuncAttr(Context, Info, resolver);
1932 New->setImplicit(isImplicit);
1933 New->setPackExpansion(isPackExpansion);
1934 break;
1935 }
1936 case attr::InitPriority: {
1937 bool isInherited = Record.readInt();
1938 bool isImplicit = Record.readInt();
1939 bool isPackExpansion = Record.readInt();
1940 unsigned priority = Record.readInt();
1941 New = new (Context) InitPriorityAttr(Context, Info, priority);
1942 cast<InheritableAttr>(New)->setInherited(isInherited);
1943 New->setImplicit(isImplicit);
1944 New->setPackExpansion(isPackExpansion);
1945 break;
1946 }
1947 case attr::InitSeg: {
1948 bool isImplicit = Record.readInt();
1949 bool isPackExpansion = Record.readInt();
1950 std::string section= Record.readString();
1951 New = new (Context) InitSegAttr(Context, Info, section);
1952 New->setImplicit(isImplicit);
1953 New->setPackExpansion(isPackExpansion);
1954 break;
1955 }
1956 case attr::IntelOclBicc: {
1957 bool isInherited = Record.readInt();
1958 bool isImplicit = Record.readInt();
1959 bool isPackExpansion = Record.readInt();
1960 New = new (Context) IntelOclBiccAttr(Context, Info);
1961 cast<InheritableAttr>(New)->setInherited(isInherited);
1962 New->setImplicit(isImplicit);
1963 New->setPackExpansion(isPackExpansion);
1964 break;
1965 }
1966 case attr::InternalLinkage: {
1967 bool isInherited = Record.readInt();
1968 bool isImplicit = Record.readInt();
1969 bool isPackExpansion = Record.readInt();
1970 New = new (Context) InternalLinkageAttr(Context, Info);
1971 cast<InheritableAttr>(New)->setInherited(isInherited);
1972 New->setImplicit(isImplicit);
1973 New->setPackExpansion(isPackExpansion);
1974 break;
1975 }
1976 case attr::LTOVisibilityPublic: {
1977 bool isInherited = Record.readInt();
1978 bool isImplicit = Record.readInt();
1979 bool isPackExpansion = Record.readInt();
1980 New = new (Context) LTOVisibilityPublicAttr(Context, Info);
1981 cast<InheritableAttr>(New)->setInherited(isInherited);
1982 New->setImplicit(isImplicit);
1983 New->setPackExpansion(isPackExpansion);
1984 break;
1985 }
1986 case attr::LayoutVersion: {
1987 bool isInherited = Record.readInt();
1988 bool isImplicit = Record.readInt();
1989 bool isPackExpansion = Record.readInt();
1990 unsigned version = Record.readInt();
1991 New = new (Context) LayoutVersionAttr(Context, Info, version);
1992 cast<InheritableAttr>(New)->setInherited(isInherited);
1993 New->setImplicit(isImplicit);
1994 New->setPackExpansion(isPackExpansion);
1995 break;
1996 }
1997 case attr::Leaf: {
1998 bool isInherited = Record.readInt();
1999 bool isImplicit = Record.readInt();
2000 bool isPackExpansion = Record.readInt();
2001 New = new (Context) LeafAttr(Context, Info);
2002 cast<InheritableAttr>(New)->setInherited(isInherited);
2003 New->setImplicit(isImplicit);
2004 New->setPackExpansion(isPackExpansion);
2005 break;
2006 }
2007 case attr::LifetimeBound: {
2008 bool isInherited = Record.readInt();
2009 bool isImplicit = Record.readInt();
2010 bool isPackExpansion = Record.readInt();
2011 New = new (Context) LifetimeBoundAttr(Context, Info);
2012 cast<InheritableAttr>(New)->setInherited(isInherited);
2013 New->setImplicit(isImplicit);
2014 New->setPackExpansion(isPackExpansion);
2015 break;
2016 }
2017 case attr::LifetimeCaptureBy: {
2018 bool isInherited = Record.readInt();
2019 bool isImplicit = Record.readInt();
2020 bool isPackExpansion = Record.readInt();
2021 unsigned paramsSize = Record.readInt();
2022 SmallVector<int, 4> params;
2023 params.reserve(paramsSize);
2024 for (unsigned i = 0; i != paramsSize; ++i)
2025 params.push_back(Record.readInt());
2026 New = new (Context) LifetimeCaptureByAttr(Context, Info, params.data(), paramsSize);
2027 cast<InheritableAttr>(New)->setInherited(isInherited);
2028 New->setImplicit(isImplicit);
2029 New->setPackExpansion(isPackExpansion);
2030 break;
2031 }
2032 case attr::Likely: {
2033 bool isImplicit = Record.readInt();
2034 bool isPackExpansion = Record.readInt();
2035 New = new (Context) LikelyAttr(Context, Info);
2036 New->setImplicit(isImplicit);
2037 New->setPackExpansion(isPackExpansion);
2038 break;
2039 }
2040 case attr::LoaderUninitialized: {
2041 bool isImplicit = Record.readInt();
2042 bool isPackExpansion = Record.readInt();
2043 New = new (Context) LoaderUninitializedAttr(Context, Info);
2044 New->setImplicit(isImplicit);
2045 New->setPackExpansion(isPackExpansion);
2046 break;
2047 }
2048 case attr::LockReturned: {
2049 bool isInherited = Record.readInt();
2050 bool isImplicit = Record.readInt();
2051 bool isPackExpansion = Record.readInt();
2052 Expr * arg = Record.readExpr();
2053 New = new (Context) LockReturnedAttr(Context, Info, arg);
2054 cast<InheritableAttr>(New)->setInherited(isInherited);
2055 New->setImplicit(isImplicit);
2056 New->setPackExpansion(isPackExpansion);
2057 break;
2058 }
2059 case attr::LocksExcluded: {
2060 bool isInherited = Record.readInt();
2061 bool isImplicit = Record.readInt();
2062 bool isPackExpansion = Record.readInt();
2063 unsigned argsSize = Record.readInt();
2064 SmallVector<Expr *, 4> args;
2065 args.reserve(argsSize);
2066 for (unsigned i = 0; i != argsSize; ++i)
2067 args.push_back(Record.readExpr());
2068 New = new (Context) LocksExcludedAttr(Context, Info, args.data(), argsSize);
2069 cast<InheritableAttr>(New)->setInherited(isInherited);
2070 New->setImplicit(isImplicit);
2071 New->setPackExpansion(isPackExpansion);
2072 break;
2073 }
2074 case attr::LoopHint: {
2075 bool isImplicit = Record.readInt();
2076 bool isPackExpansion = Record.readInt();
2077 LoopHintAttr::OptionType option(static_cast<LoopHintAttr::OptionType>(Record.readInt()));
2078 LoopHintAttr::LoopHintState state(static_cast<LoopHintAttr::LoopHintState>(Record.readInt()));
2079 Expr * value = Record.readExpr();
2080 New = new (Context) LoopHintAttr(Context, Info, option, state, value);
2081 New->setImplicit(isImplicit);
2082 New->setPackExpansion(isPackExpansion);
2083 break;
2084 }
2085 case attr::M68kInterrupt: {
2086 bool isInherited = Record.readInt();
2087 bool isImplicit = Record.readInt();
2088 bool isPackExpansion = Record.readInt();
2089 unsigned number = Record.readInt();
2090 New = new (Context) M68kInterruptAttr(Context, Info, number);
2091 cast<InheritableAttr>(New)->setInherited(isInherited);
2092 New->setImplicit(isImplicit);
2093 New->setPackExpansion(isPackExpansion);
2094 break;
2095 }
2096 case attr::M68kRTD: {
2097 bool isInherited = Record.readInt();
2098 bool isImplicit = Record.readInt();
2099 bool isPackExpansion = Record.readInt();
2100 New = new (Context) M68kRTDAttr(Context, Info);
2101 cast<InheritableAttr>(New)->setInherited(isInherited);
2102 New->setImplicit(isImplicit);
2103 New->setPackExpansion(isPackExpansion);
2104 break;
2105 }
2106 case attr::MIGServerRoutine: {
2107 bool isInherited = Record.readInt();
2108 bool isImplicit = Record.readInt();
2109 bool isPackExpansion = Record.readInt();
2110 New = new (Context) MIGServerRoutineAttr(Context, Info);
2111 cast<InheritableAttr>(New)->setInherited(isInherited);
2112 New->setImplicit(isImplicit);
2113 New->setPackExpansion(isPackExpansion);
2114 break;
2115 }
2116 case attr::MSABI: {
2117 bool isInherited = Record.readInt();
2118 bool isImplicit = Record.readInt();
2119 bool isPackExpansion = Record.readInt();
2120 New = new (Context) MSABIAttr(Context, Info);
2121 cast<InheritableAttr>(New)->setInherited(isInherited);
2122 New->setImplicit(isImplicit);
2123 New->setPackExpansion(isPackExpansion);
2124 break;
2125 }
2126 case attr::MSAllocator: {
2127 bool isInherited = Record.readInt();
2128 bool isImplicit = Record.readInt();
2129 bool isPackExpansion = Record.readInt();
2130 New = new (Context) MSAllocatorAttr(Context, Info);
2131 cast<InheritableAttr>(New)->setInherited(isInherited);
2132 New->setImplicit(isImplicit);
2133 New->setPackExpansion(isPackExpansion);
2134 break;
2135 }
2136 case attr::MSConstexpr: {
2137 bool isInherited = Record.readInt();
2138 bool isImplicit = Record.readInt();
2139 bool isPackExpansion = Record.readInt();
2140 New = new (Context) MSConstexprAttr(Context, Info);
2141 cast<InheritableAttr>(New)->setInherited(isInherited);
2142 New->setImplicit(isImplicit);
2143 New->setPackExpansion(isPackExpansion);
2144 break;
2145 }
2146 case attr::MSInheritance: {
2147 bool isInherited = Record.readInt();
2148 bool isImplicit = Record.readInt();
2149 bool isPackExpansion = Record.readInt();
2150 bool bestCase = Record.readInt();
2151 New = new (Context) MSInheritanceAttr(Context, Info, bestCase);
2152 cast<InheritableAttr>(New)->setInherited(isInherited);
2153 New->setImplicit(isImplicit);
2154 New->setPackExpansion(isPackExpansion);
2155 break;
2156 }
2157 case attr::MSNoVTable: {
2158 bool isInherited = Record.readInt();
2159 bool isImplicit = Record.readInt();
2160 bool isPackExpansion = Record.readInt();
2161 New = new (Context) MSNoVTableAttr(Context, Info);
2162 cast<InheritableAttr>(New)->setInherited(isInherited);
2163 New->setImplicit(isImplicit);
2164 New->setPackExpansion(isPackExpansion);
2165 break;
2166 }
2167 case attr::MSP430Interrupt: {
2168 bool isInherited = Record.readInt();
2169 bool isImplicit = Record.readInt();
2170 bool isPackExpansion = Record.readInt();
2171 unsigned number = Record.readInt();
2172 New = new (Context) MSP430InterruptAttr(Context, Info, number);
2173 cast<InheritableAttr>(New)->setInherited(isInherited);
2174 New->setImplicit(isImplicit);
2175 New->setPackExpansion(isPackExpansion);
2176 break;
2177 }
2178 case attr::MSStruct: {
2179 bool isInherited = Record.readInt();
2180 bool isImplicit = Record.readInt();
2181 bool isPackExpansion = Record.readInt();
2182 New = new (Context) MSStructAttr(Context, Info);
2183 cast<InheritableAttr>(New)->setInherited(isInherited);
2184 New->setImplicit(isImplicit);
2185 New->setPackExpansion(isPackExpansion);
2186 break;
2187 }
2188 case attr::MSVtorDisp: {
2189 bool isInherited = Record.readInt();
2190 bool isImplicit = Record.readInt();
2191 bool isPackExpansion = Record.readInt();
2192 unsigned vdm = Record.readInt();
2193 New = new (Context) MSVtorDispAttr(Context, Info, vdm);
2194 cast<InheritableAttr>(New)->setInherited(isInherited);
2195 New->setImplicit(isImplicit);
2196 New->setPackExpansion(isPackExpansion);
2197 break;
2198 }
2199 case attr::MaxFieldAlignment: {
2200 bool isInherited = Record.readInt();
2201 bool isImplicit = Record.readInt();
2202 bool isPackExpansion = Record.readInt();
2203 unsigned alignment = Record.readInt();
2204 New = new (Context) MaxFieldAlignmentAttr(Context, Info, alignment);
2205 cast<InheritableAttr>(New)->setInherited(isInherited);
2206 New->setImplicit(isImplicit);
2207 New->setPackExpansion(isPackExpansion);
2208 break;
2209 }
2210 case attr::MayAlias: {
2211 bool isInherited = Record.readInt();
2212 bool isImplicit = Record.readInt();
2213 bool isPackExpansion = Record.readInt();
2214 New = new (Context) MayAliasAttr(Context, Info);
2215 cast<InheritableAttr>(New)->setInherited(isInherited);
2216 New->setImplicit(isImplicit);
2217 New->setPackExpansion(isPackExpansion);
2218 break;
2219 }
2220 case attr::MaybeUndef: {
2221 bool isInherited = Record.readInt();
2222 bool isImplicit = Record.readInt();
2223 bool isPackExpansion = Record.readInt();
2224 New = new (Context) MaybeUndefAttr(Context, Info);
2225 cast<InheritableAttr>(New)->setInherited(isInherited);
2226 New->setImplicit(isImplicit);
2227 New->setPackExpansion(isPackExpansion);
2228 break;
2229 }
2230 case attr::MicroMips: {
2231 bool isInherited = Record.readInt();
2232 bool isImplicit = Record.readInt();
2233 bool isPackExpansion = Record.readInt();
2234 New = new (Context) MicroMipsAttr(Context, Info);
2235 cast<InheritableAttr>(New)->setInherited(isInherited);
2236 New->setImplicit(isImplicit);
2237 New->setPackExpansion(isPackExpansion);
2238 break;
2239 }
2240 case attr::MinSize: {
2241 bool isInherited = Record.readInt();
2242 bool isImplicit = Record.readInt();
2243 bool isPackExpansion = Record.readInt();
2244 New = new (Context) MinSizeAttr(Context, Info);
2245 cast<InheritableAttr>(New)->setInherited(isInherited);
2246 New->setImplicit(isImplicit);
2247 New->setPackExpansion(isPackExpansion);
2248 break;
2249 }
2250 case attr::MinVectorWidth: {
2251 bool isInherited = Record.readInt();
2252 bool isImplicit = Record.readInt();
2253 bool isPackExpansion = Record.readInt();
2254 unsigned vectorWidth = Record.readInt();
2255 New = new (Context) MinVectorWidthAttr(Context, Info, vectorWidth);
2256 cast<InheritableAttr>(New)->setInherited(isInherited);
2257 New->setImplicit(isImplicit);
2258 New->setPackExpansion(isPackExpansion);
2259 break;
2260 }
2261 case attr::Mips16: {
2262 bool isInherited = Record.readInt();
2263 bool isImplicit = Record.readInt();
2264 bool isPackExpansion = Record.readInt();
2265 New = new (Context) Mips16Attr(Context, Info);
2266 cast<InheritableAttr>(New)->setInherited(isInherited);
2267 New->setImplicit(isImplicit);
2268 New->setPackExpansion(isPackExpansion);
2269 break;
2270 }
2271 case attr::MipsInterrupt: {
2272 bool isInherited = Record.readInt();
2273 bool isImplicit = Record.readInt();
2274 bool isPackExpansion = Record.readInt();
2275 MipsInterruptAttr::InterruptType interrupt(static_cast<MipsInterruptAttr::InterruptType>(Record.readInt()));
2276 New = new (Context) MipsInterruptAttr(Context, Info, interrupt);
2277 cast<InheritableAttr>(New)->setInherited(isInherited);
2278 New->setImplicit(isImplicit);
2279 New->setPackExpansion(isPackExpansion);
2280 break;
2281 }
2282 case attr::MipsLongCall: {
2283 bool isInherited = Record.readInt();
2284 bool isImplicit = Record.readInt();
2285 bool isPackExpansion = Record.readInt();
2286 New = new (Context) MipsLongCallAttr(Context, Info);
2287 cast<InheritableAttr>(New)->setInherited(isInherited);
2288 New->setImplicit(isImplicit);
2289 New->setPackExpansion(isPackExpansion);
2290 break;
2291 }
2292 case attr::MipsShortCall: {
2293 bool isInherited = Record.readInt();
2294 bool isImplicit = Record.readInt();
2295 bool isPackExpansion = Record.readInt();
2296 New = new (Context) MipsShortCallAttr(Context, Info);
2297 cast<InheritableAttr>(New)->setInherited(isInherited);
2298 New->setImplicit(isImplicit);
2299 New->setPackExpansion(isPackExpansion);
2300 break;
2301 }
2302 case attr::Mode: {
2303 bool isImplicit = Record.readInt();
2304 bool isPackExpansion = Record.readInt();
2305 IdentifierInfo * mode = Record.readIdentifier();
2306 New = new (Context) ModeAttr(Context, Info, mode);
2307 New->setImplicit(isImplicit);
2308 New->setPackExpansion(isPackExpansion);
2309 break;
2310 }
2311 case attr::MustTail: {
2312 bool isImplicit = Record.readInt();
2313 bool isPackExpansion = Record.readInt();
2314 New = new (Context) MustTailAttr(Context, Info);
2315 New->setImplicit(isImplicit);
2316 New->setPackExpansion(isPackExpansion);
2317 break;
2318 }
2319 case attr::NSConsumed: {
2320 bool isInherited = Record.readInt();
2321 bool isImplicit = Record.readInt();
2322 bool isPackExpansion = Record.readInt();
2323 New = new (Context) NSConsumedAttr(Context, Info);
2324 cast<InheritableAttr>(New)->setInherited(isInherited);
2325 New->setImplicit(isImplicit);
2326 New->setPackExpansion(isPackExpansion);
2327 break;
2328 }
2329 case attr::NSConsumesSelf: {
2330 bool isInherited = Record.readInt();
2331 bool isImplicit = Record.readInt();
2332 bool isPackExpansion = Record.readInt();
2333 New = new (Context) NSConsumesSelfAttr(Context, Info);
2334 cast<InheritableAttr>(New)->setInherited(isInherited);
2335 New->setImplicit(isImplicit);
2336 New->setPackExpansion(isPackExpansion);
2337 break;
2338 }
2339 case attr::NSErrorDomain: {
2340 bool isInherited = Record.readInt();
2341 bool isImplicit = Record.readInt();
2342 bool isPackExpansion = Record.readInt();
2343 IdentifierInfo * errorDomain = Record.readIdentifier();
2344 New = new (Context) NSErrorDomainAttr(Context, Info, errorDomain);
2345 cast<InheritableAttr>(New)->setInherited(isInherited);
2346 New->setImplicit(isImplicit);
2347 New->setPackExpansion(isPackExpansion);
2348 break;
2349 }
2350 case attr::NSReturnsAutoreleased: {
2351 bool isInherited = Record.readInt();
2352 bool isImplicit = Record.readInt();
2353 bool isPackExpansion = Record.readInt();
2354 New = new (Context) NSReturnsAutoreleasedAttr(Context, Info);
2355 cast<InheritableAttr>(New)->setInherited(isInherited);
2356 New->setImplicit(isImplicit);
2357 New->setPackExpansion(isPackExpansion);
2358 break;
2359 }
2360 case attr::NSReturnsNotRetained: {
2361 bool isInherited = Record.readInt();
2362 bool isImplicit = Record.readInt();
2363 bool isPackExpansion = Record.readInt();
2364 New = new (Context) NSReturnsNotRetainedAttr(Context, Info);
2365 cast<InheritableAttr>(New)->setInherited(isInherited);
2366 New->setImplicit(isImplicit);
2367 New->setPackExpansion(isPackExpansion);
2368 break;
2369 }
2370 case attr::NSReturnsRetained: {
2371 bool isInherited = Record.readInt();
2372 bool isImplicit = Record.readInt();
2373 bool isPackExpansion = Record.readInt();
2374 New = new (Context) NSReturnsRetainedAttr(Context, Info);
2375 cast<InheritableAttr>(New)->setInherited(isInherited);
2376 New->setImplicit(isImplicit);
2377 New->setPackExpansion(isPackExpansion);
2378 break;
2379 }
2380 case attr::NVPTXKernel: {
2381 bool isInherited = Record.readInt();
2382 bool isImplicit = Record.readInt();
2383 bool isPackExpansion = Record.readInt();
2384 New = new (Context) NVPTXKernelAttr(Context, Info);
2385 cast<InheritableAttr>(New)->setInherited(isInherited);
2386 New->setImplicit(isImplicit);
2387 New->setPackExpansion(isPackExpansion);
2388 break;
2389 }
2390 case attr::Naked: {
2391 bool isInherited = Record.readInt();
2392 bool isImplicit = Record.readInt();
2393 bool isPackExpansion = Record.readInt();
2394 New = new (Context) NakedAttr(Context, Info);
2395 cast<InheritableAttr>(New)->setInherited(isInherited);
2396 New->setImplicit(isImplicit);
2397 New->setPackExpansion(isPackExpansion);
2398 break;
2399 }
2400 case attr::NoAlias: {
2401 bool isInherited = Record.readInt();
2402 bool isImplicit = Record.readInt();
2403 bool isPackExpansion = Record.readInt();
2404 New = new (Context) NoAliasAttr(Context, Info);
2405 cast<InheritableAttr>(New)->setInherited(isInherited);
2406 New->setImplicit(isImplicit);
2407 New->setPackExpansion(isPackExpansion);
2408 break;
2409 }
2410 case attr::NoBuiltin: {
2411 bool isImplicit = Record.readInt();
2412 bool isPackExpansion = Record.readInt();
2413 unsigned builtinNamesSize = Record.readInt();
2414 SmallVector<StringRef, 4> builtinNames;
2415 builtinNames.reserve(builtinNamesSize);
2416 SmallVector<std::string, 4> builtinNamesStorage;
2417 builtinNamesStorage.reserve(builtinNamesSize);
2418 for (unsigned i = 0; i != builtinNamesSize; ++i)
2419 builtinNamesStorage.push_back(Record.readString());
2420 for (unsigned i = 0; i != builtinNamesSize; ++i)
2421 builtinNames.push_back(builtinNamesStorage[i]);
2422 New = new (Context) NoBuiltinAttr(Context, Info, builtinNames.data(), builtinNamesSize);
2423 New->setImplicit(isImplicit);
2424 New->setPackExpansion(isPackExpansion);
2425 break;
2426 }
2427 case attr::NoCommon: {
2428 bool isInherited = Record.readInt();
2429 bool isImplicit = Record.readInt();
2430 bool isPackExpansion = Record.readInt();
2431 New = new (Context) NoCommonAttr(Context, Info);
2432 cast<InheritableAttr>(New)->setInherited(isInherited);
2433 New->setImplicit(isImplicit);
2434 New->setPackExpansion(isPackExpansion);
2435 break;
2436 }
2437 case attr::NoConvergent: {
2438 bool isInherited = Record.readInt();
2439 bool isImplicit = Record.readInt();
2440 bool isPackExpansion = Record.readInt();
2441 New = new (Context) NoConvergentAttr(Context, Info);
2442 cast<InheritableAttr>(New)->setInherited(isInherited);
2443 New->setImplicit(isImplicit);
2444 New->setPackExpansion(isPackExpansion);
2445 break;
2446 }
2447 case attr::NoDebug: {
2448 bool isInherited = Record.readInt();
2449 bool isImplicit = Record.readInt();
2450 bool isPackExpansion = Record.readInt();
2451 New = new (Context) NoDebugAttr(Context, Info);
2452 cast<InheritableAttr>(New)->setInherited(isInherited);
2453 New->setImplicit(isImplicit);
2454 New->setPackExpansion(isPackExpansion);
2455 break;
2456 }
2457 case attr::NoDeref: {
2458 bool isImplicit = Record.readInt();
2459 bool isPackExpansion = Record.readInt();
2460 New = new (Context) NoDerefAttr(Context, Info);
2461 New->setImplicit(isImplicit);
2462 New->setPackExpansion(isPackExpansion);
2463 break;
2464 }
2465 case attr::NoDestroy: {
2466 bool isInherited = Record.readInt();
2467 bool isImplicit = Record.readInt();
2468 bool isPackExpansion = Record.readInt();
2469 New = new (Context) NoDestroyAttr(Context, Info);
2470 cast<InheritableAttr>(New)->setInherited(isInherited);
2471 New->setImplicit(isImplicit);
2472 New->setPackExpansion(isPackExpansion);
2473 break;
2474 }
2475 case attr::NoDuplicate: {
2476 bool isInherited = Record.readInt();
2477 bool isImplicit = Record.readInt();
2478 bool isPackExpansion = Record.readInt();
2479 New = new (Context) NoDuplicateAttr(Context, Info);
2480 cast<InheritableAttr>(New)->setInherited(isInherited);
2481 New->setImplicit(isImplicit);
2482 New->setPackExpansion(isPackExpansion);
2483 break;
2484 }
2485 case attr::NoEscape: {
2486 bool isImplicit = Record.readInt();
2487 bool isPackExpansion = Record.readInt();
2488 New = new (Context) NoEscapeAttr(Context, Info);
2489 New->setImplicit(isImplicit);
2490 New->setPackExpansion(isPackExpansion);
2491 break;
2492 }
2493 case attr::NoInline: {
2494 bool isInherited = Record.readInt();
2495 bool isImplicit = Record.readInt();
2496 bool isPackExpansion = Record.readInt();
2497 New = new (Context) NoInlineAttr(Context, Info);
2498 cast<InheritableAttr>(New)->setInherited(isInherited);
2499 New->setImplicit(isImplicit);
2500 New->setPackExpansion(isPackExpansion);
2501 break;
2502 }
2503 case attr::NoInstrumentFunction: {
2504 bool isInherited = Record.readInt();
2505 bool isImplicit = Record.readInt();
2506 bool isPackExpansion = Record.readInt();
2507 New = new (Context) NoInstrumentFunctionAttr(Context, Info);
2508 cast<InheritableAttr>(New)->setInherited(isInherited);
2509 New->setImplicit(isImplicit);
2510 New->setPackExpansion(isPackExpansion);
2511 break;
2512 }
2513 case attr::NoMerge: {
2514 bool isInherited = Record.readInt();
2515 bool isImplicit = Record.readInt();
2516 bool isPackExpansion = Record.readInt();
2517 New = new (Context) NoMergeAttr(Context, Info);
2518 cast<InheritableAttr>(New)->setInherited(isInherited);
2519 New->setImplicit(isImplicit);
2520 New->setPackExpansion(isPackExpansion);
2521 break;
2522 }
2523 case attr::NoMicroMips: {
2524 bool isInherited = Record.readInt();
2525 bool isImplicit = Record.readInt();
2526 bool isPackExpansion = Record.readInt();
2527 New = new (Context) NoMicroMipsAttr(Context, Info);
2528 cast<InheritableAttr>(New)->setInherited(isInherited);
2529 New->setImplicit(isImplicit);
2530 New->setPackExpansion(isPackExpansion);
2531 break;
2532 }
2533 case attr::NoMips16: {
2534 bool isInherited = Record.readInt();
2535 bool isImplicit = Record.readInt();
2536 bool isPackExpansion = Record.readInt();
2537 New = new (Context) NoMips16Attr(Context, Info);
2538 cast<InheritableAttr>(New)->setInherited(isInherited);
2539 New->setImplicit(isImplicit);
2540 New->setPackExpansion(isPackExpansion);
2541 break;
2542 }
2543 case attr::NoProfileFunction: {
2544 bool isInherited = Record.readInt();
2545 bool isImplicit = Record.readInt();
2546 bool isPackExpansion = Record.readInt();
2547 New = new (Context) NoProfileFunctionAttr(Context, Info);
2548 cast<InheritableAttr>(New)->setInherited(isInherited);
2549 New->setImplicit(isImplicit);
2550 New->setPackExpansion(isPackExpansion);
2551 break;
2552 }
2553 case attr::NoRandomizeLayout: {
2554 bool isInherited = Record.readInt();
2555 bool isImplicit = Record.readInt();
2556 bool isPackExpansion = Record.readInt();
2557 New = new (Context) NoRandomizeLayoutAttr(Context, Info);
2558 cast<InheritableAttr>(New)->setInherited(isInherited);
2559 New->setImplicit(isImplicit);
2560 New->setPackExpansion(isPackExpansion);
2561 break;
2562 }
2563 case attr::NoReturn: {
2564 bool isInherited = Record.readInt();
2565 bool isImplicit = Record.readInt();
2566 bool isPackExpansion = Record.readInt();
2567 New = new (Context) NoReturnAttr(Context, Info);
2568 cast<InheritableAttr>(New)->setInherited(isInherited);
2569 New->setImplicit(isImplicit);
2570 New->setPackExpansion(isPackExpansion);
2571 break;
2572 }
2573 case attr::NoSanitize: {
2574 bool isInherited = Record.readInt();
2575 bool isImplicit = Record.readInt();
2576 bool isPackExpansion = Record.readInt();
2577 unsigned sanitizersSize = Record.readInt();
2578 SmallVector<StringRef, 4> sanitizers;
2579 sanitizers.reserve(sanitizersSize);
2580 SmallVector<std::string, 4> sanitizersStorage;
2581 sanitizersStorage.reserve(sanitizersSize);
2582 for (unsigned i = 0; i != sanitizersSize; ++i)
2583 sanitizersStorage.push_back(Record.readString());
2584 for (unsigned i = 0; i != sanitizersSize; ++i)
2585 sanitizers.push_back(sanitizersStorage[i]);
2586 New = new (Context) NoSanitizeAttr(Context, Info, sanitizers.data(), sanitizersSize);
2587 cast<InheritableAttr>(New)->setInherited(isInherited);
2588 New->setImplicit(isImplicit);
2589 New->setPackExpansion(isPackExpansion);
2590 break;
2591 }
2592 case attr::NoSpecializations: {
2593 bool isInherited = Record.readInt();
2594 bool isImplicit = Record.readInt();
2595 bool isPackExpansion = Record.readInt();
2596 std::string message= Record.readString();
2597 New = new (Context) NoSpecializationsAttr(Context, Info, message);
2598 cast<InheritableAttr>(New)->setInherited(isInherited);
2599 New->setImplicit(isImplicit);
2600 New->setPackExpansion(isPackExpansion);
2601 break;
2602 }
2603 case attr::NoSpeculativeLoadHardening: {
2604 bool isInherited = Record.readInt();
2605 bool isImplicit = Record.readInt();
2606 bool isPackExpansion = Record.readInt();
2607 New = new (Context) NoSpeculativeLoadHardeningAttr(Context, Info);
2608 cast<InheritableAttr>(New)->setInherited(isInherited);
2609 New->setImplicit(isImplicit);
2610 New->setPackExpansion(isPackExpansion);
2611 break;
2612 }
2613 case attr::NoSplitStack: {
2614 bool isInherited = Record.readInt();
2615 bool isImplicit = Record.readInt();
2616 bool isPackExpansion = Record.readInt();
2617 New = new (Context) NoSplitStackAttr(Context, Info);
2618 cast<InheritableAttr>(New)->setInherited(isInherited);
2619 New->setImplicit(isImplicit);
2620 New->setPackExpansion(isPackExpansion);
2621 break;
2622 }
2623 case attr::NoStackProtector: {
2624 bool isInherited = Record.readInt();
2625 bool isImplicit = Record.readInt();
2626 bool isPackExpansion = Record.readInt();
2627 New = new (Context) NoStackProtectorAttr(Context, Info);
2628 cast<InheritableAttr>(New)->setInherited(isInherited);
2629 New->setImplicit(isImplicit);
2630 New->setPackExpansion(isPackExpansion);
2631 break;
2632 }
2633 case attr::NoThreadSafetyAnalysis: {
2634 bool isInherited = Record.readInt();
2635 bool isImplicit = Record.readInt();
2636 bool isPackExpansion = Record.readInt();
2637 New = new (Context) NoThreadSafetyAnalysisAttr(Context, Info);
2638 cast<InheritableAttr>(New)->setInherited(isInherited);
2639 New->setImplicit(isImplicit);
2640 New->setPackExpansion(isPackExpansion);
2641 break;
2642 }
2643 case attr::NoThrow: {
2644 bool isInherited = Record.readInt();
2645 bool isImplicit = Record.readInt();
2646 bool isPackExpansion = Record.readInt();
2647 New = new (Context) NoThrowAttr(Context, Info);
2648 cast<InheritableAttr>(New)->setInherited(isInherited);
2649 New->setImplicit(isImplicit);
2650 New->setPackExpansion(isPackExpansion);
2651 break;
2652 }
2653 case attr::NoTrivialAutoVarInit: {
2654 bool isInherited = Record.readInt();
2655 bool isImplicit = Record.readInt();
2656 bool isPackExpansion = Record.readInt();
2657 New = new (Context) NoTrivialAutoVarInitAttr(Context, Info);
2658 cast<InheritableAttr>(New)->setInherited(isInherited);
2659 New->setImplicit(isImplicit);
2660 New->setPackExpansion(isPackExpansion);
2661 break;
2662 }
2663 case attr::NoUniqueAddress: {
2664 bool isInherited = Record.readInt();
2665 bool isImplicit = Record.readInt();
2666 bool isPackExpansion = Record.readInt();
2667 New = new (Context) NoUniqueAddressAttr(Context, Info);
2668 cast<InheritableAttr>(New)->setInherited(isInherited);
2669 New->setImplicit(isImplicit);
2670 New->setPackExpansion(isPackExpansion);
2671 break;
2672 }
2673 case attr::NoUwtable: {
2674 bool isInherited = Record.readInt();
2675 bool isImplicit = Record.readInt();
2676 bool isPackExpansion = Record.readInt();
2677 New = new (Context) NoUwtableAttr(Context, Info);
2678 cast<InheritableAttr>(New)->setInherited(isInherited);
2679 New->setImplicit(isImplicit);
2680 New->setPackExpansion(isPackExpansion);
2681 break;
2682 }
2683 case attr::NonAllocating: {
2684 bool isImplicit = Record.readInt();
2685 bool isPackExpansion = Record.readInt();
2686 Expr * cond = Record.readExpr();
2687 New = new (Context) NonAllocatingAttr(Context, Info, cond);
2688 New->setImplicit(isImplicit);
2689 New->setPackExpansion(isPackExpansion);
2690 break;
2691 }
2692 case attr::NonBlocking: {
2693 bool isImplicit = Record.readInt();
2694 bool isPackExpansion = Record.readInt();
2695 Expr * cond = Record.readExpr();
2696 New = new (Context) NonBlockingAttr(Context, Info, cond);
2697 New->setImplicit(isImplicit);
2698 New->setPackExpansion(isPackExpansion);
2699 break;
2700 }
2701 case attr::NonNull: {
2702 bool isInherited = Record.readInt();
2703 bool isImplicit = Record.readInt();
2704 bool isPackExpansion = Record.readInt();
2705 unsigned argsSize = Record.readInt();
2706 SmallVector<ParamIdx, 4> args;
2707 args.reserve(argsSize);
2708 for (unsigned i = 0; i != argsSize; ++i)
2709 args.push_back(ParamIdx::deserialize(Record.readInt()));
2710 New = new (Context) NonNullAttr(Context, Info, args.data(), argsSize);
2711 cast<InheritableAttr>(New)->setInherited(isInherited);
2712 New->setImplicit(isImplicit);
2713 New->setPackExpansion(isPackExpansion);
2714 break;
2715 }
2716 case attr::NotTailCalled: {
2717 bool isInherited = Record.readInt();
2718 bool isImplicit = Record.readInt();
2719 bool isPackExpansion = Record.readInt();
2720 New = new (Context) NotTailCalledAttr(Context, Info);
2721 cast<InheritableAttr>(New)->setInherited(isInherited);
2722 New->setImplicit(isImplicit);
2723 New->setPackExpansion(isPackExpansion);
2724 break;
2725 }
2726 case attr::OMPAllocateDecl: {
2727 bool isInherited = Record.readInt();
2728 bool isImplicit = Record.readInt();
2729 bool isPackExpansion = Record.readInt();
2730 OMPAllocateDeclAttr::AllocatorTypeTy allocatorType(static_cast<OMPAllocateDeclAttr::AllocatorTypeTy>(Record.readInt()));
2731 Expr * allocator = Record.readExpr();
2732 Expr * alignment = Record.readExpr();
2733 New = new (Context) OMPAllocateDeclAttr(Context, Info, allocatorType, allocator, alignment);
2734 cast<InheritableAttr>(New)->setInherited(isInherited);
2735 New->setImplicit(isImplicit);
2736 New->setPackExpansion(isPackExpansion);
2737 break;
2738 }
2739 case attr::OMPAssume: {
2740 bool isInherited = Record.readInt();
2741 bool isImplicit = Record.readInt();
2742 bool isPackExpansion = Record.readInt();
2743 std::string assumption= Record.readString();
2744 New = new (Context) OMPAssumeAttr(Context, Info, assumption);
2745 cast<InheritableAttr>(New)->setInherited(isInherited);
2746 New->setImplicit(isImplicit);
2747 New->setPackExpansion(isPackExpansion);
2748 break;
2749 }
2750 case attr::OMPCaptureKind: {
2751 bool isImplicit = Record.readInt();
2752 bool isPackExpansion = Record.readInt();
2753 unsigned captureKindVal = Record.readInt();
2754 New = new (Context) OMPCaptureKindAttr(Context, Info, captureKindVal);
2755 New->setImplicit(isImplicit);
2756 New->setPackExpansion(isPackExpansion);
2757 break;
2758 }
2759 case attr::OMPCaptureNoInit: {
2760 bool isInherited = Record.readInt();
2761 bool isImplicit = Record.readInt();
2762 bool isPackExpansion = Record.readInt();
2763 New = new (Context) OMPCaptureNoInitAttr(Context, Info);
2764 cast<InheritableAttr>(New)->setInherited(isInherited);
2765 New->setImplicit(isImplicit);
2766 New->setPackExpansion(isPackExpansion);
2767 break;
2768 }
2769 case attr::OMPDeclareSimdDecl: {
2770 bool isImplicit = Record.readInt();
2771 bool isPackExpansion = Record.readInt();
2772 OMPDeclareSimdDeclAttr::BranchStateTy branchState(static_cast<OMPDeclareSimdDeclAttr::BranchStateTy>(Record.readInt()));
2773 Expr * simdlen = Record.readExpr();
2774 unsigned uniformsSize = Record.readInt();
2775 SmallVector<Expr *, 4> uniforms;
2776 uniforms.reserve(uniformsSize);
2777 for (unsigned i = 0; i != uniformsSize; ++i)
2778 uniforms.push_back(Record.readExpr());
2779 unsigned alignedsSize = Record.readInt();
2780 SmallVector<Expr *, 4> aligneds;
2781 aligneds.reserve(alignedsSize);
2782 for (unsigned i = 0; i != alignedsSize; ++i)
2783 aligneds.push_back(Record.readExpr());
2784 unsigned alignmentsSize = Record.readInt();
2785 SmallVector<Expr *, 4> alignments;
2786 alignments.reserve(alignmentsSize);
2787 for (unsigned i = 0; i != alignmentsSize; ++i)
2788 alignments.push_back(Record.readExpr());
2789 unsigned linearsSize = Record.readInt();
2790 SmallVector<Expr *, 4> linears;
2791 linears.reserve(linearsSize);
2792 for (unsigned i = 0; i != linearsSize; ++i)
2793 linears.push_back(Record.readExpr());
2794 unsigned modifiersSize = Record.readInt();
2795 SmallVector<unsigned, 4> modifiers;
2796 modifiers.reserve(modifiersSize);
2797 for (unsigned i = 0; i != modifiersSize; ++i)
2798 modifiers.push_back(Record.readInt());
2799 unsigned stepsSize = Record.readInt();
2800 SmallVector<Expr *, 4> steps;
2801 steps.reserve(stepsSize);
2802 for (unsigned i = 0; i != stepsSize; ++i)
2803 steps.push_back(Record.readExpr());
2804 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);
2805 New->setImplicit(isImplicit);
2806 New->setPackExpansion(isPackExpansion);
2807 break;
2808 }
2809 case attr::OMPDeclareTargetDecl: {
2810 bool isInherited = Record.readInt();
2811 bool isImplicit = Record.readInt();
2812 bool isPackExpansion = Record.readInt();
2813 OMPDeclareTargetDeclAttr::MapTypeTy mapType(static_cast<OMPDeclareTargetDeclAttr::MapTypeTy>(Record.readInt()));
2814 OMPDeclareTargetDeclAttr::DevTypeTy devType(static_cast<OMPDeclareTargetDeclAttr::DevTypeTy>(Record.readInt()));
2815 Expr * indirectExpr = Record.readExpr();
2816 bool indirect = Record.readInt();
2817 unsigned level = Record.readInt();
2818 New = new (Context) OMPDeclareTargetDeclAttr(Context, Info, mapType, devType, indirectExpr, indirect, level);
2819 cast<InheritableAttr>(New)->setInherited(isInherited);
2820 New->setImplicit(isImplicit);
2821 New->setPackExpansion(isPackExpansion);
2822 break;
2823 }
2824 case attr::OMPDeclareVariant: {
2825 bool isInherited = Record.readInt();
2826 bool isImplicit = Record.readInt();
2827 bool isPackExpansion = Record.readInt();
2828 Expr * variantFuncRef = Record.readExpr();
2829 OMPTraitInfo * traitInfos = Record.readOMPTraitInfo();
2830 unsigned adjustArgsNothingSize = Record.readInt();
2831 SmallVector<Expr *, 4> adjustArgsNothing;
2832 adjustArgsNothing.reserve(adjustArgsNothingSize);
2833 for (unsigned i = 0; i != adjustArgsNothingSize; ++i)
2834 adjustArgsNothing.push_back(Record.readExpr());
2835 unsigned adjustArgsNeedDevicePtrSize = Record.readInt();
2836 SmallVector<Expr *, 4> adjustArgsNeedDevicePtr;
2837 adjustArgsNeedDevicePtr.reserve(adjustArgsNeedDevicePtrSize);
2838 for (unsigned i = 0; i != adjustArgsNeedDevicePtrSize; ++i)
2839 adjustArgsNeedDevicePtr.push_back(Record.readExpr());
2840 unsigned appendArgsSize = Record.readInt();
2841 SmallVector<OMPInteropInfo, 4> appendArgs;
2842 appendArgs.reserve(appendArgsSize);
2843 for (unsigned I = 0, E = appendArgsSize; I != E; ++I) {
2844 bool IsTarget = Record.readBool();
2845 bool IsTargetSync = Record.readBool();
2846 appendArgs.emplace_back(IsTarget, IsTargetSync);
2847 }
2848 New = new (Context) OMPDeclareVariantAttr(Context, Info, variantFuncRef, traitInfos, adjustArgsNothing.data(), adjustArgsNothingSize, adjustArgsNeedDevicePtr.data(), adjustArgsNeedDevicePtrSize, appendArgs.data(), appendArgsSize);
2849 cast<InheritableAttr>(New)->setInherited(isInherited);
2850 New->setImplicit(isImplicit);
2851 New->setPackExpansion(isPackExpansion);
2852 break;
2853 }
2854 case attr::OMPReferencedVar: {
2855 bool isImplicit = Record.readInt();
2856 bool isPackExpansion = Record.readInt();
2857 Expr * ref = Record.readExpr();
2858 New = new (Context) OMPReferencedVarAttr(Context, Info, ref);
2859 New->setImplicit(isImplicit);
2860 New->setPackExpansion(isPackExpansion);
2861 break;
2862 }
2863 case attr::OMPThreadPrivateDecl: {
2864 bool isInherited = Record.readInt();
2865 bool isImplicit = Record.readInt();
2866 bool isPackExpansion = Record.readInt();
2867 New = new (Context) OMPThreadPrivateDeclAttr(Context, Info);
2868 cast<InheritableAttr>(New)->setInherited(isInherited);
2869 New->setImplicit(isImplicit);
2870 New->setPackExpansion(isPackExpansion);
2871 break;
2872 }
2873 case attr::OSConsumed: {
2874 bool isInherited = Record.readInt();
2875 bool isImplicit = Record.readInt();
2876 bool isPackExpansion = Record.readInt();
2877 New = new (Context) OSConsumedAttr(Context, Info);
2878 cast<InheritableAttr>(New)->setInherited(isInherited);
2879 New->setImplicit(isImplicit);
2880 New->setPackExpansion(isPackExpansion);
2881 break;
2882 }
2883 case attr::OSConsumesThis: {
2884 bool isInherited = Record.readInt();
2885 bool isImplicit = Record.readInt();
2886 bool isPackExpansion = Record.readInt();
2887 New = new (Context) OSConsumesThisAttr(Context, Info);
2888 cast<InheritableAttr>(New)->setInherited(isInherited);
2889 New->setImplicit(isImplicit);
2890 New->setPackExpansion(isPackExpansion);
2891 break;
2892 }
2893 case attr::OSReturnsNotRetained: {
2894 bool isInherited = Record.readInt();
2895 bool isImplicit = Record.readInt();
2896 bool isPackExpansion = Record.readInt();
2897 New = new (Context) OSReturnsNotRetainedAttr(Context, Info);
2898 cast<InheritableAttr>(New)->setInherited(isInherited);
2899 New->setImplicit(isImplicit);
2900 New->setPackExpansion(isPackExpansion);
2901 break;
2902 }
2903 case attr::OSReturnsRetained: {
2904 bool isInherited = Record.readInt();
2905 bool isImplicit = Record.readInt();
2906 bool isPackExpansion = Record.readInt();
2907 New = new (Context) OSReturnsRetainedAttr(Context, Info);
2908 cast<InheritableAttr>(New)->setInherited(isInherited);
2909 New->setImplicit(isImplicit);
2910 New->setPackExpansion(isPackExpansion);
2911 break;
2912 }
2913 case attr::OSReturnsRetainedOnNonZero: {
2914 bool isInherited = Record.readInt();
2915 bool isImplicit = Record.readInt();
2916 bool isPackExpansion = Record.readInt();
2917 New = new (Context) OSReturnsRetainedOnNonZeroAttr(Context, Info);
2918 cast<InheritableAttr>(New)->setInherited(isInherited);
2919 New->setImplicit(isImplicit);
2920 New->setPackExpansion(isPackExpansion);
2921 break;
2922 }
2923 case attr::OSReturnsRetainedOnZero: {
2924 bool isInherited = Record.readInt();
2925 bool isImplicit = Record.readInt();
2926 bool isPackExpansion = Record.readInt();
2927 New = new (Context) OSReturnsRetainedOnZeroAttr(Context, Info);
2928 cast<InheritableAttr>(New)->setInherited(isInherited);
2929 New->setImplicit(isImplicit);
2930 New->setPackExpansion(isPackExpansion);
2931 break;
2932 }
2933 case attr::ObjCBoxable: {
2934 bool isImplicit = Record.readInt();
2935 bool isPackExpansion = Record.readInt();
2936 New = new (Context) ObjCBoxableAttr(Context, Info);
2937 New->setImplicit(isImplicit);
2938 New->setPackExpansion(isPackExpansion);
2939 break;
2940 }
2941 case attr::ObjCBridge: {
2942 bool isInherited = Record.readInt();
2943 bool isImplicit = Record.readInt();
2944 bool isPackExpansion = Record.readInt();
2945 IdentifierInfo * bridgedType = Record.readIdentifier();
2946 New = new (Context) ObjCBridgeAttr(Context, Info, bridgedType);
2947 cast<InheritableAttr>(New)->setInherited(isInherited);
2948 New->setImplicit(isImplicit);
2949 New->setPackExpansion(isPackExpansion);
2950 break;
2951 }
2952 case attr::ObjCBridgeMutable: {
2953 bool isInherited = Record.readInt();
2954 bool isImplicit = Record.readInt();
2955 bool isPackExpansion = Record.readInt();
2956 IdentifierInfo * bridgedType = Record.readIdentifier();
2957 New = new (Context) ObjCBridgeMutableAttr(Context, Info, bridgedType);
2958 cast<InheritableAttr>(New)->setInherited(isInherited);
2959 New->setImplicit(isImplicit);
2960 New->setPackExpansion(isPackExpansion);
2961 break;
2962 }
2963 case attr::ObjCBridgeRelated: {
2964 bool isInherited = Record.readInt();
2965 bool isImplicit = Record.readInt();
2966 bool isPackExpansion = Record.readInt();
2967 IdentifierInfo * relatedClass = Record.readIdentifier();
2968 IdentifierInfo * classMethod = Record.readIdentifier();
2969 IdentifierInfo * instanceMethod = Record.readIdentifier();
2970 New = new (Context) ObjCBridgeRelatedAttr(Context, Info, relatedClass, classMethod, instanceMethod);
2971 cast<InheritableAttr>(New)->setInherited(isInherited);
2972 New->setImplicit(isImplicit);
2973 New->setPackExpansion(isPackExpansion);
2974 break;
2975 }
2976 case attr::ObjCClassStub: {
2977 bool isImplicit = Record.readInt();
2978 bool isPackExpansion = Record.readInt();
2979 New = new (Context) ObjCClassStubAttr(Context, Info);
2980 New->setImplicit(isImplicit);
2981 New->setPackExpansion(isPackExpansion);
2982 break;
2983 }
2984 case attr::ObjCDesignatedInitializer: {
2985 bool isImplicit = Record.readInt();
2986 bool isPackExpansion = Record.readInt();
2987 New = new (Context) ObjCDesignatedInitializerAttr(Context, Info);
2988 New->setImplicit(isImplicit);
2989 New->setPackExpansion(isPackExpansion);
2990 break;
2991 }
2992 case attr::ObjCDirect: {
2993 bool isImplicit = Record.readInt();
2994 bool isPackExpansion = Record.readInt();
2995 New = new (Context) ObjCDirectAttr(Context, Info);
2996 New->setImplicit(isImplicit);
2997 New->setPackExpansion(isPackExpansion);
2998 break;
2999 }
3000 case attr::ObjCDirectMembers: {
3001 bool isImplicit = Record.readInt();
3002 bool isPackExpansion = Record.readInt();
3003 New = new (Context) ObjCDirectMembersAttr(Context, Info);
3004 New->setImplicit(isImplicit);
3005 New->setPackExpansion(isPackExpansion);
3006 break;
3007 }
3008 case attr::ObjCException: {
3009 bool isInherited = Record.readInt();
3010 bool isImplicit = Record.readInt();
3011 bool isPackExpansion = Record.readInt();
3012 New = new (Context) ObjCExceptionAttr(Context, Info);
3013 cast<InheritableAttr>(New)->setInherited(isInherited);
3014 New->setImplicit(isImplicit);
3015 New->setPackExpansion(isPackExpansion);
3016 break;
3017 }
3018 case attr::ObjCExplicitProtocolImpl: {
3019 bool isInherited = Record.readInt();
3020 bool isImplicit = Record.readInt();
3021 bool isPackExpansion = Record.readInt();
3022 New = new (Context) ObjCExplicitProtocolImplAttr(Context, Info);
3023 cast<InheritableAttr>(New)->setInherited(isInherited);
3024 New->setImplicit(isImplicit);
3025 New->setPackExpansion(isPackExpansion);
3026 break;
3027 }
3028 case attr::ObjCExternallyRetained: {
3029 bool isInherited = Record.readInt();
3030 bool isImplicit = Record.readInt();
3031 bool isPackExpansion = Record.readInt();
3032 New = new (Context) ObjCExternallyRetainedAttr(Context, Info);
3033 cast<InheritableAttr>(New)->setInherited(isInherited);
3034 New->setImplicit(isImplicit);
3035 New->setPackExpansion(isPackExpansion);
3036 break;
3037 }
3038 case attr::ObjCGC: {
3039 bool isImplicit = Record.readInt();
3040 bool isPackExpansion = Record.readInt();
3041 IdentifierInfo * kind = Record.readIdentifier();
3042 New = new (Context) ObjCGCAttr(Context, Info, kind);
3043 New->setImplicit(isImplicit);
3044 New->setPackExpansion(isPackExpansion);
3045 break;
3046 }
3047 case attr::ObjCIndependentClass: {
3048 bool isInherited = Record.readInt();
3049 bool isImplicit = Record.readInt();
3050 bool isPackExpansion = Record.readInt();
3051 New = new (Context) ObjCIndependentClassAttr(Context, Info);
3052 cast<InheritableAttr>(New)->setInherited(isInherited);
3053 New->setImplicit(isImplicit);
3054 New->setPackExpansion(isPackExpansion);
3055 break;
3056 }
3057 case attr::ObjCInertUnsafeUnretained: {
3058 bool isImplicit = Record.readInt();
3059 bool isPackExpansion = Record.readInt();
3060 New = new (Context) ObjCInertUnsafeUnretainedAttr(Context, Info);
3061 New->setImplicit(isImplicit);
3062 New->setPackExpansion(isPackExpansion);
3063 break;
3064 }
3065 case attr::ObjCKindOf: {
3066 bool isImplicit = Record.readInt();
3067 bool isPackExpansion = Record.readInt();
3068 New = new (Context) ObjCKindOfAttr(Context, Info);
3069 New->setImplicit(isImplicit);
3070 New->setPackExpansion(isPackExpansion);
3071 break;
3072 }
3073 case attr::ObjCMethodFamily: {
3074 bool isInherited = Record.readInt();
3075 bool isImplicit = Record.readInt();
3076 bool isPackExpansion = Record.readInt();
3077 ObjCMethodFamilyAttr::FamilyKind family(static_cast<ObjCMethodFamilyAttr::FamilyKind>(Record.readInt()));
3078 New = new (Context) ObjCMethodFamilyAttr(Context, Info, family);
3079 cast<InheritableAttr>(New)->setInherited(isInherited);
3080 New->setImplicit(isImplicit);
3081 New->setPackExpansion(isPackExpansion);
3082 break;
3083 }
3084 case attr::ObjCNSObject: {
3085 bool isInherited = Record.readInt();
3086 bool isImplicit = Record.readInt();
3087 bool isPackExpansion = Record.readInt();
3088 New = new (Context) ObjCNSObjectAttr(Context, Info);
3089 cast<InheritableAttr>(New)->setInherited(isInherited);
3090 New->setImplicit(isImplicit);
3091 New->setPackExpansion(isPackExpansion);
3092 break;
3093 }
3094 case attr::ObjCNonLazyClass: {
3095 bool isImplicit = Record.readInt();
3096 bool isPackExpansion = Record.readInt();
3097 New = new (Context) ObjCNonLazyClassAttr(Context, Info);
3098 New->setImplicit(isImplicit);
3099 New->setPackExpansion(isPackExpansion);
3100 break;
3101 }
3102 case attr::ObjCNonRuntimeProtocol: {
3103 bool isImplicit = Record.readInt();
3104 bool isPackExpansion = Record.readInt();
3105 New = new (Context) ObjCNonRuntimeProtocolAttr(Context, Info);
3106 New->setImplicit(isImplicit);
3107 New->setPackExpansion(isPackExpansion);
3108 break;
3109 }
3110 case attr::ObjCOwnership: {
3111 bool isInherited = Record.readInt();
3112 bool isImplicit = Record.readInt();
3113 bool isPackExpansion = Record.readInt();
3114 IdentifierInfo * kind = Record.readIdentifier();
3115 New = new (Context) ObjCOwnershipAttr(Context, Info, kind);
3116 cast<InheritableAttr>(New)->setInherited(isInherited);
3117 New->setImplicit(isImplicit);
3118 New->setPackExpansion(isPackExpansion);
3119 break;
3120 }
3121 case attr::ObjCPreciseLifetime: {
3122 bool isInherited = Record.readInt();
3123 bool isImplicit = Record.readInt();
3124 bool isPackExpansion = Record.readInt();
3125 New = new (Context) ObjCPreciseLifetimeAttr(Context, Info);
3126 cast<InheritableAttr>(New)->setInherited(isInherited);
3127 New->setImplicit(isImplicit);
3128 New->setPackExpansion(isPackExpansion);
3129 break;
3130 }
3131 case attr::ObjCRequiresPropertyDefs: {
3132 bool isInherited = Record.readInt();
3133 bool isImplicit = Record.readInt();
3134 bool isPackExpansion = Record.readInt();
3135 New = new (Context) ObjCRequiresPropertyDefsAttr(Context, Info);
3136 cast<InheritableAttr>(New)->setInherited(isInherited);
3137 New->setImplicit(isImplicit);
3138 New->setPackExpansion(isPackExpansion);
3139 break;
3140 }
3141 case attr::ObjCRequiresSuper: {
3142 bool isInherited = Record.readInt();
3143 bool isImplicit = Record.readInt();
3144 bool isPackExpansion = Record.readInt();
3145 New = new (Context) ObjCRequiresSuperAttr(Context, Info);
3146 cast<InheritableAttr>(New)->setInherited(isInherited);
3147 New->setImplicit(isImplicit);
3148 New->setPackExpansion(isPackExpansion);
3149 break;
3150 }
3151 case attr::ObjCReturnsInnerPointer: {
3152 bool isInherited = Record.readInt();
3153 bool isImplicit = Record.readInt();
3154 bool isPackExpansion = Record.readInt();
3155 New = new (Context) ObjCReturnsInnerPointerAttr(Context, Info);
3156 cast<InheritableAttr>(New)->setInherited(isInherited);
3157 New->setImplicit(isImplicit);
3158 New->setPackExpansion(isPackExpansion);
3159 break;
3160 }
3161 case attr::ObjCRootClass: {
3162 bool isInherited = Record.readInt();
3163 bool isImplicit = Record.readInt();
3164 bool isPackExpansion = Record.readInt();
3165 New = new (Context) ObjCRootClassAttr(Context, Info);
3166 cast<InheritableAttr>(New)->setInherited(isInherited);
3167 New->setImplicit(isImplicit);
3168 New->setPackExpansion(isPackExpansion);
3169 break;
3170 }
3171 case attr::ObjCRuntimeName: {
3172 bool isImplicit = Record.readInt();
3173 bool isPackExpansion = Record.readInt();
3174 std::string metadataName= Record.readString();
3175 New = new (Context) ObjCRuntimeNameAttr(Context, Info, metadataName);
3176 New->setImplicit(isImplicit);
3177 New->setPackExpansion(isPackExpansion);
3178 break;
3179 }
3180 case attr::ObjCRuntimeVisible: {
3181 bool isImplicit = Record.readInt();
3182 bool isPackExpansion = Record.readInt();
3183 New = new (Context) ObjCRuntimeVisibleAttr(Context, Info);
3184 New->setImplicit(isImplicit);
3185 New->setPackExpansion(isPackExpansion);
3186 break;
3187 }
3188 case attr::ObjCSubclassingRestricted: {
3189 bool isInherited = Record.readInt();
3190 bool isImplicit = Record.readInt();
3191 bool isPackExpansion = Record.readInt();
3192 New = new (Context) ObjCSubclassingRestrictedAttr(Context, Info);
3193 cast<InheritableAttr>(New)->setInherited(isInherited);
3194 New->setImplicit(isImplicit);
3195 New->setPackExpansion(isPackExpansion);
3196 break;
3197 }
3198 case attr::OpenCLAccess: {
3199 bool isImplicit = Record.readInt();
3200 bool isPackExpansion = Record.readInt();
3201 New = new (Context) OpenCLAccessAttr(Context, Info);
3202 New->setImplicit(isImplicit);
3203 New->setPackExpansion(isPackExpansion);
3204 break;
3205 }
3206 case attr::OpenCLConstantAddressSpace: {
3207 bool isImplicit = Record.readInt();
3208 bool isPackExpansion = Record.readInt();
3209 New = new (Context) OpenCLConstantAddressSpaceAttr(Context, Info);
3210 New->setImplicit(isImplicit);
3211 New->setPackExpansion(isPackExpansion);
3212 break;
3213 }
3214 case attr::OpenCLGenericAddressSpace: {
3215 bool isImplicit = Record.readInt();
3216 bool isPackExpansion = Record.readInt();
3217 New = new (Context) OpenCLGenericAddressSpaceAttr(Context, Info);
3218 New->setImplicit(isImplicit);
3219 New->setPackExpansion(isPackExpansion);
3220 break;
3221 }
3222 case attr::OpenCLGlobalAddressSpace: {
3223 bool isImplicit = Record.readInt();
3224 bool isPackExpansion = Record.readInt();
3225 New = new (Context) OpenCLGlobalAddressSpaceAttr(Context, Info);
3226 New->setImplicit(isImplicit);
3227 New->setPackExpansion(isPackExpansion);
3228 break;
3229 }
3230 case attr::OpenCLGlobalDeviceAddressSpace: {
3231 bool isImplicit = Record.readInt();
3232 bool isPackExpansion = Record.readInt();
3233 New = new (Context) OpenCLGlobalDeviceAddressSpaceAttr(Context, Info);
3234 New->setImplicit(isImplicit);
3235 New->setPackExpansion(isPackExpansion);
3236 break;
3237 }
3238 case attr::OpenCLGlobalHostAddressSpace: {
3239 bool isImplicit = Record.readInt();
3240 bool isPackExpansion = Record.readInt();
3241 New = new (Context) OpenCLGlobalHostAddressSpaceAttr(Context, Info);
3242 New->setImplicit(isImplicit);
3243 New->setPackExpansion(isPackExpansion);
3244 break;
3245 }
3246 case attr::OpenCLIntelReqdSubGroupSize: {
3247 bool isInherited = Record.readInt();
3248 bool isImplicit = Record.readInt();
3249 bool isPackExpansion = Record.readInt();
3250 unsigned subGroupSize = Record.readInt();
3251 New = new (Context) OpenCLIntelReqdSubGroupSizeAttr(Context, Info, subGroupSize);
3252 cast<InheritableAttr>(New)->setInherited(isInherited);
3253 New->setImplicit(isImplicit);
3254 New->setPackExpansion(isPackExpansion);
3255 break;
3256 }
3257 case attr::OpenCLKernel: {
3258 bool isInherited = Record.readInt();
3259 bool isImplicit = Record.readInt();
3260 bool isPackExpansion = Record.readInt();
3261 New = new (Context) OpenCLKernelAttr(Context, Info);
3262 cast<InheritableAttr>(New)->setInherited(isInherited);
3263 New->setImplicit(isImplicit);
3264 New->setPackExpansion(isPackExpansion);
3265 break;
3266 }
3267 case attr::OpenCLLocalAddressSpace: {
3268 bool isImplicit = Record.readInt();
3269 bool isPackExpansion = Record.readInt();
3270 New = new (Context) OpenCLLocalAddressSpaceAttr(Context, Info);
3271 New->setImplicit(isImplicit);
3272 New->setPackExpansion(isPackExpansion);
3273 break;
3274 }
3275 case attr::OpenCLPrivateAddressSpace: {
3276 bool isImplicit = Record.readInt();
3277 bool isPackExpansion = Record.readInt();
3278 New = new (Context) OpenCLPrivateAddressSpaceAttr(Context, Info);
3279 New->setImplicit(isImplicit);
3280 New->setPackExpansion(isPackExpansion);
3281 break;
3282 }
3283 case attr::OpenCLUnrollHint: {
3284 bool isImplicit = Record.readInt();
3285 bool isPackExpansion = Record.readInt();
3286 unsigned unrollHint = Record.readInt();
3287 New = new (Context) OpenCLUnrollHintAttr(Context, Info, unrollHint);
3288 New->setImplicit(isImplicit);
3289 New->setPackExpansion(isPackExpansion);
3290 break;
3291 }
3292 case attr::OptimizeNone: {
3293 bool isInherited = Record.readInt();
3294 bool isImplicit = Record.readInt();
3295 bool isPackExpansion = Record.readInt();
3296 New = new (Context) OptimizeNoneAttr(Context, Info);
3297 cast<InheritableAttr>(New)->setInherited(isInherited);
3298 New->setImplicit(isImplicit);
3299 New->setPackExpansion(isPackExpansion);
3300 break;
3301 }
3302 case attr::Overloadable: {
3303 bool isImplicit = Record.readInt();
3304 bool isPackExpansion = Record.readInt();
3305 New = new (Context) OverloadableAttr(Context, Info);
3306 New->setImplicit(isImplicit);
3307 New->setPackExpansion(isPackExpansion);
3308 break;
3309 }
3310 case attr::Override: {
3311 bool isInherited = Record.readInt();
3312 bool isImplicit = Record.readInt();
3313 bool isPackExpansion = Record.readInt();
3314 New = new (Context) OverrideAttr(Context, Info);
3315 cast<InheritableAttr>(New)->setInherited(isInherited);
3316 New->setImplicit(isImplicit);
3317 New->setPackExpansion(isPackExpansion);
3318 break;
3319 }
3320 case attr::Owner: {
3321 bool isInherited = Record.readInt();
3322 bool isImplicit = Record.readInt();
3323 bool isPackExpansion = Record.readInt();
3324 TypeSourceInfo * derefType = Record.readTypeSourceInfo();
3325 New = new (Context) OwnerAttr(Context, Info, derefType);
3326 cast<InheritableAttr>(New)->setInherited(isInherited);
3327 New->setImplicit(isImplicit);
3328 New->setPackExpansion(isPackExpansion);
3329 break;
3330 }
3331 case attr::Ownership: {
3332 bool isInherited = Record.readInt();
3333 bool isImplicit = Record.readInt();
3334 bool isPackExpansion = Record.readInt();
3335 IdentifierInfo * module = Record.readIdentifier();
3336 unsigned argsSize = Record.readInt();
3337 SmallVector<ParamIdx, 4> args;
3338 args.reserve(argsSize);
3339 for (unsigned i = 0; i != argsSize; ++i)
3340 args.push_back(ParamIdx::deserialize(Record.readInt()));
3341 New = new (Context) OwnershipAttr(Context, Info, module, args.data(), argsSize);
3342 cast<InheritableAttr>(New)->setInherited(isInherited);
3343 New->setImplicit(isImplicit);
3344 New->setPackExpansion(isPackExpansion);
3345 break;
3346 }
3347 case attr::Packed: {
3348 bool isInherited = Record.readInt();
3349 bool isImplicit = Record.readInt();
3350 bool isPackExpansion = Record.readInt();
3351 New = new (Context) PackedAttr(Context, Info);
3352 cast<InheritableAttr>(New)->setInherited(isInherited);
3353 New->setImplicit(isImplicit);
3354 New->setPackExpansion(isPackExpansion);
3355 break;
3356 }
3357 case attr::ParamTypestate: {
3358 bool isInherited = Record.readInt();
3359 bool isImplicit = Record.readInt();
3360 bool isPackExpansion = Record.readInt();
3361 ParamTypestateAttr::ConsumedState paramState(static_cast<ParamTypestateAttr::ConsumedState>(Record.readInt()));
3362 New = new (Context) ParamTypestateAttr(Context, Info, paramState);
3363 cast<InheritableAttr>(New)->setInherited(isInherited);
3364 New->setImplicit(isImplicit);
3365 New->setPackExpansion(isPackExpansion);
3366 break;
3367 }
3368 case attr::Pascal: {
3369 bool isInherited = Record.readInt();
3370 bool isImplicit = Record.readInt();
3371 bool isPackExpansion = Record.readInt();
3372 New = new (Context) PascalAttr(Context, Info);
3373 cast<InheritableAttr>(New)->setInherited(isInherited);
3374 New->setImplicit(isImplicit);
3375 New->setPackExpansion(isPackExpansion);
3376 break;
3377 }
3378 case attr::PassObjectSize: {
3379 bool isInherited = Record.readInt();
3380 bool isImplicit = Record.readInt();
3381 bool isPackExpansion = Record.readInt();
3382 int type = Record.readInt();
3383 New = new (Context) PassObjectSizeAttr(Context, Info, type);
3384 cast<InheritableAttr>(New)->setInherited(isInherited);
3385 New->setImplicit(isImplicit);
3386 New->setPackExpansion(isPackExpansion);
3387 break;
3388 }
3389 case attr::PatchableFunctionEntry: {
3390 bool isInherited = Record.readInt();
3391 bool isImplicit = Record.readInt();
3392 bool isPackExpansion = Record.readInt();
3393 unsigned count = Record.readInt();
3394 int offset = Record.readInt();
3395 New = new (Context) PatchableFunctionEntryAttr(Context, Info, count, offset);
3396 cast<InheritableAttr>(New)->setInherited(isInherited);
3397 New->setImplicit(isImplicit);
3398 New->setPackExpansion(isPackExpansion);
3399 break;
3400 }
3401 case attr::Pcs: {
3402 bool isInherited = Record.readInt();
3403 bool isImplicit = Record.readInt();
3404 bool isPackExpansion = Record.readInt();
3405 PcsAttr::PCSType pCS(static_cast<PcsAttr::PCSType>(Record.readInt()));
3406 New = new (Context) PcsAttr(Context, Info, pCS);
3407 cast<InheritableAttr>(New)->setInherited(isInherited);
3408 New->setImplicit(isImplicit);
3409 New->setPackExpansion(isPackExpansion);
3410 break;
3411 }
3412 case attr::Pointer: {
3413 bool isInherited = Record.readInt();
3414 bool isImplicit = Record.readInt();
3415 bool isPackExpansion = Record.readInt();
3416 TypeSourceInfo * derefType = Record.readTypeSourceInfo();
3417 New = new (Context) PointerAttr(Context, Info, derefType);
3418 cast<InheritableAttr>(New)->setInherited(isInherited);
3419 New->setImplicit(isImplicit);
3420 New->setPackExpansion(isPackExpansion);
3421 break;
3422 }
3423 case attr::PragmaClangBSSSection: {
3424 bool isInherited = Record.readInt();
3425 bool isImplicit = Record.readInt();
3426 bool isPackExpansion = Record.readInt();
3427 std::string name= Record.readString();
3428 New = new (Context) PragmaClangBSSSectionAttr(Context, Info, name);
3429 cast<InheritableAttr>(New)->setInherited(isInherited);
3430 New->setImplicit(isImplicit);
3431 New->setPackExpansion(isPackExpansion);
3432 break;
3433 }
3434 case attr::PragmaClangDataSection: {
3435 bool isInherited = Record.readInt();
3436 bool isImplicit = Record.readInt();
3437 bool isPackExpansion = Record.readInt();
3438 std::string name= Record.readString();
3439 New = new (Context) PragmaClangDataSectionAttr(Context, Info, name);
3440 cast<InheritableAttr>(New)->setInherited(isInherited);
3441 New->setImplicit(isImplicit);
3442 New->setPackExpansion(isPackExpansion);
3443 break;
3444 }
3445 case attr::PragmaClangRelroSection: {
3446 bool isInherited = Record.readInt();
3447 bool isImplicit = Record.readInt();
3448 bool isPackExpansion = Record.readInt();
3449 std::string name= Record.readString();
3450 New = new (Context) PragmaClangRelroSectionAttr(Context, Info, name);
3451 cast<InheritableAttr>(New)->setInherited(isInherited);
3452 New->setImplicit(isImplicit);
3453 New->setPackExpansion(isPackExpansion);
3454 break;
3455 }
3456 case attr::PragmaClangRodataSection: {
3457 bool isInherited = Record.readInt();
3458 bool isImplicit = Record.readInt();
3459 bool isPackExpansion = Record.readInt();
3460 std::string name= Record.readString();
3461 New = new (Context) PragmaClangRodataSectionAttr(Context, Info, name);
3462 cast<InheritableAttr>(New)->setInherited(isInherited);
3463 New->setImplicit(isImplicit);
3464 New->setPackExpansion(isPackExpansion);
3465 break;
3466 }
3467 case attr::PragmaClangTextSection: {
3468 bool isInherited = Record.readInt();
3469 bool isImplicit = Record.readInt();
3470 bool isPackExpansion = Record.readInt();
3471 std::string name= Record.readString();
3472 New = new (Context) PragmaClangTextSectionAttr(Context, Info, name);
3473 cast<InheritableAttr>(New)->setInherited(isInherited);
3474 New->setImplicit(isImplicit);
3475 New->setPackExpansion(isPackExpansion);
3476 break;
3477 }
3478 case attr::PreferredName: {
3479 bool isInherited = Record.readInt();
3480 bool isImplicit = Record.readInt();
3481 bool isPackExpansion = Record.readInt();
3482 TypeSourceInfo * typedefType = Record.readTypeSourceInfo();
3483 New = new (Context) PreferredNameAttr(Context, Info, typedefType);
3484 cast<InheritableAttr>(New)->setInherited(isInherited);
3485 New->setImplicit(isImplicit);
3486 New->setPackExpansion(isPackExpansion);
3487 break;
3488 }
3489 case attr::PreferredType: {
3490 bool isInherited = Record.readInt();
3491 bool isImplicit = Record.readInt();
3492 bool isPackExpansion = Record.readInt();
3493 TypeSourceInfo * type = Record.readTypeSourceInfo();
3494 New = new (Context) PreferredTypeAttr(Context, Info, type);
3495 cast<InheritableAttr>(New)->setInherited(isInherited);
3496 New->setImplicit(isImplicit);
3497 New->setPackExpansion(isPackExpansion);
3498 break;
3499 }
3500 case attr::PreserveAll: {
3501 bool isInherited = Record.readInt();
3502 bool isImplicit = Record.readInt();
3503 bool isPackExpansion = Record.readInt();
3504 New = new (Context) PreserveAllAttr(Context, Info);
3505 cast<InheritableAttr>(New)->setInherited(isInherited);
3506 New->setImplicit(isImplicit);
3507 New->setPackExpansion(isPackExpansion);
3508 break;
3509 }
3510 case attr::PreserveMost: {
3511 bool isInherited = Record.readInt();
3512 bool isImplicit = Record.readInt();
3513 bool isPackExpansion = Record.readInt();
3514 New = new (Context) PreserveMostAttr(Context, Info);
3515 cast<InheritableAttr>(New)->setInherited(isInherited);
3516 New->setImplicit(isImplicit);
3517 New->setPackExpansion(isPackExpansion);
3518 break;
3519 }
3520 case attr::PreserveNone: {
3521 bool isInherited = Record.readInt();
3522 bool isImplicit = Record.readInt();
3523 bool isPackExpansion = Record.readInt();
3524 New = new (Context) PreserveNoneAttr(Context, Info);
3525 cast<InheritableAttr>(New)->setInherited(isInherited);
3526 New->setImplicit(isImplicit);
3527 New->setPackExpansion(isPackExpansion);
3528 break;
3529 }
3530 case attr::PtGuardedBy: {
3531 bool isInherited = Record.readInt();
3532 bool isImplicit = Record.readInt();
3533 bool isPackExpansion = Record.readInt();
3534 Expr * arg = Record.readExpr();
3535 New = new (Context) PtGuardedByAttr(Context, Info, arg);
3536 cast<InheritableAttr>(New)->setInherited(isInherited);
3537 New->setImplicit(isImplicit);
3538 New->setPackExpansion(isPackExpansion);
3539 break;
3540 }
3541 case attr::PtGuardedVar: {
3542 bool isInherited = Record.readInt();
3543 bool isImplicit = Record.readInt();
3544 bool isPackExpansion = Record.readInt();
3545 New = new (Context) PtGuardedVarAttr(Context, Info);
3546 cast<InheritableAttr>(New)->setInherited(isInherited);
3547 New->setImplicit(isImplicit);
3548 New->setPackExpansion(isPackExpansion);
3549 break;
3550 }
3551 case attr::Ptr32: {
3552 bool isImplicit = Record.readInt();
3553 bool isPackExpansion = Record.readInt();
3554 New = new (Context) Ptr32Attr(Context, Info);
3555 New->setImplicit(isImplicit);
3556 New->setPackExpansion(isPackExpansion);
3557 break;
3558 }
3559 case attr::Ptr64: {
3560 bool isImplicit = Record.readInt();
3561 bool isPackExpansion = Record.readInt();
3562 New = new (Context) Ptr64Attr(Context, Info);
3563 New->setImplicit(isImplicit);
3564 New->setPackExpansion(isPackExpansion);
3565 break;
3566 }
3567 case attr::Pure: {
3568 bool isInherited = Record.readInt();
3569 bool isImplicit = Record.readInt();
3570 bool isPackExpansion = Record.readInt();
3571 New = new (Context) PureAttr(Context, Info);
3572 cast<InheritableAttr>(New)->setInherited(isInherited);
3573 New->setImplicit(isImplicit);
3574 New->setPackExpansion(isPackExpansion);
3575 break;
3576 }
3577 case attr::RISCVInterrupt: {
3578 bool isInherited = Record.readInt();
3579 bool isImplicit = Record.readInt();
3580 bool isPackExpansion = Record.readInt();
3581 RISCVInterruptAttr::InterruptType interrupt(static_cast<RISCVInterruptAttr::InterruptType>(Record.readInt()));
3582 New = new (Context) RISCVInterruptAttr(Context, Info, interrupt);
3583 cast<InheritableAttr>(New)->setInherited(isInherited);
3584 New->setImplicit(isImplicit);
3585 New->setPackExpansion(isPackExpansion);
3586 break;
3587 }
3588 case attr::RISCVVectorCC: {
3589 bool isInherited = Record.readInt();
3590 bool isImplicit = Record.readInt();
3591 bool isPackExpansion = Record.readInt();
3592 New = new (Context) RISCVVectorCCAttr(Context, Info);
3593 cast<InheritableAttr>(New)->setInherited(isInherited);
3594 New->setImplicit(isImplicit);
3595 New->setPackExpansion(isPackExpansion);
3596 break;
3597 }
3598 case attr::RandomizeLayout: {
3599 bool isInherited = Record.readInt();
3600 bool isImplicit = Record.readInt();
3601 bool isPackExpansion = Record.readInt();
3602 New = new (Context) RandomizeLayoutAttr(Context, Info);
3603 cast<InheritableAttr>(New)->setInherited(isInherited);
3604 New->setImplicit(isImplicit);
3605 New->setPackExpansion(isPackExpansion);
3606 break;
3607 }
3608 case attr::ReadOnlyPlacement: {
3609 bool isInherited = Record.readInt();
3610 bool isImplicit = Record.readInt();
3611 bool isPackExpansion = Record.readInt();
3612 New = new (Context) ReadOnlyPlacementAttr(Context, Info);
3613 cast<InheritableAttr>(New)->setInherited(isInherited);
3614 New->setImplicit(isImplicit);
3615 New->setPackExpansion(isPackExpansion);
3616 break;
3617 }
3618 case attr::RegCall: {
3619 bool isInherited = Record.readInt();
3620 bool isImplicit = Record.readInt();
3621 bool isPackExpansion = Record.readInt();
3622 New = new (Context) RegCallAttr(Context, Info);
3623 cast<InheritableAttr>(New)->setInherited(isInherited);
3624 New->setImplicit(isImplicit);
3625 New->setPackExpansion(isPackExpansion);
3626 break;
3627 }
3628 case attr::Reinitializes: {
3629 bool isInherited = Record.readInt();
3630 bool isImplicit = Record.readInt();
3631 bool isPackExpansion = Record.readInt();
3632 New = new (Context) ReinitializesAttr(Context, Info);
3633 cast<InheritableAttr>(New)->setInherited(isInherited);
3634 New->setImplicit(isImplicit);
3635 New->setPackExpansion(isPackExpansion);
3636 break;
3637 }
3638 case attr::ReleaseCapability: {
3639 bool isInherited = Record.readInt();
3640 bool isImplicit = Record.readInt();
3641 bool isPackExpansion = Record.readInt();
3642 unsigned argsSize = Record.readInt();
3643 SmallVector<Expr *, 4> args;
3644 args.reserve(argsSize);
3645 for (unsigned i = 0; i != argsSize; ++i)
3646 args.push_back(Record.readExpr());
3647 New = new (Context) ReleaseCapabilityAttr(Context, Info, args.data(), argsSize);
3648 cast<InheritableAttr>(New)->setInherited(isInherited);
3649 New->setImplicit(isImplicit);
3650 New->setPackExpansion(isPackExpansion);
3651 break;
3652 }
3653 case attr::ReleaseHandle: {
3654 bool isInherited = Record.readInt();
3655 bool isImplicit = Record.readInt();
3656 bool isPackExpansion = Record.readInt();
3657 std::string handleType= Record.readString();
3658 New = new (Context) ReleaseHandleAttr(Context, Info, handleType);
3659 cast<InheritableAttr>(New)->setInherited(isInherited);
3660 New->setImplicit(isImplicit);
3661 New->setPackExpansion(isPackExpansion);
3662 break;
3663 }
3664 case attr::ReqdWorkGroupSize: {
3665 bool isInherited = Record.readInt();
3666 bool isImplicit = Record.readInt();
3667 bool isPackExpansion = Record.readInt();
3668 unsigned xDim = Record.readInt();
3669 unsigned yDim = Record.readInt();
3670 unsigned zDim = Record.readInt();
3671 New = new (Context) ReqdWorkGroupSizeAttr(Context, Info, xDim, yDim, zDim);
3672 cast<InheritableAttr>(New)->setInherited(isInherited);
3673 New->setImplicit(isImplicit);
3674 New->setPackExpansion(isPackExpansion);
3675 break;
3676 }
3677 case attr::RequiresCapability: {
3678 bool isInherited = Record.readInt();
3679 bool isImplicit = Record.readInt();
3680 bool isPackExpansion = Record.readInt();
3681 unsigned argsSize = Record.readInt();
3682 SmallVector<Expr *, 4> args;
3683 args.reserve(argsSize);
3684 for (unsigned i = 0; i != argsSize; ++i)
3685 args.push_back(Record.readExpr());
3686 New = new (Context) RequiresCapabilityAttr(Context, Info, args.data(), argsSize);
3687 cast<InheritableAttr>(New)->setInherited(isInherited);
3688 New->setImplicit(isImplicit);
3689 New->setPackExpansion(isPackExpansion);
3690 break;
3691 }
3692 case attr::Restrict: {
3693 bool isInherited = Record.readInt();
3694 bool isImplicit = Record.readInt();
3695 bool isPackExpansion = Record.readInt();
3696 New = new (Context) RestrictAttr(Context, Info);
3697 cast<InheritableAttr>(New)->setInherited(isInherited);
3698 New->setImplicit(isImplicit);
3699 New->setPackExpansion(isPackExpansion);
3700 break;
3701 }
3702 case attr::Retain: {
3703 bool isInherited = Record.readInt();
3704 bool isImplicit = Record.readInt();
3705 bool isPackExpansion = Record.readInt();
3706 New = new (Context) RetainAttr(Context, Info);
3707 cast<InheritableAttr>(New)->setInherited(isInherited);
3708 New->setImplicit(isImplicit);
3709 New->setPackExpansion(isPackExpansion);
3710 break;
3711 }
3712 case attr::ReturnTypestate: {
3713 bool isInherited = Record.readInt();
3714 bool isImplicit = Record.readInt();
3715 bool isPackExpansion = Record.readInt();
3716 ReturnTypestateAttr::ConsumedState state(static_cast<ReturnTypestateAttr::ConsumedState>(Record.readInt()));
3717 New = new (Context) ReturnTypestateAttr(Context, Info, state);
3718 cast<InheritableAttr>(New)->setInherited(isInherited);
3719 New->setImplicit(isImplicit);
3720 New->setPackExpansion(isPackExpansion);
3721 break;
3722 }
3723 case attr::ReturnsNonNull: {
3724 bool isInherited = Record.readInt();
3725 bool isImplicit = Record.readInt();
3726 bool isPackExpansion = Record.readInt();
3727 New = new (Context) ReturnsNonNullAttr(Context, Info);
3728 cast<InheritableAttr>(New)->setInherited(isInherited);
3729 New->setImplicit(isImplicit);
3730 New->setPackExpansion(isPackExpansion);
3731 break;
3732 }
3733 case attr::ReturnsTwice: {
3734 bool isInherited = Record.readInt();
3735 bool isImplicit = Record.readInt();
3736 bool isPackExpansion = Record.readInt();
3737 New = new (Context) ReturnsTwiceAttr(Context, Info);
3738 cast<InheritableAttr>(New)->setInherited(isInherited);
3739 New->setImplicit(isImplicit);
3740 New->setPackExpansion(isPackExpansion);
3741 break;
3742 }
3743 case attr::SPtr: {
3744 bool isImplicit = Record.readInt();
3745 bool isPackExpansion = Record.readInt();
3746 New = new (Context) SPtrAttr(Context, Info);
3747 New->setImplicit(isImplicit);
3748 New->setPackExpansion(isPackExpansion);
3749 break;
3750 }
3751 case attr::SYCLKernel: {
3752 bool isInherited = Record.readInt();
3753 bool isImplicit = Record.readInt();
3754 bool isPackExpansion = Record.readInt();
3755 New = new (Context) SYCLKernelAttr(Context, Info);
3756 cast<InheritableAttr>(New)->setInherited(isInherited);
3757 New->setImplicit(isImplicit);
3758 New->setPackExpansion(isPackExpansion);
3759 break;
3760 }
3761 case attr::SYCLKernelEntryPoint: {
3762 bool isInherited = Record.readInt();
3763 bool isImplicit = Record.readInt();
3764 bool isPackExpansion = Record.readInt();
3765 TypeSourceInfo * kernelName = Record.readTypeSourceInfo();
3766 bool invalid = Record.readInt();
3767 New = new (Context) SYCLKernelEntryPointAttr(Context, Info, kernelName, invalid);
3768 cast<InheritableAttr>(New)->setInherited(isInherited);
3769 New->setImplicit(isImplicit);
3770 New->setPackExpansion(isPackExpansion);
3771 break;
3772 }
3773 case attr::SYCLSpecialClass: {
3774 bool isInherited = Record.readInt();
3775 bool isImplicit = Record.readInt();
3776 bool isPackExpansion = Record.readInt();
3777 New = new (Context) SYCLSpecialClassAttr(Context, Info);
3778 cast<InheritableAttr>(New)->setInherited(isInherited);
3779 New->setImplicit(isImplicit);
3780 New->setPackExpansion(isPackExpansion);
3781 break;
3782 }
3783 case attr::ScopedLockable: {
3784 bool isInherited = Record.readInt();
3785 bool isImplicit = Record.readInt();
3786 bool isPackExpansion = Record.readInt();
3787 New = new (Context) ScopedLockableAttr(Context, Info);
3788 cast<InheritableAttr>(New)->setInherited(isInherited);
3789 New->setImplicit(isImplicit);
3790 New->setPackExpansion(isPackExpansion);
3791 break;
3792 }
3793 case attr::Section: {
3794 bool isInherited = Record.readInt();
3795 bool isImplicit = Record.readInt();
3796 bool isPackExpansion = Record.readInt();
3797 std::string name= Record.readString();
3798 New = new (Context) SectionAttr(Context, Info, name);
3799 cast<InheritableAttr>(New)->setInherited(isInherited);
3800 New->setImplicit(isImplicit);
3801 New->setPackExpansion(isPackExpansion);
3802 break;
3803 }
3804 case attr::SelectAny: {
3805 bool isInherited = Record.readInt();
3806 bool isImplicit = Record.readInt();
3807 bool isPackExpansion = Record.readInt();
3808 New = new (Context) SelectAnyAttr(Context, Info);
3809 cast<InheritableAttr>(New)->setInherited(isInherited);
3810 New->setImplicit(isImplicit);
3811 New->setPackExpansion(isPackExpansion);
3812 break;
3813 }
3814 case attr::Sentinel: {
3815 bool isInherited = Record.readInt();
3816 bool isImplicit = Record.readInt();
3817 bool isPackExpansion = Record.readInt();
3818 int sentinel = Record.readInt();
3819 int nullPos = Record.readInt();
3820 New = new (Context) SentinelAttr(Context, Info, sentinel, nullPos);
3821 cast<InheritableAttr>(New)->setInherited(isInherited);
3822 New->setImplicit(isImplicit);
3823 New->setPackExpansion(isPackExpansion);
3824 break;
3825 }
3826 case attr::SetTypestate: {
3827 bool isInherited = Record.readInt();
3828 bool isImplicit = Record.readInt();
3829 bool isPackExpansion = Record.readInt();
3830 SetTypestateAttr::ConsumedState newState(static_cast<SetTypestateAttr::ConsumedState>(Record.readInt()));
3831 New = new (Context) SetTypestateAttr(Context, Info, newState);
3832 cast<InheritableAttr>(New)->setInherited(isInherited);
3833 New->setImplicit(isImplicit);
3834 New->setPackExpansion(isPackExpansion);
3835 break;
3836 }
3837 case attr::SharedTrylockFunction: {
3838 bool isInherited = Record.readInt();
3839 bool isImplicit = Record.readInt();
3840 bool isPackExpansion = Record.readInt();
3841 Expr * successValue = Record.readExpr();
3842 unsigned argsSize = Record.readInt();
3843 SmallVector<Expr *, 4> args;
3844 args.reserve(argsSize);
3845 for (unsigned i = 0; i != argsSize; ++i)
3846 args.push_back(Record.readExpr());
3847 New = new (Context) SharedTrylockFunctionAttr(Context, Info, successValue, args.data(), argsSize);
3848 cast<InheritableAttr>(New)->setInherited(isInherited);
3849 New->setImplicit(isImplicit);
3850 New->setPackExpansion(isPackExpansion);
3851 break;
3852 }
3853 case attr::SizedBy: {
3854 bool isInherited = Record.readInt();
3855 bool isImplicit = Record.readInt();
3856 bool isPackExpansion = Record.readInt();
3857 Expr * size = Record.readExpr();
3858 int nestedLevel = Record.readInt();
3859 New = new (Context) SizedByAttr(Context, Info, size, nestedLevel);
3860 cast<InheritableAttr>(New)->setInherited(isInherited);
3861 New->setImplicit(isImplicit);
3862 New->setPackExpansion(isPackExpansion);
3863 break;
3864 }
3865 case attr::SizedByOrNull: {
3866 bool isInherited = Record.readInt();
3867 bool isImplicit = Record.readInt();
3868 bool isPackExpansion = Record.readInt();
3869 Expr * size = Record.readExpr();
3870 int nestedLevel = Record.readInt();
3871 New = new (Context) SizedByOrNullAttr(Context, Info, size, nestedLevel);
3872 cast<InheritableAttr>(New)->setInherited(isInherited);
3873 New->setImplicit(isImplicit);
3874 New->setPackExpansion(isPackExpansion);
3875 break;
3876 }
3877 case attr::SpeculativeLoadHardening: {
3878 bool isInherited = Record.readInt();
3879 bool isImplicit = Record.readInt();
3880 bool isPackExpansion = Record.readInt();
3881 New = new (Context) SpeculativeLoadHardeningAttr(Context, Info);
3882 cast<InheritableAttr>(New)->setInherited(isInherited);
3883 New->setImplicit(isImplicit);
3884 New->setPackExpansion(isPackExpansion);
3885 break;
3886 }
3887 case attr::StandaloneDebug: {
3888 bool isInherited = Record.readInt();
3889 bool isImplicit = Record.readInt();
3890 bool isPackExpansion = Record.readInt();
3891 New = new (Context) StandaloneDebugAttr(Context, Info);
3892 cast<InheritableAttr>(New)->setInherited(isInherited);
3893 New->setImplicit(isImplicit);
3894 New->setPackExpansion(isPackExpansion);
3895 break;
3896 }
3897 case attr::StdCall: {
3898 bool isInherited = Record.readInt();
3899 bool isImplicit = Record.readInt();
3900 bool isPackExpansion = Record.readInt();
3901 New = new (Context) StdCallAttr(Context, Info);
3902 cast<InheritableAttr>(New)->setInherited(isInherited);
3903 New->setImplicit(isImplicit);
3904 New->setPackExpansion(isPackExpansion);
3905 break;
3906 }
3907 case attr::StrictFP: {
3908 bool isInherited = Record.readInt();
3909 bool isImplicit = Record.readInt();
3910 bool isPackExpansion = Record.readInt();
3911 New = new (Context) StrictFPAttr(Context, Info);
3912 cast<InheritableAttr>(New)->setInherited(isInherited);
3913 New->setImplicit(isImplicit);
3914 New->setPackExpansion(isPackExpansion);
3915 break;
3916 }
3917 case attr::StrictGuardStackCheck: {
3918 bool isInherited = Record.readInt();
3919 bool isImplicit = Record.readInt();
3920 bool isPackExpansion = Record.readInt();
3921 New = new (Context) StrictGuardStackCheckAttr(Context, Info);
3922 cast<InheritableAttr>(New)->setInherited(isInherited);
3923 New->setImplicit(isImplicit);
3924 New->setPackExpansion(isPackExpansion);
3925 break;
3926 }
3927 case attr::Suppress: {
3928 bool isInherited = Record.readInt();
3929 bool isImplicit = Record.readInt();
3930 bool isPackExpansion = Record.readInt();
3931 unsigned diagnosticIdentifiersSize = Record.readInt();
3932 SmallVector<StringRef, 4> diagnosticIdentifiers;
3933 diagnosticIdentifiers.reserve(diagnosticIdentifiersSize);
3934 SmallVector<std::string, 4> diagnosticIdentifiersStorage;
3935 diagnosticIdentifiersStorage.reserve(diagnosticIdentifiersSize);
3936 for (unsigned i = 0; i != diagnosticIdentifiersSize; ++i)
3937 diagnosticIdentifiersStorage.push_back(Record.readString());
3938 for (unsigned i = 0; i != diagnosticIdentifiersSize; ++i)
3939 diagnosticIdentifiers.push_back(diagnosticIdentifiersStorage[i]);
3940 New = new (Context) SuppressAttr(Context, Info, diagnosticIdentifiers.data(), diagnosticIdentifiersSize);
3941 cast<InheritableAttr>(New)->setInherited(isInherited);
3942 New->setImplicit(isImplicit);
3943 New->setPackExpansion(isPackExpansion);
3944 break;
3945 }
3946 case attr::SwiftAsync: {
3947 bool isInherited = Record.readInt();
3948 bool isImplicit = Record.readInt();
3949 bool isPackExpansion = Record.readInt();
3950 SwiftAsyncAttr::Kind kind(static_cast<SwiftAsyncAttr::Kind>(Record.readInt()));
3951 ParamIdx completionHandlerIndex = ParamIdx::deserialize(Record.readInt());
3952 New = new (Context) SwiftAsyncAttr(Context, Info, kind, completionHandlerIndex);
3953 cast<InheritableAttr>(New)->setInherited(isInherited);
3954 New->setImplicit(isImplicit);
3955 New->setPackExpansion(isPackExpansion);
3956 break;
3957 }
3958 case attr::SwiftAsyncCall: {
3959 bool isInherited = Record.readInt();
3960 bool isImplicit = Record.readInt();
3961 bool isPackExpansion = Record.readInt();
3962 New = new (Context) SwiftAsyncCallAttr(Context, Info);
3963 cast<InheritableAttr>(New)->setInherited(isInherited);
3964 New->setImplicit(isImplicit);
3965 New->setPackExpansion(isPackExpansion);
3966 break;
3967 }
3968 case attr::SwiftAsyncContext: {
3969 bool isInherited = Record.readInt();
3970 bool isImplicit = Record.readInt();
3971 bool isPackExpansion = Record.readInt();
3972 New = new (Context) SwiftAsyncContextAttr(Context, Info);
3973 cast<InheritableAttr>(New)->setInherited(isInherited);
3974 New->setImplicit(isImplicit);
3975 New->setPackExpansion(isPackExpansion);
3976 break;
3977 }
3978 case attr::SwiftAsyncError: {
3979 bool isInherited = Record.readInt();
3980 bool isImplicit = Record.readInt();
3981 bool isPackExpansion = Record.readInt();
3982 SwiftAsyncErrorAttr::ConventionKind convention(static_cast<SwiftAsyncErrorAttr::ConventionKind>(Record.readInt()));
3983 unsigned handlerParamIdx = Record.readInt();
3984 New = new (Context) SwiftAsyncErrorAttr(Context, Info, convention, handlerParamIdx);
3985 cast<InheritableAttr>(New)->setInherited(isInherited);
3986 New->setImplicit(isImplicit);
3987 New->setPackExpansion(isPackExpansion);
3988 break;
3989 }
3990 case attr::SwiftAsyncName: {
3991 bool isInherited = Record.readInt();
3992 bool isImplicit = Record.readInt();
3993 bool isPackExpansion = Record.readInt();
3994 std::string name= Record.readString();
3995 New = new (Context) SwiftAsyncNameAttr(Context, Info, name);
3996 cast<InheritableAttr>(New)->setInherited(isInherited);
3997 New->setImplicit(isImplicit);
3998 New->setPackExpansion(isPackExpansion);
3999 break;
4000 }
4001 case attr::SwiftAttr: {
4002 bool isInherited = Record.readInt();
4003 bool isImplicit = Record.readInt();
4004 bool isPackExpansion = Record.readInt();
4005 std::string attribute= Record.readString();
4006 New = new (Context) SwiftAttrAttr(Context, Info, attribute);
4007 cast<InheritableAttr>(New)->setInherited(isInherited);
4008 New->setImplicit(isImplicit);
4009 New->setPackExpansion(isPackExpansion);
4010 break;
4011 }
4012 case attr::SwiftBridge: {
4013 bool isInherited = Record.readInt();
4014 bool isImplicit = Record.readInt();
4015 bool isPackExpansion = Record.readInt();
4016 std::string swiftType= Record.readString();
4017 New = new (Context) SwiftBridgeAttr(Context, Info, swiftType);
4018 cast<InheritableAttr>(New)->setInherited(isInherited);
4019 New->setImplicit(isImplicit);
4020 New->setPackExpansion(isPackExpansion);
4021 break;
4022 }
4023 case attr::SwiftBridgedTypedef: {
4024 bool isInherited = Record.readInt();
4025 bool isImplicit = Record.readInt();
4026 bool isPackExpansion = Record.readInt();
4027 New = new (Context) SwiftBridgedTypedefAttr(Context, Info);
4028 cast<InheritableAttr>(New)->setInherited(isInherited);
4029 New->setImplicit(isImplicit);
4030 New->setPackExpansion(isPackExpansion);
4031 break;
4032 }
4033 case attr::SwiftCall: {
4034 bool isInherited = Record.readInt();
4035 bool isImplicit = Record.readInt();
4036 bool isPackExpansion = Record.readInt();
4037 New = new (Context) SwiftCallAttr(Context, Info);
4038 cast<InheritableAttr>(New)->setInherited(isInherited);
4039 New->setImplicit(isImplicit);
4040 New->setPackExpansion(isPackExpansion);
4041 break;
4042 }
4043 case attr::SwiftContext: {
4044 bool isInherited = Record.readInt();
4045 bool isImplicit = Record.readInt();
4046 bool isPackExpansion = Record.readInt();
4047 New = new (Context) SwiftContextAttr(Context, Info);
4048 cast<InheritableAttr>(New)->setInherited(isInherited);
4049 New->setImplicit(isImplicit);
4050 New->setPackExpansion(isPackExpansion);
4051 break;
4052 }
4053 case attr::SwiftError: {
4054 bool isInherited = Record.readInt();
4055 bool isImplicit = Record.readInt();
4056 bool isPackExpansion = Record.readInt();
4057 SwiftErrorAttr::ConventionKind convention(static_cast<SwiftErrorAttr::ConventionKind>(Record.readInt()));
4058 New = new (Context) SwiftErrorAttr(Context, Info, convention);
4059 cast<InheritableAttr>(New)->setInherited(isInherited);
4060 New->setImplicit(isImplicit);
4061 New->setPackExpansion(isPackExpansion);
4062 break;
4063 }
4064 case attr::SwiftErrorResult: {
4065 bool isInherited = Record.readInt();
4066 bool isImplicit = Record.readInt();
4067 bool isPackExpansion = Record.readInt();
4068 New = new (Context) SwiftErrorResultAttr(Context, Info);
4069 cast<InheritableAttr>(New)->setInherited(isInherited);
4070 New->setImplicit(isImplicit);
4071 New->setPackExpansion(isPackExpansion);
4072 break;
4073 }
4074 case attr::SwiftImportAsNonGeneric: {
4075 bool isInherited = Record.readInt();
4076 bool isImplicit = Record.readInt();
4077 bool isPackExpansion = Record.readInt();
4078 New = new (Context) SwiftImportAsNonGenericAttr(Context, Info);
4079 cast<InheritableAttr>(New)->setInherited(isInherited);
4080 New->setImplicit(isImplicit);
4081 New->setPackExpansion(isPackExpansion);
4082 break;
4083 }
4084 case attr::SwiftImportPropertyAsAccessors: {
4085 bool isInherited = Record.readInt();
4086 bool isImplicit = Record.readInt();
4087 bool isPackExpansion = Record.readInt();
4088 New = new (Context) SwiftImportPropertyAsAccessorsAttr(Context, Info);
4089 cast<InheritableAttr>(New)->setInherited(isInherited);
4090 New->setImplicit(isImplicit);
4091 New->setPackExpansion(isPackExpansion);
4092 break;
4093 }
4094 case attr::SwiftIndirectResult: {
4095 bool isInherited = Record.readInt();
4096 bool isImplicit = Record.readInt();
4097 bool isPackExpansion = Record.readInt();
4098 New = new (Context) SwiftIndirectResultAttr(Context, Info);
4099 cast<InheritableAttr>(New)->setInherited(isInherited);
4100 New->setImplicit(isImplicit);
4101 New->setPackExpansion(isPackExpansion);
4102 break;
4103 }
4104 case attr::SwiftName: {
4105 bool isInherited = Record.readInt();
4106 bool isImplicit = Record.readInt();
4107 bool isPackExpansion = Record.readInt();
4108 std::string name= Record.readString();
4109 New = new (Context) SwiftNameAttr(Context, Info, name);
4110 cast<InheritableAttr>(New)->setInherited(isInherited);
4111 New->setImplicit(isImplicit);
4112 New->setPackExpansion(isPackExpansion);
4113 break;
4114 }
4115 case attr::SwiftNewType: {
4116 bool isInherited = Record.readInt();
4117 bool isImplicit = Record.readInt();
4118 bool isPackExpansion = Record.readInt();
4119 SwiftNewTypeAttr::NewtypeKind newtypeKind(static_cast<SwiftNewTypeAttr::NewtypeKind>(Record.readInt()));
4120 New = new (Context) SwiftNewTypeAttr(Context, Info, newtypeKind);
4121 cast<InheritableAttr>(New)->setInherited(isInherited);
4122 New->setImplicit(isImplicit);
4123 New->setPackExpansion(isPackExpansion);
4124 break;
4125 }
4126 case attr::SwiftObjCMembers: {
4127 bool isImplicit = Record.readInt();
4128 bool isPackExpansion = Record.readInt();
4129 New = new (Context) SwiftObjCMembersAttr(Context, Info);
4130 New->setImplicit(isImplicit);
4131 New->setPackExpansion(isPackExpansion);
4132 break;
4133 }
4134 case attr::SwiftPrivate: {
4135 bool isInherited = Record.readInt();
4136 bool isImplicit = Record.readInt();
4137 bool isPackExpansion = Record.readInt();
4138 New = new (Context) SwiftPrivateAttr(Context, Info);
4139 cast<InheritableAttr>(New)->setInherited(isInherited);
4140 New->setImplicit(isImplicit);
4141 New->setPackExpansion(isPackExpansion);
4142 break;
4143 }
4144 case attr::SwiftVersionedAddition: {
4145 bool isImplicit = Record.readInt();
4146 bool isPackExpansion = Record.readInt();
4147 VersionTuple version= Record.readVersionTuple();
4148 Attr *additionalAttr = Record.readAttr(); bool isReplacedByActive = Record.readInt();
4149 New = new (Context) SwiftVersionedAdditionAttr(Context, Info, version, additionalAttr, isReplacedByActive);
4150 New->setImplicit(isImplicit);
4151 New->setPackExpansion(isPackExpansion);
4152 break;
4153 }
4154 case attr::SwiftVersionedRemoval: {
4155 bool isImplicit = Record.readInt();
4156 bool isPackExpansion = Record.readInt();
4157 VersionTuple version= Record.readVersionTuple();
4158 unsigned rawKind = Record.readInt();
4159 bool isReplacedByActive = Record.readInt();
4160 New = new (Context) SwiftVersionedRemovalAttr(Context, Info, version, rawKind, isReplacedByActive);
4161 New->setImplicit(isImplicit);
4162 New->setPackExpansion(isPackExpansion);
4163 break;
4164 }
4165 case attr::SysVABI: {
4166 bool isInherited = Record.readInt();
4167 bool isImplicit = Record.readInt();
4168 bool isPackExpansion = Record.readInt();
4169 New = new (Context) SysVABIAttr(Context, Info);
4170 cast<InheritableAttr>(New)->setInherited(isInherited);
4171 New->setImplicit(isImplicit);
4172 New->setPackExpansion(isPackExpansion);
4173 break;
4174 }
4175 case attr::TLSModel: {
4176 bool isInherited = Record.readInt();
4177 bool isImplicit = Record.readInt();
4178 bool isPackExpansion = Record.readInt();
4179 std::string model= Record.readString();
4180 New = new (Context) TLSModelAttr(Context, Info, model);
4181 cast<InheritableAttr>(New)->setInherited(isInherited);
4182 New->setImplicit(isImplicit);
4183 New->setPackExpansion(isPackExpansion);
4184 break;
4185 }
4186 case attr::Target: {
4187 bool isInherited = Record.readInt();
4188 bool isImplicit = Record.readInt();
4189 bool isPackExpansion = Record.readInt();
4190 std::string featuresStr= Record.readString();
4191 New = new (Context) TargetAttr(Context, Info, featuresStr);
4192 cast<InheritableAttr>(New)->setInherited(isInherited);
4193 New->setImplicit(isImplicit);
4194 New->setPackExpansion(isPackExpansion);
4195 break;
4196 }
4197 case attr::TargetClones: {
4198 bool isInherited = Record.readInt();
4199 bool isImplicit = Record.readInt();
4200 bool isPackExpansion = Record.readInt();
4201 unsigned featuresStrsSize = Record.readInt();
4202 SmallVector<StringRef, 4> featuresStrs;
4203 featuresStrs.reserve(featuresStrsSize);
4204 SmallVector<std::string, 4> featuresStrsStorage;
4205 featuresStrsStorage.reserve(featuresStrsSize);
4206 for (unsigned i = 0; i != featuresStrsSize; ++i)
4207 featuresStrsStorage.push_back(Record.readString());
4208 for (unsigned i = 0; i != featuresStrsSize; ++i)
4209 featuresStrs.push_back(featuresStrsStorage[i]);
4210 New = new (Context) TargetClonesAttr(Context, Info, featuresStrs.data(), featuresStrsSize);
4211 cast<InheritableAttr>(New)->setInherited(isInherited);
4212 New->setImplicit(isImplicit);
4213 New->setPackExpansion(isPackExpansion);
4214 break;
4215 }
4216 case attr::TargetVersion: {
4217 bool isInherited = Record.readInt();
4218 bool isImplicit = Record.readInt();
4219 bool isPackExpansion = Record.readInt();
4220 std::string namesStr= Record.readString();
4221 New = new (Context) TargetVersionAttr(Context, Info, namesStr);
4222 cast<InheritableAttr>(New)->setInherited(isInherited);
4223 New->setImplicit(isImplicit);
4224 New->setPackExpansion(isPackExpansion);
4225 break;
4226 }
4227 case attr::TestTypestate: {
4228 bool isInherited = Record.readInt();
4229 bool isImplicit = Record.readInt();
4230 bool isPackExpansion = Record.readInt();
4231 TestTypestateAttr::ConsumedState testState(static_cast<TestTypestateAttr::ConsumedState>(Record.readInt()));
4232 New = new (Context) TestTypestateAttr(Context, Info, testState);
4233 cast<InheritableAttr>(New)->setInherited(isInherited);
4234 New->setImplicit(isImplicit);
4235 New->setPackExpansion(isPackExpansion);
4236 break;
4237 }
4238 case attr::ThisCall: {
4239 bool isInherited = Record.readInt();
4240 bool isImplicit = Record.readInt();
4241 bool isPackExpansion = Record.readInt();
4242 New = new (Context) ThisCallAttr(Context, Info);
4243 cast<InheritableAttr>(New)->setInherited(isInherited);
4244 New->setImplicit(isImplicit);
4245 New->setPackExpansion(isPackExpansion);
4246 break;
4247 }
4248 case attr::Thread: {
4249 bool isImplicit = Record.readInt();
4250 bool isPackExpansion = Record.readInt();
4251 New = new (Context) ThreadAttr(Context, Info);
4252 New->setImplicit(isImplicit);
4253 New->setPackExpansion(isPackExpansion);
4254 break;
4255 }
4256 case attr::TransparentUnion: {
4257 bool isInherited = Record.readInt();
4258 bool isImplicit = Record.readInt();
4259 bool isPackExpansion = Record.readInt();
4260 New = new (Context) TransparentUnionAttr(Context, Info);
4261 cast<InheritableAttr>(New)->setInherited(isInherited);
4262 New->setImplicit(isImplicit);
4263 New->setPackExpansion(isPackExpansion);
4264 break;
4265 }
4266 case attr::TrivialABI: {
4267 bool isInherited = Record.readInt();
4268 bool isImplicit = Record.readInt();
4269 bool isPackExpansion = Record.readInt();
4270 New = new (Context) TrivialABIAttr(Context, Info);
4271 cast<InheritableAttr>(New)->setInherited(isInherited);
4272 New->setImplicit(isImplicit);
4273 New->setPackExpansion(isPackExpansion);
4274 break;
4275 }
4276 case attr::TryAcquireCapability: {
4277 bool isInherited = Record.readInt();
4278 bool isImplicit = Record.readInt();
4279 bool isPackExpansion = Record.readInt();
4280 Expr * successValue = Record.readExpr();
4281 unsigned argsSize = Record.readInt();
4282 SmallVector<Expr *, 4> args;
4283 args.reserve(argsSize);
4284 for (unsigned i = 0; i != argsSize; ++i)
4285 args.push_back(Record.readExpr());
4286 New = new (Context) TryAcquireCapabilityAttr(Context, Info, successValue, args.data(), argsSize);
4287 cast<InheritableAttr>(New)->setInherited(isInherited);
4288 New->setImplicit(isImplicit);
4289 New->setPackExpansion(isPackExpansion);
4290 break;
4291 }
4292 case attr::TypeNonNull: {
4293 bool isImplicit = Record.readInt();
4294 bool isPackExpansion = Record.readInt();
4295 New = new (Context) TypeNonNullAttr(Context, Info);
4296 New->setImplicit(isImplicit);
4297 New->setPackExpansion(isPackExpansion);
4298 break;
4299 }
4300 case attr::TypeNullUnspecified: {
4301 bool isImplicit = Record.readInt();
4302 bool isPackExpansion = Record.readInt();
4303 New = new (Context) TypeNullUnspecifiedAttr(Context, Info);
4304 New->setImplicit(isImplicit);
4305 New->setPackExpansion(isPackExpansion);
4306 break;
4307 }
4308 case attr::TypeNullable: {
4309 bool isInherited = Record.readInt();
4310 bool isImplicit = Record.readInt();
4311 bool isPackExpansion = Record.readInt();
4312 New = new (Context) TypeNullableAttr(Context, Info);
4313 cast<InheritableAttr>(New)->setInherited(isInherited);
4314 New->setImplicit(isImplicit);
4315 New->setPackExpansion(isPackExpansion);
4316 break;
4317 }
4318 case attr::TypeNullableResult: {
4319 bool isImplicit = Record.readInt();
4320 bool isPackExpansion = Record.readInt();
4321 New = new (Context) TypeNullableResultAttr(Context, Info);
4322 New->setImplicit(isImplicit);
4323 New->setPackExpansion(isPackExpansion);
4324 break;
4325 }
4326 case attr::TypeTagForDatatype: {
4327 bool isInherited = Record.readInt();
4328 bool isImplicit = Record.readInt();
4329 bool isPackExpansion = Record.readInt();
4330 IdentifierInfo * argumentKind = Record.readIdentifier();
4331 TypeSourceInfo * matchingCType = Record.readTypeSourceInfo();
4332 bool layoutCompatible = Record.readInt();
4333 bool mustBeNull = Record.readInt();
4334 New = new (Context) TypeTagForDatatypeAttr(Context, Info, argumentKind, matchingCType, layoutCompatible, mustBeNull);
4335 cast<InheritableAttr>(New)->setInherited(isInherited);
4336 New->setImplicit(isImplicit);
4337 New->setPackExpansion(isPackExpansion);
4338 break;
4339 }
4340 case attr::TypeVisibility: {
4341 bool isInherited = Record.readInt();
4342 bool isImplicit = Record.readInt();
4343 bool isPackExpansion = Record.readInt();
4344 TypeVisibilityAttr::VisibilityType visibility(static_cast<TypeVisibilityAttr::VisibilityType>(Record.readInt()));
4345 New = new (Context) TypeVisibilityAttr(Context, Info, visibility);
4346 cast<InheritableAttr>(New)->setInherited(isInherited);
4347 New->setImplicit(isImplicit);
4348 New->setPackExpansion(isPackExpansion);
4349 break;
4350 }
4351 case attr::UPtr: {
4352 bool isImplicit = Record.readInt();
4353 bool isPackExpansion = Record.readInt();
4354 New = new (Context) UPtrAttr(Context, Info);
4355 New->setImplicit(isImplicit);
4356 New->setPackExpansion(isPackExpansion);
4357 break;
4358 }
4359 case attr::Unavailable: {
4360 bool isInherited = Record.readInt();
4361 bool isImplicit = Record.readInt();
4362 bool isPackExpansion = Record.readInt();
4363 std::string message= Record.readString();
4364 UnavailableAttr::ImplicitReason implicitReason(static_cast<UnavailableAttr::ImplicitReason>(Record.readInt()));
4365 New = new (Context) UnavailableAttr(Context, Info, message, implicitReason);
4366 cast<InheritableAttr>(New)->setInherited(isInherited);
4367 New->setImplicit(isImplicit);
4368 New->setPackExpansion(isPackExpansion);
4369 break;
4370 }
4371 case attr::Uninitialized: {
4372 bool isInherited = Record.readInt();
4373 bool isImplicit = Record.readInt();
4374 bool isPackExpansion = Record.readInt();
4375 New = new (Context) UninitializedAttr(Context, Info);
4376 cast<InheritableAttr>(New)->setInherited(isInherited);
4377 New->setImplicit(isImplicit);
4378 New->setPackExpansion(isPackExpansion);
4379 break;
4380 }
4381 case attr::Unlikely: {
4382 bool isImplicit = Record.readInt();
4383 bool isPackExpansion = Record.readInt();
4384 New = new (Context) UnlikelyAttr(Context, Info);
4385 New->setImplicit(isImplicit);
4386 New->setPackExpansion(isPackExpansion);
4387 break;
4388 }
4389 case attr::UnsafeBufferUsage: {
4390 bool isInherited = Record.readInt();
4391 bool isImplicit = Record.readInt();
4392 bool isPackExpansion = Record.readInt();
4393 New = new (Context) UnsafeBufferUsageAttr(Context, Info);
4394 cast<InheritableAttr>(New)->setInherited(isInherited);
4395 New->setImplicit(isImplicit);
4396 New->setPackExpansion(isPackExpansion);
4397 break;
4398 }
4399 case attr::Unused: {
4400 bool isInherited = Record.readInt();
4401 bool isImplicit = Record.readInt();
4402 bool isPackExpansion = Record.readInt();
4403 New = new (Context) UnusedAttr(Context, Info);
4404 cast<InheritableAttr>(New)->setInherited(isInherited);
4405 New->setImplicit(isImplicit);
4406 New->setPackExpansion(isPackExpansion);
4407 break;
4408 }
4409 case attr::UseHandle: {
4410 bool isInherited = Record.readInt();
4411 bool isImplicit = Record.readInt();
4412 bool isPackExpansion = Record.readInt();
4413 std::string handleType= Record.readString();
4414 New = new (Context) UseHandleAttr(Context, Info, handleType);
4415 cast<InheritableAttr>(New)->setInherited(isInherited);
4416 New->setImplicit(isImplicit);
4417 New->setPackExpansion(isPackExpansion);
4418 break;
4419 }
4420 case attr::Used: {
4421 bool isInherited = Record.readInt();
4422 bool isImplicit = Record.readInt();
4423 bool isPackExpansion = Record.readInt();
4424 New = new (Context) UsedAttr(Context, Info);
4425 cast<InheritableAttr>(New)->setInherited(isInherited);
4426 New->setImplicit(isImplicit);
4427 New->setPackExpansion(isPackExpansion);
4428 break;
4429 }
4430 case attr::UsingIfExists: {
4431 bool isInherited = Record.readInt();
4432 bool isImplicit = Record.readInt();
4433 bool isPackExpansion = Record.readInt();
4434 New = new (Context) UsingIfExistsAttr(Context, Info);
4435 cast<InheritableAttr>(New)->setInherited(isInherited);
4436 New->setImplicit(isImplicit);
4437 New->setPackExpansion(isPackExpansion);
4438 break;
4439 }
4440 case attr::Uuid: {
4441 bool isInherited = Record.readInt();
4442 bool isImplicit = Record.readInt();
4443 bool isPackExpansion = Record.readInt();
4444 std::string guid= Record.readString();
4445 MSGuidDecl * guidDecl = Record.readDeclAs<MSGuidDecl >();
4446 New = new (Context) UuidAttr(Context, Info, guid, guidDecl);
4447 cast<InheritableAttr>(New)->setInherited(isInherited);
4448 New->setImplicit(isImplicit);
4449 New->setPackExpansion(isPackExpansion);
4450 break;
4451 }
4452 case attr::VTablePointerAuthentication: {
4453 bool isInherited = Record.readInt();
4454 bool isImplicit = Record.readInt();
4455 bool isPackExpansion = Record.readInt();
4456 VTablePointerAuthenticationAttr::VPtrAuthKeyType key(static_cast<VTablePointerAuthenticationAttr::VPtrAuthKeyType>(Record.readInt()));
4457 VTablePointerAuthenticationAttr::AddressDiscriminationMode addressDiscrimination(static_cast<VTablePointerAuthenticationAttr::AddressDiscriminationMode>(Record.readInt()));
4458 VTablePointerAuthenticationAttr::ExtraDiscrimination extraDiscrimination(static_cast<VTablePointerAuthenticationAttr::ExtraDiscrimination>(Record.readInt()));
4459 int customDiscriminationValue = Record.readInt();
4460 New = new (Context) VTablePointerAuthenticationAttr(Context, Info, key, addressDiscrimination, extraDiscrimination, customDiscriminationValue);
4461 cast<InheritableAttr>(New)->setInherited(isInherited);
4462 New->setImplicit(isImplicit);
4463 New->setPackExpansion(isPackExpansion);
4464 break;
4465 }
4466 case attr::VecReturn: {
4467 bool isInherited = Record.readInt();
4468 bool isImplicit = Record.readInt();
4469 bool isPackExpansion = Record.readInt();
4470 New = new (Context) VecReturnAttr(Context, Info);
4471 cast<InheritableAttr>(New)->setInherited(isInherited);
4472 New->setImplicit(isImplicit);
4473 New->setPackExpansion(isPackExpansion);
4474 break;
4475 }
4476 case attr::VecTypeHint: {
4477 bool isInherited = Record.readInt();
4478 bool isImplicit = Record.readInt();
4479 bool isPackExpansion = Record.readInt();
4480 TypeSourceInfo * typeHint = Record.readTypeSourceInfo();
4481 New = new (Context) VecTypeHintAttr(Context, Info, typeHint);
4482 cast<InheritableAttr>(New)->setInherited(isInherited);
4483 New->setImplicit(isImplicit);
4484 New->setPackExpansion(isPackExpansion);
4485 break;
4486 }
4487 case attr::VectorCall: {
4488 bool isInherited = Record.readInt();
4489 bool isImplicit = Record.readInt();
4490 bool isPackExpansion = Record.readInt();
4491 New = new (Context) VectorCallAttr(Context, Info);
4492 cast<InheritableAttr>(New)->setInherited(isInherited);
4493 New->setImplicit(isImplicit);
4494 New->setPackExpansion(isPackExpansion);
4495 break;
4496 }
4497 case attr::Visibility: {
4498 bool isInherited = Record.readInt();
4499 bool isImplicit = Record.readInt();
4500 bool isPackExpansion = Record.readInt();
4501 VisibilityAttr::VisibilityType visibility(static_cast<VisibilityAttr::VisibilityType>(Record.readInt()));
4502 New = new (Context) VisibilityAttr(Context, Info, visibility);
4503 cast<InheritableAttr>(New)->setInherited(isInherited);
4504 New->setImplicit(isImplicit);
4505 New->setPackExpansion(isPackExpansion);
4506 break;
4507 }
4508 case attr::WarnUnused: {
4509 bool isInherited = Record.readInt();
4510 bool isImplicit = Record.readInt();
4511 bool isPackExpansion = Record.readInt();
4512 New = new (Context) WarnUnusedAttr(Context, Info);
4513 cast<InheritableAttr>(New)->setInherited(isInherited);
4514 New->setImplicit(isImplicit);
4515 New->setPackExpansion(isPackExpansion);
4516 break;
4517 }
4518 case attr::WarnUnusedResult: {
4519 bool isInherited = Record.readInt();
4520 bool isImplicit = Record.readInt();
4521 bool isPackExpansion = Record.readInt();
4522 std::string message= Record.readString();
4523 New = new (Context) WarnUnusedResultAttr(Context, Info, message);
4524 cast<InheritableAttr>(New)->setInherited(isInherited);
4525 New->setImplicit(isImplicit);
4526 New->setPackExpansion(isPackExpansion);
4527 break;
4528 }
4529 case attr::Weak: {
4530 bool isInherited = Record.readInt();
4531 bool isImplicit = Record.readInt();
4532 bool isPackExpansion = Record.readInt();
4533 New = new (Context) WeakAttr(Context, Info);
4534 cast<InheritableAttr>(New)->setInherited(isInherited);
4535 New->setImplicit(isImplicit);
4536 New->setPackExpansion(isPackExpansion);
4537 break;
4538 }
4539 case attr::WeakImport: {
4540 bool isInherited = Record.readInt();
4541 bool isImplicit = Record.readInt();
4542 bool isPackExpansion = Record.readInt();
4543 New = new (Context) WeakImportAttr(Context, Info);
4544 cast<InheritableAttr>(New)->setInherited(isInherited);
4545 New->setImplicit(isImplicit);
4546 New->setPackExpansion(isPackExpansion);
4547 break;
4548 }
4549 case attr::WeakRef: {
4550 bool isInherited = Record.readInt();
4551 bool isImplicit = Record.readInt();
4552 bool isPackExpansion = Record.readInt();
4553 std::string aliasee= Record.readString();
4554 New = new (Context) WeakRefAttr(Context, Info, aliasee);
4555 cast<InheritableAttr>(New)->setInherited(isInherited);
4556 New->setImplicit(isImplicit);
4557 New->setPackExpansion(isPackExpansion);
4558 break;
4559 }
4560 case attr::WebAssemblyExportName: {
4561 bool isInherited = Record.readInt();
4562 bool isImplicit = Record.readInt();
4563 bool isPackExpansion = Record.readInt();
4564 std::string exportName= Record.readString();
4565 New = new (Context) WebAssemblyExportNameAttr(Context, Info, exportName);
4566 cast<InheritableAttr>(New)->setInherited(isInherited);
4567 New->setImplicit(isImplicit);
4568 New->setPackExpansion(isPackExpansion);
4569 break;
4570 }
4571 case attr::WebAssemblyFuncref: {
4572 bool isImplicit = Record.readInt();
4573 bool isPackExpansion = Record.readInt();
4574 New = new (Context) WebAssemblyFuncrefAttr(Context, Info);
4575 New->setImplicit(isImplicit);
4576 New->setPackExpansion(isPackExpansion);
4577 break;
4578 }
4579 case attr::WebAssemblyImportModule: {
4580 bool isInherited = Record.readInt();
4581 bool isImplicit = Record.readInt();
4582 bool isPackExpansion = Record.readInt();
4583 std::string importModule= Record.readString();
4584 New = new (Context) WebAssemblyImportModuleAttr(Context, Info, importModule);
4585 cast<InheritableAttr>(New)->setInherited(isInherited);
4586 New->setImplicit(isImplicit);
4587 New->setPackExpansion(isPackExpansion);
4588 break;
4589 }
4590 case attr::WebAssemblyImportName: {
4591 bool isInherited = Record.readInt();
4592 bool isImplicit = Record.readInt();
4593 bool isPackExpansion = Record.readInt();
4594 std::string importName= Record.readString();
4595 New = new (Context) WebAssemblyImportNameAttr(Context, Info, importName);
4596 cast<InheritableAttr>(New)->setInherited(isInherited);
4597 New->setImplicit(isImplicit);
4598 New->setPackExpansion(isPackExpansion);
4599 break;
4600 }
4601 case attr::WorkGroupSizeHint: {
4602 bool isInherited = Record.readInt();
4603 bool isImplicit = Record.readInt();
4604 bool isPackExpansion = Record.readInt();
4605 unsigned xDim = Record.readInt();
4606 unsigned yDim = Record.readInt();
4607 unsigned zDim = Record.readInt();
4608 New = new (Context) WorkGroupSizeHintAttr(Context, Info, xDim, yDim, zDim);
4609 cast<InheritableAttr>(New)->setInherited(isInherited);
4610 New->setImplicit(isImplicit);
4611 New->setPackExpansion(isPackExpansion);
4612 break;
4613 }
4614 case attr::X86ForceAlignArgPointer: {
4615 bool isInherited = Record.readInt();
4616 bool isImplicit = Record.readInt();
4617 bool isPackExpansion = Record.readInt();
4618 New = new (Context) X86ForceAlignArgPointerAttr(Context, Info);
4619 cast<InheritableAttr>(New)->setInherited(isInherited);
4620 New->setImplicit(isImplicit);
4621 New->setPackExpansion(isPackExpansion);
4622 break;
4623 }
4624 case attr::XRayInstrument: {
4625 bool isInherited = Record.readInt();
4626 bool isImplicit = Record.readInt();
4627 bool isPackExpansion = Record.readInt();
4628 New = new (Context) XRayInstrumentAttr(Context, Info);
4629 cast<InheritableAttr>(New)->setInherited(isInherited);
4630 New->setImplicit(isImplicit);
4631 New->setPackExpansion(isPackExpansion);
4632 break;
4633 }
4634 case attr::XRayLogArgs: {
4635 bool isInherited = Record.readInt();
4636 bool isImplicit = Record.readInt();
4637 bool isPackExpansion = Record.readInt();
4638 unsigned argumentCount = Record.readInt();
4639 New = new (Context) XRayLogArgsAttr(Context, Info, argumentCount);
4640 cast<InheritableAttr>(New)->setInherited(isInherited);
4641 New->setImplicit(isImplicit);
4642 New->setPackExpansion(isPackExpansion);
4643 break;
4644 }
4645 case attr::ZeroCallUsedRegs: {
4646 bool isInherited = Record.readInt();
4647 bool isImplicit = Record.readInt();
4648 bool isPackExpansion = Record.readInt();
4649 ZeroCallUsedRegsAttr::ZeroCallUsedRegsKind zeroCallUsedRegs(static_cast<ZeroCallUsedRegsAttr::ZeroCallUsedRegsKind>(Record.readInt()));
4650 New = new (Context) ZeroCallUsedRegsAttr(Context, Info, zeroCallUsedRegs);
4651 cast<InheritableAttr>(New)->setInherited(isInherited);
4652 New->setImplicit(isImplicit);
4653 New->setPackExpansion(isPackExpansion);
4654 break;
4655 }
4656 }