Warning, /include/clang/Serialization/AttrPCHWrite.inc is written in an unsupported language. File is not indexed.
0001 /*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
0002 |* *|
0003 |* Attribute serialization code *|
0004 |* *|
0005 |* Automatically generated file, do not edit! *|
0006 |* From: Attr.td *|
0007 |* *|
0008 \*===----------------------------------------------------------------------===*/
0009
0010 switch (A->getKind()) {
0011 case attr::AArch64SVEPcs: {
0012 const auto *SA = cast<AArch64SVEPcsAttr>(A);
0013 Record.push_back(SA->isInherited());
0014 Record.push_back(A->isImplicit());
0015 Record.push_back(A->isPackExpansion());
0016 break;
0017 }
0018 case attr::AArch64VectorPcs: {
0019 const auto *SA = cast<AArch64VectorPcsAttr>(A);
0020 Record.push_back(SA->isInherited());
0021 Record.push_back(A->isImplicit());
0022 Record.push_back(A->isPackExpansion());
0023 break;
0024 }
0025 case attr::AMDGPUFlatWorkGroupSize: {
0026 const auto *SA = cast<AMDGPUFlatWorkGroupSizeAttr>(A);
0027 Record.push_back(SA->isInherited());
0028 Record.push_back(A->isImplicit());
0029 Record.push_back(A->isPackExpansion());
0030 Record.AddStmt(SA->getMin());
0031 Record.AddStmt(SA->getMax());
0032 break;
0033 }
0034 case attr::AMDGPUKernelCall: {
0035 const auto *SA = cast<AMDGPUKernelCallAttr>(A);
0036 Record.push_back(SA->isInherited());
0037 Record.push_back(A->isImplicit());
0038 Record.push_back(A->isPackExpansion());
0039 break;
0040 }
0041 case attr::AMDGPUMaxNumWorkGroups: {
0042 const auto *SA = cast<AMDGPUMaxNumWorkGroupsAttr>(A);
0043 Record.push_back(SA->isInherited());
0044 Record.push_back(A->isImplicit());
0045 Record.push_back(A->isPackExpansion());
0046 Record.AddStmt(SA->getMaxNumWorkGroupsX());
0047 Record.AddStmt(SA->getMaxNumWorkGroupsY());
0048 Record.AddStmt(SA->getMaxNumWorkGroupsZ());
0049 break;
0050 }
0051 case attr::AMDGPUNumSGPR: {
0052 const auto *SA = cast<AMDGPUNumSGPRAttr>(A);
0053 Record.push_back(SA->isInherited());
0054 Record.push_back(A->isImplicit());
0055 Record.push_back(A->isPackExpansion());
0056 Record.push_back(SA->getNumSGPR());
0057 break;
0058 }
0059 case attr::AMDGPUNumVGPR: {
0060 const auto *SA = cast<AMDGPUNumVGPRAttr>(A);
0061 Record.push_back(SA->isInherited());
0062 Record.push_back(A->isImplicit());
0063 Record.push_back(A->isPackExpansion());
0064 Record.push_back(SA->getNumVGPR());
0065 break;
0066 }
0067 case attr::AMDGPUWavesPerEU: {
0068 const auto *SA = cast<AMDGPUWavesPerEUAttr>(A);
0069 Record.push_back(SA->isInherited());
0070 Record.push_back(A->isImplicit());
0071 Record.push_back(A->isPackExpansion());
0072 Record.AddStmt(SA->getMin());
0073 Record.AddStmt(SA->getMax());
0074 break;
0075 }
0076 case attr::ARMInterrupt: {
0077 const auto *SA = cast<ARMInterruptAttr>(A);
0078 Record.push_back(SA->isInherited());
0079 Record.push_back(A->isImplicit());
0080 Record.push_back(A->isPackExpansion());
0081 Record.push_back(static_cast<uint64_t>(SA->getInterrupt()));
0082 break;
0083 }
0084 case attr::AVRInterrupt: {
0085 const auto *SA = cast<AVRInterruptAttr>(A);
0086 Record.push_back(SA->isInherited());
0087 Record.push_back(A->isImplicit());
0088 Record.push_back(A->isPackExpansion());
0089 break;
0090 }
0091 case attr::AVRSignal: {
0092 const auto *SA = cast<AVRSignalAttr>(A);
0093 Record.push_back(SA->isInherited());
0094 Record.push_back(A->isImplicit());
0095 Record.push_back(A->isPackExpansion());
0096 break;
0097 }
0098 case attr::AbiTag: {
0099 const auto *SA = cast<AbiTagAttr>(A);
0100 Record.push_back(A->isImplicit());
0101 Record.push_back(A->isPackExpansion());
0102 Record.push_back(SA->tags_size());
0103 for (auto &Val : SA->tags())
0104 Record.AddString(Val);
0105 break;
0106 }
0107 case attr::AcquireCapability: {
0108 const auto *SA = cast<AcquireCapabilityAttr>(A);
0109 Record.push_back(SA->isInherited());
0110 Record.push_back(A->isImplicit());
0111 Record.push_back(A->isPackExpansion());
0112 Record.push_back(SA->args_size());
0113 for (auto &Val : SA->args())
0114 Record.AddStmt(Val);
0115 break;
0116 }
0117 case attr::AcquireHandle: {
0118 const auto *SA = cast<AcquireHandleAttr>(A);
0119 Record.push_back(SA->isInherited());
0120 Record.push_back(A->isImplicit());
0121 Record.push_back(A->isPackExpansion());
0122 Record.AddString(SA->getHandleType());
0123 break;
0124 }
0125 case attr::AcquiredAfter: {
0126 const auto *SA = cast<AcquiredAfterAttr>(A);
0127 Record.push_back(SA->isInherited());
0128 Record.push_back(A->isImplicit());
0129 Record.push_back(A->isPackExpansion());
0130 Record.push_back(SA->args_size());
0131 for (auto &Val : SA->args())
0132 Record.AddStmt(Val);
0133 break;
0134 }
0135 case attr::AcquiredBefore: {
0136 const auto *SA = cast<AcquiredBeforeAttr>(A);
0137 Record.push_back(SA->isInherited());
0138 Record.push_back(A->isImplicit());
0139 Record.push_back(A->isPackExpansion());
0140 Record.push_back(SA->args_size());
0141 for (auto &Val : SA->args())
0142 Record.AddStmt(Val);
0143 break;
0144 }
0145 case attr::AddressSpace: {
0146 const auto *SA = cast<AddressSpaceAttr>(A);
0147 Record.push_back(A->isImplicit());
0148 Record.push_back(A->isPackExpansion());
0149 Record.push_back(SA->getAddressSpace());
0150 break;
0151 }
0152 case attr::Alias: {
0153 const auto *SA = cast<AliasAttr>(A);
0154 Record.push_back(A->isImplicit());
0155 Record.push_back(A->isPackExpansion());
0156 Record.AddString(SA->getAliasee());
0157 break;
0158 }
0159 case attr::AlignMac68k: {
0160 const auto *SA = cast<AlignMac68kAttr>(A);
0161 Record.push_back(SA->isInherited());
0162 Record.push_back(A->isImplicit());
0163 Record.push_back(A->isPackExpansion());
0164 break;
0165 }
0166 case attr::AlignNatural: {
0167 const auto *SA = cast<AlignNaturalAttr>(A);
0168 Record.push_back(SA->isInherited());
0169 Record.push_back(A->isImplicit());
0170 Record.push_back(A->isPackExpansion());
0171 break;
0172 }
0173 case attr::AlignValue: {
0174 const auto *SA = cast<AlignValueAttr>(A);
0175 Record.push_back(A->isImplicit());
0176 Record.push_back(A->isPackExpansion());
0177 Record.AddStmt(SA->getAlignment());
0178 break;
0179 }
0180 case attr::Aligned: {
0181 const auto *SA = cast<AlignedAttr>(A);
0182 Record.push_back(SA->isInherited());
0183 Record.push_back(A->isImplicit());
0184 Record.push_back(A->isPackExpansion());
0185 Record.push_back(SA->isAlignmentExpr());
0186 if (SA->isAlignmentExpr())
0187 Record.AddStmt(SA->getAlignmentExpr());
0188 else
0189 Record.AddTypeSourceInfo(SA->getAlignmentType());
0190 break;
0191 }
0192 case attr::AllocAlign: {
0193 const auto *SA = cast<AllocAlignAttr>(A);
0194 Record.push_back(SA->isInherited());
0195 Record.push_back(A->isImplicit());
0196 Record.push_back(A->isPackExpansion());
0197 Record.push_back(SA->getParamIndex().serialize());
0198 break;
0199 }
0200 case attr::AllocSize: {
0201 const auto *SA = cast<AllocSizeAttr>(A);
0202 Record.push_back(SA->isInherited());
0203 Record.push_back(A->isImplicit());
0204 Record.push_back(A->isPackExpansion());
0205 Record.push_back(SA->getElemSizeParam().serialize());
0206 Record.push_back(SA->getNumElemsParam().serialize());
0207 break;
0208 }
0209 case attr::Allocating: {
0210 Record.push_back(A->isImplicit());
0211 Record.push_back(A->isPackExpansion());
0212 break;
0213 }
0214 case attr::AlwaysDestroy: {
0215 const auto *SA = cast<AlwaysDestroyAttr>(A);
0216 Record.push_back(SA->isInherited());
0217 Record.push_back(A->isImplicit());
0218 Record.push_back(A->isPackExpansion());
0219 break;
0220 }
0221 case attr::AlwaysInline: {
0222 const auto *SA = cast<AlwaysInlineAttr>(A);
0223 Record.push_back(SA->isInherited());
0224 Record.push_back(A->isImplicit());
0225 Record.push_back(A->isPackExpansion());
0226 break;
0227 }
0228 case attr::AnalyzerNoReturn: {
0229 const auto *SA = cast<AnalyzerNoReturnAttr>(A);
0230 Record.push_back(SA->isInherited());
0231 Record.push_back(A->isImplicit());
0232 Record.push_back(A->isPackExpansion());
0233 break;
0234 }
0235 case attr::Annotate: {
0236 const auto *SA = cast<AnnotateAttr>(A);
0237 Record.push_back(SA->isInherited());
0238 Record.push_back(A->isImplicit());
0239 Record.push_back(A->isPackExpansion());
0240 Record.push_back(SA->delayedArgs_size());
0241 for (auto &Val : SA->delayedArgs())
0242 Record.AddStmt(Val);
0243 Record.AddString(SA->getAnnotation());
0244 Record.push_back(SA->args_size());
0245 for (auto &Val : SA->args())
0246 Record.AddStmt(Val);
0247 break;
0248 }
0249 case attr::AnnotateType: {
0250 const auto *SA = cast<AnnotateTypeAttr>(A);
0251 Record.push_back(A->isImplicit());
0252 Record.push_back(A->isPackExpansion());
0253 Record.push_back(SA->delayedArgs_size());
0254 for (auto &Val : SA->delayedArgs())
0255 Record.AddStmt(Val);
0256 Record.AddString(SA->getAnnotation());
0257 Record.push_back(SA->args_size());
0258 for (auto &Val : SA->args())
0259 Record.AddStmt(Val);
0260 break;
0261 }
0262 case attr::AnyX86Interrupt: {
0263 const auto *SA = cast<AnyX86InterruptAttr>(A);
0264 Record.push_back(SA->isInherited());
0265 Record.push_back(A->isImplicit());
0266 Record.push_back(A->isPackExpansion());
0267 break;
0268 }
0269 case attr::AnyX86NoCallerSavedRegisters: {
0270 const auto *SA = cast<AnyX86NoCallerSavedRegistersAttr>(A);
0271 Record.push_back(SA->isInherited());
0272 Record.push_back(A->isImplicit());
0273 Record.push_back(A->isPackExpansion());
0274 break;
0275 }
0276 case attr::AnyX86NoCfCheck: {
0277 const auto *SA = cast<AnyX86NoCfCheckAttr>(A);
0278 Record.push_back(SA->isInherited());
0279 Record.push_back(A->isImplicit());
0280 Record.push_back(A->isPackExpansion());
0281 break;
0282 }
0283 case attr::ArcWeakrefUnavailable: {
0284 const auto *SA = cast<ArcWeakrefUnavailableAttr>(A);
0285 Record.push_back(SA->isInherited());
0286 Record.push_back(A->isImplicit());
0287 Record.push_back(A->isPackExpansion());
0288 break;
0289 }
0290 case attr::ArgumentWithTypeTag: {
0291 const auto *SA = cast<ArgumentWithTypeTagAttr>(A);
0292 Record.push_back(SA->isInherited());
0293 Record.push_back(A->isImplicit());
0294 Record.push_back(A->isPackExpansion());
0295 Record.AddIdentifierRef(SA->getArgumentKind());
0296 Record.push_back(SA->getArgumentIdx().serialize());
0297 Record.push_back(SA->getTypeTagIdx().serialize());
0298 Record.push_back(SA->getIsPointer());
0299 break;
0300 }
0301 case attr::ArmAgnostic: {
0302 const auto *SA = cast<ArmAgnosticAttr>(A);
0303 Record.push_back(A->isImplicit());
0304 Record.push_back(A->isPackExpansion());
0305 Record.push_back(SA->agnosticArgs_size());
0306 for (auto &Val : SA->agnosticArgs())
0307 Record.AddString(Val);
0308 break;
0309 }
0310 case attr::ArmBuiltinAlias: {
0311 const auto *SA = cast<ArmBuiltinAliasAttr>(A);
0312 Record.push_back(SA->isInherited());
0313 Record.push_back(A->isImplicit());
0314 Record.push_back(A->isPackExpansion());
0315 Record.AddIdentifierRef(SA->getBuiltinName());
0316 break;
0317 }
0318 case attr::ArmIn: {
0319 const auto *SA = cast<ArmInAttr>(A);
0320 Record.push_back(A->isImplicit());
0321 Record.push_back(A->isPackExpansion());
0322 Record.push_back(SA->inArgs_size());
0323 for (auto &Val : SA->inArgs())
0324 Record.AddString(Val);
0325 break;
0326 }
0327 case attr::ArmInOut: {
0328 const auto *SA = cast<ArmInOutAttr>(A);
0329 Record.push_back(A->isImplicit());
0330 Record.push_back(A->isPackExpansion());
0331 Record.push_back(SA->inOutArgs_size());
0332 for (auto &Val : SA->inOutArgs())
0333 Record.AddString(Val);
0334 break;
0335 }
0336 case attr::ArmLocallyStreaming: {
0337 const auto *SA = cast<ArmLocallyStreamingAttr>(A);
0338 Record.push_back(SA->isInherited());
0339 Record.push_back(A->isImplicit());
0340 Record.push_back(A->isPackExpansion());
0341 break;
0342 }
0343 case attr::ArmMveStrictPolymorphism: {
0344 Record.push_back(A->isImplicit());
0345 Record.push_back(A->isPackExpansion());
0346 break;
0347 }
0348 case attr::ArmNew: {
0349 const auto *SA = cast<ArmNewAttr>(A);
0350 Record.push_back(SA->isInherited());
0351 Record.push_back(A->isImplicit());
0352 Record.push_back(A->isPackExpansion());
0353 Record.push_back(SA->newArgs_size());
0354 for (auto &Val : SA->newArgs())
0355 Record.AddString(Val);
0356 break;
0357 }
0358 case attr::ArmOut: {
0359 const auto *SA = cast<ArmOutAttr>(A);
0360 Record.push_back(A->isImplicit());
0361 Record.push_back(A->isPackExpansion());
0362 Record.push_back(SA->outArgs_size());
0363 for (auto &Val : SA->outArgs())
0364 Record.AddString(Val);
0365 break;
0366 }
0367 case attr::ArmPreserves: {
0368 const auto *SA = cast<ArmPreservesAttr>(A);
0369 Record.push_back(A->isImplicit());
0370 Record.push_back(A->isPackExpansion());
0371 Record.push_back(SA->preserveArgs_size());
0372 for (auto &Val : SA->preserveArgs())
0373 Record.AddString(Val);
0374 break;
0375 }
0376 case attr::ArmStreaming: {
0377 Record.push_back(A->isImplicit());
0378 Record.push_back(A->isPackExpansion());
0379 break;
0380 }
0381 case attr::ArmStreamingCompatible: {
0382 Record.push_back(A->isImplicit());
0383 Record.push_back(A->isPackExpansion());
0384 break;
0385 }
0386 case attr::Artificial: {
0387 const auto *SA = cast<ArtificialAttr>(A);
0388 Record.push_back(SA->isInherited());
0389 Record.push_back(A->isImplicit());
0390 Record.push_back(A->isPackExpansion());
0391 break;
0392 }
0393 case attr::AsmLabel: {
0394 const auto *SA = cast<AsmLabelAttr>(A);
0395 Record.push_back(SA->isInherited());
0396 Record.push_back(A->isImplicit());
0397 Record.push_back(A->isPackExpansion());
0398 Record.AddString(SA->getLabel());
0399 Record.push_back(SA->getIsLiteralLabel());
0400 break;
0401 }
0402 case attr::AssertCapability: {
0403 const auto *SA = cast<AssertCapabilityAttr>(A);
0404 Record.push_back(SA->isInherited());
0405 Record.push_back(A->isImplicit());
0406 Record.push_back(A->isPackExpansion());
0407 Record.push_back(SA->args_size());
0408 for (auto &Val : SA->args())
0409 Record.AddStmt(Val);
0410 break;
0411 }
0412 case attr::AssertExclusiveLock: {
0413 const auto *SA = cast<AssertExclusiveLockAttr>(A);
0414 Record.push_back(SA->isInherited());
0415 Record.push_back(A->isImplicit());
0416 Record.push_back(A->isPackExpansion());
0417 Record.push_back(SA->args_size());
0418 for (auto &Val : SA->args())
0419 Record.AddStmt(Val);
0420 break;
0421 }
0422 case attr::AssertSharedLock: {
0423 const auto *SA = cast<AssertSharedLockAttr>(A);
0424 Record.push_back(SA->isInherited());
0425 Record.push_back(A->isImplicit());
0426 Record.push_back(A->isPackExpansion());
0427 Record.push_back(SA->args_size());
0428 for (auto &Val : SA->args())
0429 Record.AddStmt(Val);
0430 break;
0431 }
0432 case attr::AssumeAligned: {
0433 const auto *SA = cast<AssumeAlignedAttr>(A);
0434 Record.push_back(SA->isInherited());
0435 Record.push_back(A->isImplicit());
0436 Record.push_back(A->isPackExpansion());
0437 Record.AddStmt(SA->getAlignment());
0438 Record.AddStmt(SA->getOffset());
0439 break;
0440 }
0441 case attr::Availability: {
0442 const auto *SA = cast<AvailabilityAttr>(A);
0443 Record.push_back(SA->isInherited());
0444 Record.push_back(A->isImplicit());
0445 Record.push_back(A->isPackExpansion());
0446 Record.AddIdentifierRef(SA->getPlatform());
0447 Record.AddVersionTuple(SA->getIntroduced());
0448 Record.AddVersionTuple(SA->getDeprecated());
0449 Record.AddVersionTuple(SA->getObsoleted());
0450 Record.push_back(SA->getUnavailable());
0451 Record.AddString(SA->getMessage());
0452 Record.push_back(SA->getStrict());
0453 Record.AddString(SA->getReplacement());
0454 Record.push_back(SA->getPriority());
0455 Record.AddIdentifierRef(SA->getEnvironment());
0456 break;
0457 }
0458 case attr::AvailableOnlyInDefaultEvalMethod: {
0459 const auto *SA = cast<AvailableOnlyInDefaultEvalMethodAttr>(A);
0460 Record.push_back(SA->isInherited());
0461 Record.push_back(A->isImplicit());
0462 Record.push_back(A->isPackExpansion());
0463 break;
0464 }
0465 case attr::BPFFastCall: {
0466 const auto *SA = cast<BPFFastCallAttr>(A);
0467 Record.push_back(SA->isInherited());
0468 Record.push_back(A->isImplicit());
0469 Record.push_back(A->isPackExpansion());
0470 break;
0471 }
0472 case attr::BPFPreserveAccessIndex: {
0473 const auto *SA = cast<BPFPreserveAccessIndexAttr>(A);
0474 Record.push_back(SA->isInherited());
0475 Record.push_back(A->isImplicit());
0476 Record.push_back(A->isPackExpansion());
0477 break;
0478 }
0479 case attr::BPFPreserveStaticOffset: {
0480 const auto *SA = cast<BPFPreserveStaticOffsetAttr>(A);
0481 Record.push_back(SA->isInherited());
0482 Record.push_back(A->isImplicit());
0483 Record.push_back(A->isPackExpansion());
0484 break;
0485 }
0486 case attr::BTFDeclTag: {
0487 const auto *SA = cast<BTFDeclTagAttr>(A);
0488 Record.push_back(SA->isInherited());
0489 Record.push_back(A->isImplicit());
0490 Record.push_back(A->isPackExpansion());
0491 Record.AddString(SA->getBTFDeclTag());
0492 break;
0493 }
0494 case attr::BTFTypeTag: {
0495 const auto *SA = cast<BTFTypeTagAttr>(A);
0496 Record.push_back(A->isImplicit());
0497 Record.push_back(A->isPackExpansion());
0498 Record.AddString(SA->getBTFTypeTag());
0499 break;
0500 }
0501 case attr::Blocking: {
0502 Record.push_back(A->isImplicit());
0503 Record.push_back(A->isPackExpansion());
0504 break;
0505 }
0506 case attr::Blocks: {
0507 const auto *SA = cast<BlocksAttr>(A);
0508 Record.push_back(SA->isInherited());
0509 Record.push_back(A->isImplicit());
0510 Record.push_back(A->isPackExpansion());
0511 Record.push_back(static_cast<uint64_t>(SA->getType()));
0512 break;
0513 }
0514 case attr::Builtin: {
0515 const auto *SA = cast<BuiltinAttr>(A);
0516 Record.push_back(SA->isInherited());
0517 Record.push_back(A->isImplicit());
0518 Record.push_back(A->isPackExpansion());
0519 Record.push_back(SA->getID());
0520 break;
0521 }
0522 case attr::BuiltinAlias: {
0523 const auto *SA = cast<BuiltinAliasAttr>(A);
0524 Record.push_back(A->isImplicit());
0525 Record.push_back(A->isPackExpansion());
0526 Record.AddIdentifierRef(SA->getBuiltinName());
0527 break;
0528 }
0529 case attr::C11NoReturn: {
0530 const auto *SA = cast<C11NoReturnAttr>(A);
0531 Record.push_back(SA->isInherited());
0532 Record.push_back(A->isImplicit());
0533 Record.push_back(A->isPackExpansion());
0534 break;
0535 }
0536 case attr::CDecl: {
0537 const auto *SA = cast<CDeclAttr>(A);
0538 Record.push_back(SA->isInherited());
0539 Record.push_back(A->isImplicit());
0540 Record.push_back(A->isPackExpansion());
0541 break;
0542 }
0543 case attr::CFAuditedTransfer: {
0544 const auto *SA = cast<CFAuditedTransferAttr>(A);
0545 Record.push_back(SA->isInherited());
0546 Record.push_back(A->isImplicit());
0547 Record.push_back(A->isPackExpansion());
0548 break;
0549 }
0550 case attr::CFConsumed: {
0551 const auto *SA = cast<CFConsumedAttr>(A);
0552 Record.push_back(SA->isInherited());
0553 Record.push_back(A->isImplicit());
0554 Record.push_back(A->isPackExpansion());
0555 break;
0556 }
0557 case attr::CFGuard: {
0558 const auto *SA = cast<CFGuardAttr>(A);
0559 Record.push_back(SA->isInherited());
0560 Record.push_back(A->isImplicit());
0561 Record.push_back(A->isPackExpansion());
0562 Record.push_back(static_cast<uint64_t>(SA->getGuard()));
0563 break;
0564 }
0565 case attr::CFICanonicalJumpTable: {
0566 const auto *SA = cast<CFICanonicalJumpTableAttr>(A);
0567 Record.push_back(SA->isInherited());
0568 Record.push_back(A->isImplicit());
0569 Record.push_back(A->isPackExpansion());
0570 break;
0571 }
0572 case attr::CFReturnsNotRetained: {
0573 const auto *SA = cast<CFReturnsNotRetainedAttr>(A);
0574 Record.push_back(SA->isInherited());
0575 Record.push_back(A->isImplicit());
0576 Record.push_back(A->isPackExpansion());
0577 break;
0578 }
0579 case attr::CFReturnsRetained: {
0580 const auto *SA = cast<CFReturnsRetainedAttr>(A);
0581 Record.push_back(SA->isInherited());
0582 Record.push_back(A->isImplicit());
0583 Record.push_back(A->isPackExpansion());
0584 break;
0585 }
0586 case attr::CFUnknownTransfer: {
0587 const auto *SA = cast<CFUnknownTransferAttr>(A);
0588 Record.push_back(SA->isInherited());
0589 Record.push_back(A->isImplicit());
0590 Record.push_back(A->isPackExpansion());
0591 break;
0592 }
0593 case attr::CPUDispatch: {
0594 const auto *SA = cast<CPUDispatchAttr>(A);
0595 Record.push_back(SA->isInherited());
0596 Record.push_back(A->isImplicit());
0597 Record.push_back(A->isPackExpansion());
0598 Record.push_back(SA->cpus_size());
0599 for (auto &Val : SA->cpus())
0600 Record.AddIdentifierRef(Val);
0601 break;
0602 }
0603 case attr::CPUSpecific: {
0604 const auto *SA = cast<CPUSpecificAttr>(A);
0605 Record.push_back(SA->isInherited());
0606 Record.push_back(A->isImplicit());
0607 Record.push_back(A->isPackExpansion());
0608 Record.push_back(SA->cpus_size());
0609 for (auto &Val : SA->cpus())
0610 Record.AddIdentifierRef(Val);
0611 break;
0612 }
0613 case attr::CUDAConstant: {
0614 const auto *SA = cast<CUDAConstantAttr>(A);
0615 Record.push_back(SA->isInherited());
0616 Record.push_back(A->isImplicit());
0617 Record.push_back(A->isPackExpansion());
0618 break;
0619 }
0620 case attr::CUDADevice: {
0621 const auto *SA = cast<CUDADeviceAttr>(A);
0622 Record.push_back(SA->isInherited());
0623 Record.push_back(A->isImplicit());
0624 Record.push_back(A->isPackExpansion());
0625 break;
0626 }
0627 case attr::CUDADeviceBuiltinSurfaceType: {
0628 const auto *SA = cast<CUDADeviceBuiltinSurfaceTypeAttr>(A);
0629 Record.push_back(SA->isInherited());
0630 Record.push_back(A->isImplicit());
0631 Record.push_back(A->isPackExpansion());
0632 break;
0633 }
0634 case attr::CUDADeviceBuiltinTextureType: {
0635 const auto *SA = cast<CUDADeviceBuiltinTextureTypeAttr>(A);
0636 Record.push_back(SA->isInherited());
0637 Record.push_back(A->isImplicit());
0638 Record.push_back(A->isPackExpansion());
0639 break;
0640 }
0641 case attr::CUDAGlobal: {
0642 const auto *SA = cast<CUDAGlobalAttr>(A);
0643 Record.push_back(SA->isInherited());
0644 Record.push_back(A->isImplicit());
0645 Record.push_back(A->isPackExpansion());
0646 break;
0647 }
0648 case attr::CUDAGridConstant: {
0649 const auto *SA = cast<CUDAGridConstantAttr>(A);
0650 Record.push_back(SA->isInherited());
0651 Record.push_back(A->isImplicit());
0652 Record.push_back(A->isPackExpansion());
0653 break;
0654 }
0655 case attr::CUDAHost: {
0656 const auto *SA = cast<CUDAHostAttr>(A);
0657 Record.push_back(SA->isInherited());
0658 Record.push_back(A->isImplicit());
0659 Record.push_back(A->isPackExpansion());
0660 break;
0661 }
0662 case attr::CUDAInvalidTarget: {
0663 const auto *SA = cast<CUDAInvalidTargetAttr>(A);
0664 Record.push_back(SA->isInherited());
0665 Record.push_back(A->isImplicit());
0666 Record.push_back(A->isPackExpansion());
0667 break;
0668 }
0669 case attr::CUDALaunchBounds: {
0670 const auto *SA = cast<CUDALaunchBoundsAttr>(A);
0671 Record.push_back(SA->isInherited());
0672 Record.push_back(A->isImplicit());
0673 Record.push_back(A->isPackExpansion());
0674 Record.AddStmt(SA->getMaxThreads());
0675 Record.AddStmt(SA->getMinBlocks());
0676 Record.AddStmt(SA->getMaxBlocks());
0677 break;
0678 }
0679 case attr::CUDAShared: {
0680 const auto *SA = cast<CUDASharedAttr>(A);
0681 Record.push_back(SA->isInherited());
0682 Record.push_back(A->isImplicit());
0683 Record.push_back(A->isPackExpansion());
0684 break;
0685 }
0686 case attr::CXX11NoReturn: {
0687 const auto *SA = cast<CXX11NoReturnAttr>(A);
0688 Record.push_back(SA->isInherited());
0689 Record.push_back(A->isImplicit());
0690 Record.push_back(A->isPackExpansion());
0691 break;
0692 }
0693 case attr::CXXAssume: {
0694 const auto *SA = cast<CXXAssumeAttr>(A);
0695 Record.push_back(A->isImplicit());
0696 Record.push_back(A->isPackExpansion());
0697 Record.AddStmt(SA->getAssumption());
0698 break;
0699 }
0700 case attr::CallableWhen: {
0701 const auto *SA = cast<CallableWhenAttr>(A);
0702 Record.push_back(SA->isInherited());
0703 Record.push_back(A->isImplicit());
0704 Record.push_back(A->isPackExpansion());
0705 Record.push_back(SA->callableStates_size());
0706 for (CallableWhenAttr::callableStates_iterator i = SA->callableStates_begin(), e = SA->callableStates_end(); i != e; ++i)
0707 Record.push_back((*i));
0708 break;
0709 }
0710 case attr::Callback: {
0711 const auto *SA = cast<CallbackAttr>(A);
0712 Record.push_back(SA->isInherited());
0713 Record.push_back(A->isImplicit());
0714 Record.push_back(A->isPackExpansion());
0715 Record.push_back(SA->encoding_size());
0716 for (auto &Val : SA->encoding())
0717 Record.push_back(Val);
0718 break;
0719 }
0720 case attr::CalledOnce: {
0721 Record.push_back(A->isImplicit());
0722 Record.push_back(A->isPackExpansion());
0723 break;
0724 }
0725 case attr::Capability: {
0726 const auto *SA = cast<CapabilityAttr>(A);
0727 Record.push_back(SA->isInherited());
0728 Record.push_back(A->isImplicit());
0729 Record.push_back(A->isPackExpansion());
0730 Record.AddString(SA->getName());
0731 break;
0732 }
0733 case attr::CapturedRecord: {
0734 const auto *SA = cast<CapturedRecordAttr>(A);
0735 Record.push_back(SA->isInherited());
0736 Record.push_back(A->isImplicit());
0737 Record.push_back(A->isPackExpansion());
0738 break;
0739 }
0740 case attr::CarriesDependency: {
0741 const auto *SA = cast<CarriesDependencyAttr>(A);
0742 Record.push_back(SA->isInherited());
0743 Record.push_back(A->isImplicit());
0744 Record.push_back(A->isPackExpansion());
0745 break;
0746 }
0747 case attr::Cleanup: {
0748 const auto *SA = cast<CleanupAttr>(A);
0749 Record.push_back(SA->isInherited());
0750 Record.push_back(A->isImplicit());
0751 Record.push_back(A->isPackExpansion());
0752 Record.AddDeclRef(SA->getFunctionDecl());
0753 break;
0754 }
0755 case attr::ClspvLibclcBuiltin: {
0756 const auto *SA = cast<ClspvLibclcBuiltinAttr>(A);
0757 Record.push_back(SA->isInherited());
0758 Record.push_back(A->isImplicit());
0759 Record.push_back(A->isPackExpansion());
0760 break;
0761 }
0762 case attr::CmseNSCall: {
0763 Record.push_back(A->isImplicit());
0764 Record.push_back(A->isPackExpansion());
0765 break;
0766 }
0767 case attr::CmseNSEntry: {
0768 const auto *SA = cast<CmseNSEntryAttr>(A);
0769 Record.push_back(SA->isInherited());
0770 Record.push_back(A->isImplicit());
0771 Record.push_back(A->isPackExpansion());
0772 break;
0773 }
0774 case attr::CodeAlign: {
0775 const auto *SA = cast<CodeAlignAttr>(A);
0776 Record.push_back(A->isImplicit());
0777 Record.push_back(A->isPackExpansion());
0778 Record.AddStmt(SA->getAlignment());
0779 break;
0780 }
0781 case attr::CodeModel: {
0782 const auto *SA = cast<CodeModelAttr>(A);
0783 Record.push_back(SA->isInherited());
0784 Record.push_back(A->isImplicit());
0785 Record.push_back(A->isPackExpansion());
0786 Record.push_back(static_cast<uint64_t>(SA->getModel()));
0787 break;
0788 }
0789 case attr::CodeSeg: {
0790 const auto *SA = cast<CodeSegAttr>(A);
0791 Record.push_back(SA->isInherited());
0792 Record.push_back(A->isImplicit());
0793 Record.push_back(A->isPackExpansion());
0794 Record.AddString(SA->getName());
0795 break;
0796 }
0797 case attr::Cold: {
0798 const auto *SA = cast<ColdAttr>(A);
0799 Record.push_back(SA->isInherited());
0800 Record.push_back(A->isImplicit());
0801 Record.push_back(A->isPackExpansion());
0802 break;
0803 }
0804 case attr::Common: {
0805 const auto *SA = cast<CommonAttr>(A);
0806 Record.push_back(SA->isInherited());
0807 Record.push_back(A->isImplicit());
0808 Record.push_back(A->isPackExpansion());
0809 break;
0810 }
0811 case attr::Const: {
0812 const auto *SA = cast<ConstAttr>(A);
0813 Record.push_back(SA->isInherited());
0814 Record.push_back(A->isImplicit());
0815 Record.push_back(A->isPackExpansion());
0816 break;
0817 }
0818 case attr::ConstInit: {
0819 const auto *SA = cast<ConstInitAttr>(A);
0820 Record.push_back(SA->isInherited());
0821 Record.push_back(A->isImplicit());
0822 Record.push_back(A->isPackExpansion());
0823 break;
0824 }
0825 case attr::Constructor: {
0826 const auto *SA = cast<ConstructorAttr>(A);
0827 Record.push_back(SA->isInherited());
0828 Record.push_back(A->isImplicit());
0829 Record.push_back(A->isPackExpansion());
0830 Record.push_back(SA->getPriority());
0831 break;
0832 }
0833 case attr::Consumable: {
0834 const auto *SA = cast<ConsumableAttr>(A);
0835 Record.push_back(SA->isInherited());
0836 Record.push_back(A->isImplicit());
0837 Record.push_back(A->isPackExpansion());
0838 Record.push_back(static_cast<uint64_t>(SA->getDefaultState()));
0839 break;
0840 }
0841 case attr::ConsumableAutoCast: {
0842 const auto *SA = cast<ConsumableAutoCastAttr>(A);
0843 Record.push_back(SA->isInherited());
0844 Record.push_back(A->isImplicit());
0845 Record.push_back(A->isPackExpansion());
0846 break;
0847 }
0848 case attr::ConsumableSetOnRead: {
0849 const auto *SA = cast<ConsumableSetOnReadAttr>(A);
0850 Record.push_back(SA->isInherited());
0851 Record.push_back(A->isImplicit());
0852 Record.push_back(A->isPackExpansion());
0853 break;
0854 }
0855 case attr::Convergent: {
0856 const auto *SA = cast<ConvergentAttr>(A);
0857 Record.push_back(SA->isInherited());
0858 Record.push_back(A->isImplicit());
0859 Record.push_back(A->isPackExpansion());
0860 break;
0861 }
0862 case attr::CoroAwaitElidable: {
0863 const auto *SA = cast<CoroAwaitElidableAttr>(A);
0864 Record.push_back(SA->isInherited());
0865 Record.push_back(A->isImplicit());
0866 Record.push_back(A->isPackExpansion());
0867 break;
0868 }
0869 case attr::CoroAwaitElidableArgument: {
0870 const auto *SA = cast<CoroAwaitElidableArgumentAttr>(A);
0871 Record.push_back(SA->isInherited());
0872 Record.push_back(A->isImplicit());
0873 Record.push_back(A->isPackExpansion());
0874 break;
0875 }
0876 case attr::CoroDisableLifetimeBound: {
0877 const auto *SA = cast<CoroDisableLifetimeBoundAttr>(A);
0878 Record.push_back(SA->isInherited());
0879 Record.push_back(A->isImplicit());
0880 Record.push_back(A->isPackExpansion());
0881 break;
0882 }
0883 case attr::CoroLifetimeBound: {
0884 const auto *SA = cast<CoroLifetimeBoundAttr>(A);
0885 Record.push_back(SA->isInherited());
0886 Record.push_back(A->isImplicit());
0887 Record.push_back(A->isPackExpansion());
0888 break;
0889 }
0890 case attr::CoroOnlyDestroyWhenComplete: {
0891 const auto *SA = cast<CoroOnlyDestroyWhenCompleteAttr>(A);
0892 Record.push_back(SA->isInherited());
0893 Record.push_back(A->isImplicit());
0894 Record.push_back(A->isPackExpansion());
0895 break;
0896 }
0897 case attr::CoroReturnType: {
0898 const auto *SA = cast<CoroReturnTypeAttr>(A);
0899 Record.push_back(SA->isInherited());
0900 Record.push_back(A->isImplicit());
0901 Record.push_back(A->isPackExpansion());
0902 break;
0903 }
0904 case attr::CoroWrapper: {
0905 const auto *SA = cast<CoroWrapperAttr>(A);
0906 Record.push_back(SA->isInherited());
0907 Record.push_back(A->isImplicit());
0908 Record.push_back(A->isPackExpansion());
0909 break;
0910 }
0911 case attr::CountedBy: {
0912 const auto *SA = cast<CountedByAttr>(A);
0913 Record.push_back(SA->isInherited());
0914 Record.push_back(A->isImplicit());
0915 Record.push_back(A->isPackExpansion());
0916 Record.AddStmt(SA->getCount());
0917 Record.push_back(SA->getNestedLevel());
0918 break;
0919 }
0920 case attr::CountedByOrNull: {
0921 const auto *SA = cast<CountedByOrNullAttr>(A);
0922 Record.push_back(SA->isInherited());
0923 Record.push_back(A->isImplicit());
0924 Record.push_back(A->isPackExpansion());
0925 Record.AddStmt(SA->getCount());
0926 Record.push_back(SA->getNestedLevel());
0927 break;
0928 }
0929 case attr::DLLExport: {
0930 const auto *SA = cast<DLLExportAttr>(A);
0931 Record.push_back(SA->isInherited());
0932 Record.push_back(A->isImplicit());
0933 Record.push_back(A->isPackExpansion());
0934 break;
0935 }
0936 case attr::DLLExportStaticLocal: {
0937 const auto *SA = cast<DLLExportStaticLocalAttr>(A);
0938 Record.push_back(SA->isInherited());
0939 Record.push_back(A->isImplicit());
0940 Record.push_back(A->isPackExpansion());
0941 break;
0942 }
0943 case attr::DLLImport: {
0944 const auto *SA = cast<DLLImportAttr>(A);
0945 Record.push_back(SA->isInherited());
0946 Record.push_back(A->isImplicit());
0947 Record.push_back(A->isPackExpansion());
0948 break;
0949 }
0950 case attr::DLLImportStaticLocal: {
0951 const auto *SA = cast<DLLImportStaticLocalAttr>(A);
0952 Record.push_back(SA->isInherited());
0953 Record.push_back(A->isImplicit());
0954 Record.push_back(A->isPackExpansion());
0955 break;
0956 }
0957 case attr::Deprecated: {
0958 const auto *SA = cast<DeprecatedAttr>(A);
0959 Record.push_back(SA->isInherited());
0960 Record.push_back(A->isImplicit());
0961 Record.push_back(A->isPackExpansion());
0962 Record.AddString(SA->getMessage());
0963 Record.AddString(SA->getReplacement());
0964 break;
0965 }
0966 case attr::Destructor: {
0967 const auto *SA = cast<DestructorAttr>(A);
0968 Record.push_back(SA->isInherited());
0969 Record.push_back(A->isImplicit());
0970 Record.push_back(A->isPackExpansion());
0971 Record.push_back(SA->getPriority());
0972 break;
0973 }
0974 case attr::DiagnoseAsBuiltin: {
0975 const auto *SA = cast<DiagnoseAsBuiltinAttr>(A);
0976 Record.push_back(SA->isInherited());
0977 Record.push_back(A->isImplicit());
0978 Record.push_back(A->isPackExpansion());
0979 Record.AddDeclRef(SA->getFunction());
0980 Record.push_back(SA->argIndices_size());
0981 for (auto &Val : SA->argIndices())
0982 Record.push_back(Val);
0983 break;
0984 }
0985 case attr::DiagnoseIf: {
0986 const auto *SA = cast<DiagnoseIfAttr>(A);
0987 Record.push_back(SA->isInherited());
0988 Record.push_back(A->isImplicit());
0989 Record.push_back(A->isPackExpansion());
0990 Record.AddStmt(SA->getCond());
0991 Record.AddString(SA->getMessage());
0992 Record.push_back(static_cast<uint64_t>(SA->getDefaultSeverity()));
0993 Record.AddString(SA->getWarningGroup());
0994 Record.push_back(SA->getArgDependent());
0995 Record.AddDeclRef(SA->getParent());
0996 break;
0997 }
0998 case attr::DisableSanitizerInstrumentation: {
0999 const auto *SA = cast<DisableSanitizerInstrumentationAttr>(A);
1000 Record.push_back(SA->isInherited());
1001 Record.push_back(A->isImplicit());
1002 Record.push_back(A->isPackExpansion());
1003 break;
1004 }
1005 case attr::DisableTailCalls: {
1006 const auto *SA = cast<DisableTailCallsAttr>(A);
1007 Record.push_back(SA->isInherited());
1008 Record.push_back(A->isImplicit());
1009 Record.push_back(A->isPackExpansion());
1010 break;
1011 }
1012 case attr::EmptyBases: {
1013 const auto *SA = cast<EmptyBasesAttr>(A);
1014 Record.push_back(SA->isInherited());
1015 Record.push_back(A->isImplicit());
1016 Record.push_back(A->isPackExpansion());
1017 break;
1018 }
1019 case attr::EnableIf: {
1020 const auto *SA = cast<EnableIfAttr>(A);
1021 Record.push_back(SA->isInherited());
1022 Record.push_back(A->isImplicit());
1023 Record.push_back(A->isPackExpansion());
1024 Record.AddStmt(SA->getCond());
1025 Record.AddString(SA->getMessage());
1026 break;
1027 }
1028 case attr::EnforceTCB: {
1029 const auto *SA = cast<EnforceTCBAttr>(A);
1030 Record.push_back(SA->isInherited());
1031 Record.push_back(A->isImplicit());
1032 Record.push_back(A->isPackExpansion());
1033 Record.AddString(SA->getTCBName());
1034 break;
1035 }
1036 case attr::EnforceTCBLeaf: {
1037 const auto *SA = cast<EnforceTCBLeafAttr>(A);
1038 Record.push_back(SA->isInherited());
1039 Record.push_back(A->isImplicit());
1040 Record.push_back(A->isPackExpansion());
1041 Record.AddString(SA->getTCBName());
1042 break;
1043 }
1044 case attr::EnumExtensibility: {
1045 const auto *SA = cast<EnumExtensibilityAttr>(A);
1046 Record.push_back(SA->isInherited());
1047 Record.push_back(A->isImplicit());
1048 Record.push_back(A->isPackExpansion());
1049 Record.push_back(static_cast<uint64_t>(SA->getExtensibility()));
1050 break;
1051 }
1052 case attr::Error: {
1053 const auto *SA = cast<ErrorAttr>(A);
1054 Record.push_back(SA->isInherited());
1055 Record.push_back(A->isImplicit());
1056 Record.push_back(A->isPackExpansion());
1057 Record.AddString(SA->getUserDiagnostic());
1058 break;
1059 }
1060 case attr::ExcludeFromExplicitInstantiation: {
1061 const auto *SA = cast<ExcludeFromExplicitInstantiationAttr>(A);
1062 Record.push_back(SA->isInherited());
1063 Record.push_back(A->isImplicit());
1064 Record.push_back(A->isPackExpansion());
1065 break;
1066 }
1067 case attr::ExclusiveTrylockFunction: {
1068 const auto *SA = cast<ExclusiveTrylockFunctionAttr>(A);
1069 Record.push_back(SA->isInherited());
1070 Record.push_back(A->isImplicit());
1071 Record.push_back(A->isPackExpansion());
1072 Record.AddStmt(SA->getSuccessValue());
1073 Record.push_back(SA->args_size());
1074 for (auto &Val : SA->args())
1075 Record.AddStmt(Val);
1076 break;
1077 }
1078 case attr::ExplicitInit: {
1079 const auto *SA = cast<ExplicitInitAttr>(A);
1080 Record.push_back(SA->isInherited());
1081 Record.push_back(A->isImplicit());
1082 Record.push_back(A->isPackExpansion());
1083 break;
1084 }
1085 case attr::ExternalSourceSymbol: {
1086 const auto *SA = cast<ExternalSourceSymbolAttr>(A);
1087 Record.push_back(SA->isInherited());
1088 Record.push_back(A->isImplicit());
1089 Record.push_back(A->isPackExpansion());
1090 Record.AddString(SA->getLanguage());
1091 Record.AddString(SA->getDefinedIn());
1092 Record.push_back(SA->getGeneratedDeclaration());
1093 Record.AddString(SA->getUSR());
1094 break;
1095 }
1096 case attr::FallThrough: {
1097 Record.push_back(A->isImplicit());
1098 Record.push_back(A->isPackExpansion());
1099 break;
1100 }
1101 case attr::FastCall: {
1102 const auto *SA = cast<FastCallAttr>(A);
1103 Record.push_back(SA->isInherited());
1104 Record.push_back(A->isImplicit());
1105 Record.push_back(A->isPackExpansion());
1106 break;
1107 }
1108 case attr::Final: {
1109 const auto *SA = cast<FinalAttr>(A);
1110 Record.push_back(SA->isInherited());
1111 Record.push_back(A->isImplicit());
1112 Record.push_back(A->isPackExpansion());
1113 break;
1114 }
1115 case attr::FlagEnum: {
1116 const auto *SA = cast<FlagEnumAttr>(A);
1117 Record.push_back(SA->isInherited());
1118 Record.push_back(A->isImplicit());
1119 Record.push_back(A->isPackExpansion());
1120 break;
1121 }
1122 case attr::Flatten: {
1123 const auto *SA = cast<FlattenAttr>(A);
1124 Record.push_back(SA->isInherited());
1125 Record.push_back(A->isImplicit());
1126 Record.push_back(A->isPackExpansion());
1127 break;
1128 }
1129 case attr::Format: {
1130 const auto *SA = cast<FormatAttr>(A);
1131 Record.push_back(SA->isInherited());
1132 Record.push_back(A->isImplicit());
1133 Record.push_back(A->isPackExpansion());
1134 Record.AddIdentifierRef(SA->getType());
1135 Record.push_back(SA->getFormatIdx());
1136 Record.push_back(SA->getFirstArg());
1137 break;
1138 }
1139 case attr::FormatArg: {
1140 const auto *SA = cast<FormatArgAttr>(A);
1141 Record.push_back(SA->isInherited());
1142 Record.push_back(A->isImplicit());
1143 Record.push_back(A->isPackExpansion());
1144 Record.push_back(SA->getFormatIdx().serialize());
1145 break;
1146 }
1147 case attr::FunctionReturnThunks: {
1148 const auto *SA = cast<FunctionReturnThunksAttr>(A);
1149 Record.push_back(SA->isInherited());
1150 Record.push_back(A->isImplicit());
1151 Record.push_back(A->isPackExpansion());
1152 Record.push_back(static_cast<uint64_t>(SA->getThunkType()));
1153 break;
1154 }
1155 case attr::GNUInline: {
1156 const auto *SA = cast<GNUInlineAttr>(A);
1157 Record.push_back(SA->isInherited());
1158 Record.push_back(A->isImplicit());
1159 Record.push_back(A->isPackExpansion());
1160 break;
1161 }
1162 case attr::GuardedBy: {
1163 const auto *SA = cast<GuardedByAttr>(A);
1164 Record.push_back(SA->isInherited());
1165 Record.push_back(A->isImplicit());
1166 Record.push_back(A->isPackExpansion());
1167 Record.AddStmt(SA->getArg());
1168 break;
1169 }
1170 case attr::GuardedVar: {
1171 const auto *SA = cast<GuardedVarAttr>(A);
1172 Record.push_back(SA->isInherited());
1173 Record.push_back(A->isImplicit());
1174 Record.push_back(A->isPackExpansion());
1175 break;
1176 }
1177 case attr::HIPManaged: {
1178 const auto *SA = cast<HIPManagedAttr>(A);
1179 Record.push_back(SA->isInherited());
1180 Record.push_back(A->isImplicit());
1181 Record.push_back(A->isPackExpansion());
1182 break;
1183 }
1184 case attr::HLSLContainedType: {
1185 const auto *SA = cast<HLSLContainedTypeAttr>(A);
1186 Record.push_back(A->isImplicit());
1187 Record.push_back(A->isPackExpansion());
1188 Record.AddTypeSourceInfo(SA->getTypeLoc());
1189 break;
1190 }
1191 case attr::HLSLControlFlowHint: {
1192 Record.push_back(A->isImplicit());
1193 Record.push_back(A->isPackExpansion());
1194 break;
1195 }
1196 case attr::HLSLGroupSharedAddressSpace: {
1197 Record.push_back(A->isImplicit());
1198 Record.push_back(A->isPackExpansion());
1199 break;
1200 }
1201 case attr::HLSLLoopHint: {
1202 const auto *SA = cast<HLSLLoopHintAttr>(A);
1203 Record.push_back(A->isImplicit());
1204 Record.push_back(A->isPackExpansion());
1205 Record.push_back(SA->getDirective());
1206 break;
1207 }
1208 case attr::HLSLNumThreads: {
1209 const auto *SA = cast<HLSLNumThreadsAttr>(A);
1210 Record.push_back(SA->isInherited());
1211 Record.push_back(A->isImplicit());
1212 Record.push_back(A->isPackExpansion());
1213 Record.push_back(SA->getX());
1214 Record.push_back(SA->getY());
1215 Record.push_back(SA->getZ());
1216 break;
1217 }
1218 case attr::HLSLPackOffset: {
1219 const auto *SA = cast<HLSLPackOffsetAttr>(A);
1220 Record.push_back(SA->isInherited());
1221 Record.push_back(A->isImplicit());
1222 Record.push_back(A->isPackExpansion());
1223 Record.push_back(SA->getSubcomponent());
1224 Record.push_back(SA->getComponent());
1225 break;
1226 }
1227 case attr::HLSLParamModifier: {
1228 const auto *SA = cast<HLSLParamModifierAttr>(A);
1229 Record.push_back(SA->isInherited());
1230 Record.push_back(A->isImplicit());
1231 Record.push_back(A->isPackExpansion());
1232 Record.push_back(SA->getMergedSpelling());
1233 break;
1234 }
1235 case attr::HLSLROV: {
1236 Record.push_back(A->isImplicit());
1237 Record.push_back(A->isPackExpansion());
1238 break;
1239 }
1240 case attr::HLSLRawBuffer: {
1241 Record.push_back(A->isImplicit());
1242 Record.push_back(A->isPackExpansion());
1243 break;
1244 }
1245 case attr::HLSLResource: {
1246 const auto *SA = cast<HLSLResourceAttr>(A);
1247 Record.push_back(SA->isInherited());
1248 Record.push_back(A->isImplicit());
1249 Record.push_back(A->isPackExpansion());
1250 Record.push_back(static_cast<uint64_t>(SA->getResourceKind()));
1251 break;
1252 }
1253 case attr::HLSLResourceBinding: {
1254 const auto *SA = cast<HLSLResourceBindingAttr>(A);
1255 Record.push_back(SA->isInherited());
1256 Record.push_back(A->isImplicit());
1257 Record.push_back(A->isPackExpansion());
1258 Record.AddString(SA->getSlot());
1259 Record.AddString(SA->getSpace());
1260 break;
1261 }
1262 case attr::HLSLResourceClass: {
1263 const auto *SA = cast<HLSLResourceClassAttr>(A);
1264 Record.push_back(A->isImplicit());
1265 Record.push_back(A->isPackExpansion());
1266 Record.push_back(static_cast<uint64_t>(SA->getResourceClass()));
1267 break;
1268 }
1269 case attr::HLSLSV_DispatchThreadID: {
1270 const auto *SA = cast<HLSLSV_DispatchThreadIDAttr>(A);
1271 Record.push_back(SA->isInherited());
1272 Record.push_back(A->isImplicit());
1273 Record.push_back(A->isPackExpansion());
1274 break;
1275 }
1276 case attr::HLSLSV_GroupID: {
1277 const auto *SA = cast<HLSLSV_GroupIDAttr>(A);
1278 Record.push_back(SA->isInherited());
1279 Record.push_back(A->isImplicit());
1280 Record.push_back(A->isPackExpansion());
1281 break;
1282 }
1283 case attr::HLSLSV_GroupIndex: {
1284 const auto *SA = cast<HLSLSV_GroupIndexAttr>(A);
1285 Record.push_back(SA->isInherited());
1286 Record.push_back(A->isImplicit());
1287 Record.push_back(A->isPackExpansion());
1288 break;
1289 }
1290 case attr::HLSLSV_GroupThreadID: {
1291 const auto *SA = cast<HLSLSV_GroupThreadIDAttr>(A);
1292 Record.push_back(SA->isInherited());
1293 Record.push_back(A->isImplicit());
1294 Record.push_back(A->isPackExpansion());
1295 break;
1296 }
1297 case attr::HLSLShader: {
1298 const auto *SA = cast<HLSLShaderAttr>(A);
1299 Record.push_back(SA->isInherited());
1300 Record.push_back(A->isImplicit());
1301 Record.push_back(A->isPackExpansion());
1302 Record.push_back(static_cast<uint64_t>(SA->getType()));
1303 break;
1304 }
1305 case attr::HLSLWaveSize: {
1306 const auto *SA = cast<HLSLWaveSizeAttr>(A);
1307 Record.push_back(SA->isInherited());
1308 Record.push_back(A->isImplicit());
1309 Record.push_back(A->isPackExpansion());
1310 Record.push_back(SA->getMin());
1311 Record.push_back(SA->getMax());
1312 Record.push_back(SA->getPreferred());
1313 break;
1314 }
1315 case attr::Hot: {
1316 const auto *SA = cast<HotAttr>(A);
1317 Record.push_back(SA->isInherited());
1318 Record.push_back(A->isImplicit());
1319 Record.push_back(A->isPackExpansion());
1320 break;
1321 }
1322 case attr::HybridPatchable: {
1323 const auto *SA = cast<HybridPatchableAttr>(A);
1324 Record.push_back(SA->isInherited());
1325 Record.push_back(A->isImplicit());
1326 Record.push_back(A->isPackExpansion());
1327 break;
1328 }
1329 case attr::IBAction: {
1330 const auto *SA = cast<IBActionAttr>(A);
1331 Record.push_back(SA->isInherited());
1332 Record.push_back(A->isImplicit());
1333 Record.push_back(A->isPackExpansion());
1334 break;
1335 }
1336 case attr::IBOutlet: {
1337 const auto *SA = cast<IBOutletAttr>(A);
1338 Record.push_back(SA->isInherited());
1339 Record.push_back(A->isImplicit());
1340 Record.push_back(A->isPackExpansion());
1341 break;
1342 }
1343 case attr::IBOutletCollection: {
1344 const auto *SA = cast<IBOutletCollectionAttr>(A);
1345 Record.push_back(SA->isInherited());
1346 Record.push_back(A->isImplicit());
1347 Record.push_back(A->isPackExpansion());
1348 Record.AddTypeSourceInfo(SA->getInterfaceLoc());
1349 break;
1350 }
1351 case attr::IFunc: {
1352 const auto *SA = cast<IFuncAttr>(A);
1353 Record.push_back(A->isImplicit());
1354 Record.push_back(A->isPackExpansion());
1355 Record.AddString(SA->getResolver());
1356 break;
1357 }
1358 case attr::InitPriority: {
1359 const auto *SA = cast<InitPriorityAttr>(A);
1360 Record.push_back(SA->isInherited());
1361 Record.push_back(A->isImplicit());
1362 Record.push_back(A->isPackExpansion());
1363 Record.push_back(SA->getPriority());
1364 break;
1365 }
1366 case attr::InitSeg: {
1367 const auto *SA = cast<InitSegAttr>(A);
1368 Record.push_back(A->isImplicit());
1369 Record.push_back(A->isPackExpansion());
1370 Record.AddString(SA->getSection());
1371 break;
1372 }
1373 case attr::IntelOclBicc: {
1374 const auto *SA = cast<IntelOclBiccAttr>(A);
1375 Record.push_back(SA->isInherited());
1376 Record.push_back(A->isImplicit());
1377 Record.push_back(A->isPackExpansion());
1378 break;
1379 }
1380 case attr::InternalLinkage: {
1381 const auto *SA = cast<InternalLinkageAttr>(A);
1382 Record.push_back(SA->isInherited());
1383 Record.push_back(A->isImplicit());
1384 Record.push_back(A->isPackExpansion());
1385 break;
1386 }
1387 case attr::LTOVisibilityPublic: {
1388 const auto *SA = cast<LTOVisibilityPublicAttr>(A);
1389 Record.push_back(SA->isInherited());
1390 Record.push_back(A->isImplicit());
1391 Record.push_back(A->isPackExpansion());
1392 break;
1393 }
1394 case attr::LayoutVersion: {
1395 const auto *SA = cast<LayoutVersionAttr>(A);
1396 Record.push_back(SA->isInherited());
1397 Record.push_back(A->isImplicit());
1398 Record.push_back(A->isPackExpansion());
1399 Record.push_back(SA->getVersion());
1400 break;
1401 }
1402 case attr::Leaf: {
1403 const auto *SA = cast<LeafAttr>(A);
1404 Record.push_back(SA->isInherited());
1405 Record.push_back(A->isImplicit());
1406 Record.push_back(A->isPackExpansion());
1407 break;
1408 }
1409 case attr::LifetimeBound: {
1410 const auto *SA = cast<LifetimeBoundAttr>(A);
1411 Record.push_back(SA->isInherited());
1412 Record.push_back(A->isImplicit());
1413 Record.push_back(A->isPackExpansion());
1414 break;
1415 }
1416 case attr::LifetimeCaptureBy: {
1417 const auto *SA = cast<LifetimeCaptureByAttr>(A);
1418 Record.push_back(SA->isInherited());
1419 Record.push_back(A->isImplicit());
1420 Record.push_back(A->isPackExpansion());
1421 Record.push_back(SA->params_size());
1422 for (auto &Val : SA->params())
1423 Record.push_back(Val);
1424 break;
1425 }
1426 case attr::Likely: {
1427 Record.push_back(A->isImplicit());
1428 Record.push_back(A->isPackExpansion());
1429 break;
1430 }
1431 case attr::LoaderUninitialized: {
1432 Record.push_back(A->isImplicit());
1433 Record.push_back(A->isPackExpansion());
1434 break;
1435 }
1436 case attr::LockReturned: {
1437 const auto *SA = cast<LockReturnedAttr>(A);
1438 Record.push_back(SA->isInherited());
1439 Record.push_back(A->isImplicit());
1440 Record.push_back(A->isPackExpansion());
1441 Record.AddStmt(SA->getArg());
1442 break;
1443 }
1444 case attr::LocksExcluded: {
1445 const auto *SA = cast<LocksExcludedAttr>(A);
1446 Record.push_back(SA->isInherited());
1447 Record.push_back(A->isImplicit());
1448 Record.push_back(A->isPackExpansion());
1449 Record.push_back(SA->args_size());
1450 for (auto &Val : SA->args())
1451 Record.AddStmt(Val);
1452 break;
1453 }
1454 case attr::LoopHint: {
1455 const auto *SA = cast<LoopHintAttr>(A);
1456 Record.push_back(A->isImplicit());
1457 Record.push_back(A->isPackExpansion());
1458 Record.push_back(static_cast<uint64_t>(SA->getOption()));
1459 Record.push_back(static_cast<uint64_t>(SA->getState()));
1460 Record.AddStmt(SA->getValue());
1461 break;
1462 }
1463 case attr::M68kInterrupt: {
1464 const auto *SA = cast<M68kInterruptAttr>(A);
1465 Record.push_back(SA->isInherited());
1466 Record.push_back(A->isImplicit());
1467 Record.push_back(A->isPackExpansion());
1468 Record.push_back(SA->getNumber());
1469 break;
1470 }
1471 case attr::M68kRTD: {
1472 const auto *SA = cast<M68kRTDAttr>(A);
1473 Record.push_back(SA->isInherited());
1474 Record.push_back(A->isImplicit());
1475 Record.push_back(A->isPackExpansion());
1476 break;
1477 }
1478 case attr::MIGServerRoutine: {
1479 const auto *SA = cast<MIGServerRoutineAttr>(A);
1480 Record.push_back(SA->isInherited());
1481 Record.push_back(A->isImplicit());
1482 Record.push_back(A->isPackExpansion());
1483 break;
1484 }
1485 case attr::MSABI: {
1486 const auto *SA = cast<MSABIAttr>(A);
1487 Record.push_back(SA->isInherited());
1488 Record.push_back(A->isImplicit());
1489 Record.push_back(A->isPackExpansion());
1490 break;
1491 }
1492 case attr::MSAllocator: {
1493 const auto *SA = cast<MSAllocatorAttr>(A);
1494 Record.push_back(SA->isInherited());
1495 Record.push_back(A->isImplicit());
1496 Record.push_back(A->isPackExpansion());
1497 break;
1498 }
1499 case attr::MSConstexpr: {
1500 const auto *SA = cast<MSConstexprAttr>(A);
1501 Record.push_back(SA->isInherited());
1502 Record.push_back(A->isImplicit());
1503 Record.push_back(A->isPackExpansion());
1504 break;
1505 }
1506 case attr::MSInheritance: {
1507 const auto *SA = cast<MSInheritanceAttr>(A);
1508 Record.push_back(SA->isInherited());
1509 Record.push_back(A->isImplicit());
1510 Record.push_back(A->isPackExpansion());
1511 Record.push_back(SA->getBestCase());
1512 break;
1513 }
1514 case attr::MSNoVTable: {
1515 const auto *SA = cast<MSNoVTableAttr>(A);
1516 Record.push_back(SA->isInherited());
1517 Record.push_back(A->isImplicit());
1518 Record.push_back(A->isPackExpansion());
1519 break;
1520 }
1521 case attr::MSP430Interrupt: {
1522 const auto *SA = cast<MSP430InterruptAttr>(A);
1523 Record.push_back(SA->isInherited());
1524 Record.push_back(A->isImplicit());
1525 Record.push_back(A->isPackExpansion());
1526 Record.push_back(SA->getNumber());
1527 break;
1528 }
1529 case attr::MSStruct: {
1530 const auto *SA = cast<MSStructAttr>(A);
1531 Record.push_back(SA->isInherited());
1532 Record.push_back(A->isImplicit());
1533 Record.push_back(A->isPackExpansion());
1534 break;
1535 }
1536 case attr::MSVtorDisp: {
1537 const auto *SA = cast<MSVtorDispAttr>(A);
1538 Record.push_back(SA->isInherited());
1539 Record.push_back(A->isImplicit());
1540 Record.push_back(A->isPackExpansion());
1541 Record.push_back(SA->getVdm());
1542 break;
1543 }
1544 case attr::MaxFieldAlignment: {
1545 const auto *SA = cast<MaxFieldAlignmentAttr>(A);
1546 Record.push_back(SA->isInherited());
1547 Record.push_back(A->isImplicit());
1548 Record.push_back(A->isPackExpansion());
1549 Record.push_back(SA->getAlignment());
1550 break;
1551 }
1552 case attr::MayAlias: {
1553 const auto *SA = cast<MayAliasAttr>(A);
1554 Record.push_back(SA->isInherited());
1555 Record.push_back(A->isImplicit());
1556 Record.push_back(A->isPackExpansion());
1557 break;
1558 }
1559 case attr::MaybeUndef: {
1560 const auto *SA = cast<MaybeUndefAttr>(A);
1561 Record.push_back(SA->isInherited());
1562 Record.push_back(A->isImplicit());
1563 Record.push_back(A->isPackExpansion());
1564 break;
1565 }
1566 case attr::MicroMips: {
1567 const auto *SA = cast<MicroMipsAttr>(A);
1568 Record.push_back(SA->isInherited());
1569 Record.push_back(A->isImplicit());
1570 Record.push_back(A->isPackExpansion());
1571 break;
1572 }
1573 case attr::MinSize: {
1574 const auto *SA = cast<MinSizeAttr>(A);
1575 Record.push_back(SA->isInherited());
1576 Record.push_back(A->isImplicit());
1577 Record.push_back(A->isPackExpansion());
1578 break;
1579 }
1580 case attr::MinVectorWidth: {
1581 const auto *SA = cast<MinVectorWidthAttr>(A);
1582 Record.push_back(SA->isInherited());
1583 Record.push_back(A->isImplicit());
1584 Record.push_back(A->isPackExpansion());
1585 Record.push_back(SA->getVectorWidth());
1586 break;
1587 }
1588 case attr::Mips16: {
1589 const auto *SA = cast<Mips16Attr>(A);
1590 Record.push_back(SA->isInherited());
1591 Record.push_back(A->isImplicit());
1592 Record.push_back(A->isPackExpansion());
1593 break;
1594 }
1595 case attr::MipsInterrupt: {
1596 const auto *SA = cast<MipsInterruptAttr>(A);
1597 Record.push_back(SA->isInherited());
1598 Record.push_back(A->isImplicit());
1599 Record.push_back(A->isPackExpansion());
1600 Record.push_back(static_cast<uint64_t>(SA->getInterrupt()));
1601 break;
1602 }
1603 case attr::MipsLongCall: {
1604 const auto *SA = cast<MipsLongCallAttr>(A);
1605 Record.push_back(SA->isInherited());
1606 Record.push_back(A->isImplicit());
1607 Record.push_back(A->isPackExpansion());
1608 break;
1609 }
1610 case attr::MipsShortCall: {
1611 const auto *SA = cast<MipsShortCallAttr>(A);
1612 Record.push_back(SA->isInherited());
1613 Record.push_back(A->isImplicit());
1614 Record.push_back(A->isPackExpansion());
1615 break;
1616 }
1617 case attr::Mode: {
1618 const auto *SA = cast<ModeAttr>(A);
1619 Record.push_back(A->isImplicit());
1620 Record.push_back(A->isPackExpansion());
1621 Record.AddIdentifierRef(SA->getMode());
1622 break;
1623 }
1624 case attr::MustTail: {
1625 Record.push_back(A->isImplicit());
1626 Record.push_back(A->isPackExpansion());
1627 break;
1628 }
1629 case attr::NSConsumed: {
1630 const auto *SA = cast<NSConsumedAttr>(A);
1631 Record.push_back(SA->isInherited());
1632 Record.push_back(A->isImplicit());
1633 Record.push_back(A->isPackExpansion());
1634 break;
1635 }
1636 case attr::NSConsumesSelf: {
1637 const auto *SA = cast<NSConsumesSelfAttr>(A);
1638 Record.push_back(SA->isInherited());
1639 Record.push_back(A->isImplicit());
1640 Record.push_back(A->isPackExpansion());
1641 break;
1642 }
1643 case attr::NSErrorDomain: {
1644 const auto *SA = cast<NSErrorDomainAttr>(A);
1645 Record.push_back(SA->isInherited());
1646 Record.push_back(A->isImplicit());
1647 Record.push_back(A->isPackExpansion());
1648 Record.AddIdentifierRef(SA->getErrorDomain());
1649 break;
1650 }
1651 case attr::NSReturnsAutoreleased: {
1652 const auto *SA = cast<NSReturnsAutoreleasedAttr>(A);
1653 Record.push_back(SA->isInherited());
1654 Record.push_back(A->isImplicit());
1655 Record.push_back(A->isPackExpansion());
1656 break;
1657 }
1658 case attr::NSReturnsNotRetained: {
1659 const auto *SA = cast<NSReturnsNotRetainedAttr>(A);
1660 Record.push_back(SA->isInherited());
1661 Record.push_back(A->isImplicit());
1662 Record.push_back(A->isPackExpansion());
1663 break;
1664 }
1665 case attr::NSReturnsRetained: {
1666 const auto *SA = cast<NSReturnsRetainedAttr>(A);
1667 Record.push_back(SA->isInherited());
1668 Record.push_back(A->isImplicit());
1669 Record.push_back(A->isPackExpansion());
1670 break;
1671 }
1672 case attr::NVPTXKernel: {
1673 const auto *SA = cast<NVPTXKernelAttr>(A);
1674 Record.push_back(SA->isInherited());
1675 Record.push_back(A->isImplicit());
1676 Record.push_back(A->isPackExpansion());
1677 break;
1678 }
1679 case attr::Naked: {
1680 const auto *SA = cast<NakedAttr>(A);
1681 Record.push_back(SA->isInherited());
1682 Record.push_back(A->isImplicit());
1683 Record.push_back(A->isPackExpansion());
1684 break;
1685 }
1686 case attr::NoAlias: {
1687 const auto *SA = cast<NoAliasAttr>(A);
1688 Record.push_back(SA->isInherited());
1689 Record.push_back(A->isImplicit());
1690 Record.push_back(A->isPackExpansion());
1691 break;
1692 }
1693 case attr::NoBuiltin: {
1694 const auto *SA = cast<NoBuiltinAttr>(A);
1695 Record.push_back(A->isImplicit());
1696 Record.push_back(A->isPackExpansion());
1697 Record.push_back(SA->builtinNames_size());
1698 for (auto &Val : SA->builtinNames())
1699 Record.AddString(Val);
1700 break;
1701 }
1702 case attr::NoCommon: {
1703 const auto *SA = cast<NoCommonAttr>(A);
1704 Record.push_back(SA->isInherited());
1705 Record.push_back(A->isImplicit());
1706 Record.push_back(A->isPackExpansion());
1707 break;
1708 }
1709 case attr::NoConvergent: {
1710 const auto *SA = cast<NoConvergentAttr>(A);
1711 Record.push_back(SA->isInherited());
1712 Record.push_back(A->isImplicit());
1713 Record.push_back(A->isPackExpansion());
1714 break;
1715 }
1716 case attr::NoDebug: {
1717 const auto *SA = cast<NoDebugAttr>(A);
1718 Record.push_back(SA->isInherited());
1719 Record.push_back(A->isImplicit());
1720 Record.push_back(A->isPackExpansion());
1721 break;
1722 }
1723 case attr::NoDeref: {
1724 Record.push_back(A->isImplicit());
1725 Record.push_back(A->isPackExpansion());
1726 break;
1727 }
1728 case attr::NoDestroy: {
1729 const auto *SA = cast<NoDestroyAttr>(A);
1730 Record.push_back(SA->isInherited());
1731 Record.push_back(A->isImplicit());
1732 Record.push_back(A->isPackExpansion());
1733 break;
1734 }
1735 case attr::NoDuplicate: {
1736 const auto *SA = cast<NoDuplicateAttr>(A);
1737 Record.push_back(SA->isInherited());
1738 Record.push_back(A->isImplicit());
1739 Record.push_back(A->isPackExpansion());
1740 break;
1741 }
1742 case attr::NoEscape: {
1743 Record.push_back(A->isImplicit());
1744 Record.push_back(A->isPackExpansion());
1745 break;
1746 }
1747 case attr::NoInline: {
1748 const auto *SA = cast<NoInlineAttr>(A);
1749 Record.push_back(SA->isInherited());
1750 Record.push_back(A->isImplicit());
1751 Record.push_back(A->isPackExpansion());
1752 break;
1753 }
1754 case attr::NoInstrumentFunction: {
1755 const auto *SA = cast<NoInstrumentFunctionAttr>(A);
1756 Record.push_back(SA->isInherited());
1757 Record.push_back(A->isImplicit());
1758 Record.push_back(A->isPackExpansion());
1759 break;
1760 }
1761 case attr::NoMerge: {
1762 const auto *SA = cast<NoMergeAttr>(A);
1763 Record.push_back(SA->isInherited());
1764 Record.push_back(A->isImplicit());
1765 Record.push_back(A->isPackExpansion());
1766 break;
1767 }
1768 case attr::NoMicroMips: {
1769 const auto *SA = cast<NoMicroMipsAttr>(A);
1770 Record.push_back(SA->isInherited());
1771 Record.push_back(A->isImplicit());
1772 Record.push_back(A->isPackExpansion());
1773 break;
1774 }
1775 case attr::NoMips16: {
1776 const auto *SA = cast<NoMips16Attr>(A);
1777 Record.push_back(SA->isInherited());
1778 Record.push_back(A->isImplicit());
1779 Record.push_back(A->isPackExpansion());
1780 break;
1781 }
1782 case attr::NoProfileFunction: {
1783 const auto *SA = cast<NoProfileFunctionAttr>(A);
1784 Record.push_back(SA->isInherited());
1785 Record.push_back(A->isImplicit());
1786 Record.push_back(A->isPackExpansion());
1787 break;
1788 }
1789 case attr::NoRandomizeLayout: {
1790 const auto *SA = cast<NoRandomizeLayoutAttr>(A);
1791 Record.push_back(SA->isInherited());
1792 Record.push_back(A->isImplicit());
1793 Record.push_back(A->isPackExpansion());
1794 break;
1795 }
1796 case attr::NoReturn: {
1797 const auto *SA = cast<NoReturnAttr>(A);
1798 Record.push_back(SA->isInherited());
1799 Record.push_back(A->isImplicit());
1800 Record.push_back(A->isPackExpansion());
1801 break;
1802 }
1803 case attr::NoSanitize: {
1804 const auto *SA = cast<NoSanitizeAttr>(A);
1805 Record.push_back(SA->isInherited());
1806 Record.push_back(A->isImplicit());
1807 Record.push_back(A->isPackExpansion());
1808 Record.push_back(SA->sanitizers_size());
1809 for (auto &Val : SA->sanitizers())
1810 Record.AddString(Val);
1811 break;
1812 }
1813 case attr::NoSpecializations: {
1814 const auto *SA = cast<NoSpecializationsAttr>(A);
1815 Record.push_back(SA->isInherited());
1816 Record.push_back(A->isImplicit());
1817 Record.push_back(A->isPackExpansion());
1818 Record.AddString(SA->getMessage());
1819 break;
1820 }
1821 case attr::NoSpeculativeLoadHardening: {
1822 const auto *SA = cast<NoSpeculativeLoadHardeningAttr>(A);
1823 Record.push_back(SA->isInherited());
1824 Record.push_back(A->isImplicit());
1825 Record.push_back(A->isPackExpansion());
1826 break;
1827 }
1828 case attr::NoSplitStack: {
1829 const auto *SA = cast<NoSplitStackAttr>(A);
1830 Record.push_back(SA->isInherited());
1831 Record.push_back(A->isImplicit());
1832 Record.push_back(A->isPackExpansion());
1833 break;
1834 }
1835 case attr::NoStackProtector: {
1836 const auto *SA = cast<NoStackProtectorAttr>(A);
1837 Record.push_back(SA->isInherited());
1838 Record.push_back(A->isImplicit());
1839 Record.push_back(A->isPackExpansion());
1840 break;
1841 }
1842 case attr::NoThreadSafetyAnalysis: {
1843 const auto *SA = cast<NoThreadSafetyAnalysisAttr>(A);
1844 Record.push_back(SA->isInherited());
1845 Record.push_back(A->isImplicit());
1846 Record.push_back(A->isPackExpansion());
1847 break;
1848 }
1849 case attr::NoThrow: {
1850 const auto *SA = cast<NoThrowAttr>(A);
1851 Record.push_back(SA->isInherited());
1852 Record.push_back(A->isImplicit());
1853 Record.push_back(A->isPackExpansion());
1854 break;
1855 }
1856 case attr::NoTrivialAutoVarInit: {
1857 const auto *SA = cast<NoTrivialAutoVarInitAttr>(A);
1858 Record.push_back(SA->isInherited());
1859 Record.push_back(A->isImplicit());
1860 Record.push_back(A->isPackExpansion());
1861 break;
1862 }
1863 case attr::NoUniqueAddress: {
1864 const auto *SA = cast<NoUniqueAddressAttr>(A);
1865 Record.push_back(SA->isInherited());
1866 Record.push_back(A->isImplicit());
1867 Record.push_back(A->isPackExpansion());
1868 break;
1869 }
1870 case attr::NoUwtable: {
1871 const auto *SA = cast<NoUwtableAttr>(A);
1872 Record.push_back(SA->isInherited());
1873 Record.push_back(A->isImplicit());
1874 Record.push_back(A->isPackExpansion());
1875 break;
1876 }
1877 case attr::NonAllocating: {
1878 const auto *SA = cast<NonAllocatingAttr>(A);
1879 Record.push_back(A->isImplicit());
1880 Record.push_back(A->isPackExpansion());
1881 Record.AddStmt(SA->getCond());
1882 break;
1883 }
1884 case attr::NonBlocking: {
1885 const auto *SA = cast<NonBlockingAttr>(A);
1886 Record.push_back(A->isImplicit());
1887 Record.push_back(A->isPackExpansion());
1888 Record.AddStmt(SA->getCond());
1889 break;
1890 }
1891 case attr::NonNull: {
1892 const auto *SA = cast<NonNullAttr>(A);
1893 Record.push_back(SA->isInherited());
1894 Record.push_back(A->isImplicit());
1895 Record.push_back(A->isPackExpansion());
1896 Record.push_back(SA->args_size());
1897 for (auto &Val : SA->args())
1898 Record.push_back(Val.serialize());
1899 break;
1900 }
1901 case attr::NotTailCalled: {
1902 const auto *SA = cast<NotTailCalledAttr>(A);
1903 Record.push_back(SA->isInherited());
1904 Record.push_back(A->isImplicit());
1905 Record.push_back(A->isPackExpansion());
1906 break;
1907 }
1908 case attr::OMPAllocateDecl: {
1909 const auto *SA = cast<OMPAllocateDeclAttr>(A);
1910 Record.push_back(SA->isInherited());
1911 Record.push_back(A->isImplicit());
1912 Record.push_back(A->isPackExpansion());
1913 Record.push_back(static_cast<uint64_t>(SA->getAllocatorType()));
1914 Record.AddStmt(SA->getAllocator());
1915 Record.AddStmt(SA->getAlignment());
1916 break;
1917 }
1918 case attr::OMPAssume: {
1919 const auto *SA = cast<OMPAssumeAttr>(A);
1920 Record.push_back(SA->isInherited());
1921 Record.push_back(A->isImplicit());
1922 Record.push_back(A->isPackExpansion());
1923 Record.AddString(SA->getAssumption());
1924 break;
1925 }
1926 case attr::OMPCaptureKind: {
1927 const auto *SA = cast<OMPCaptureKindAttr>(A);
1928 Record.push_back(A->isImplicit());
1929 Record.push_back(A->isPackExpansion());
1930 Record.push_back(SA->getCaptureKindVal());
1931 break;
1932 }
1933 case attr::OMPCaptureNoInit: {
1934 const auto *SA = cast<OMPCaptureNoInitAttr>(A);
1935 Record.push_back(SA->isInherited());
1936 Record.push_back(A->isImplicit());
1937 Record.push_back(A->isPackExpansion());
1938 break;
1939 }
1940 case attr::OMPDeclareSimdDecl: {
1941 const auto *SA = cast<OMPDeclareSimdDeclAttr>(A);
1942 Record.push_back(A->isImplicit());
1943 Record.push_back(A->isPackExpansion());
1944 Record.push_back(static_cast<uint64_t>(SA->getBranchState()));
1945 Record.AddStmt(SA->getSimdlen());
1946 Record.push_back(SA->uniforms_size());
1947 for (auto &Val : SA->uniforms())
1948 Record.AddStmt(Val);
1949 Record.push_back(SA->aligneds_size());
1950 for (auto &Val : SA->aligneds())
1951 Record.AddStmt(Val);
1952 Record.push_back(SA->alignments_size());
1953 for (auto &Val : SA->alignments())
1954 Record.AddStmt(Val);
1955 Record.push_back(SA->linears_size());
1956 for (auto &Val : SA->linears())
1957 Record.AddStmt(Val);
1958 Record.push_back(SA->modifiers_size());
1959 for (auto &Val : SA->modifiers())
1960 Record.push_back(Val);
1961 Record.push_back(SA->steps_size());
1962 for (auto &Val : SA->steps())
1963 Record.AddStmt(Val);
1964 break;
1965 }
1966 case attr::OMPDeclareTargetDecl: {
1967 const auto *SA = cast<OMPDeclareTargetDeclAttr>(A);
1968 Record.push_back(SA->isInherited());
1969 Record.push_back(A->isImplicit());
1970 Record.push_back(A->isPackExpansion());
1971 Record.push_back(static_cast<uint64_t>(SA->getMapType()));
1972 Record.push_back(static_cast<uint64_t>(SA->getDevType()));
1973 Record.AddStmt(SA->getIndirectExpr());
1974 Record.push_back(SA->getIndirect());
1975 Record.push_back(SA->getLevel());
1976 break;
1977 }
1978 case attr::OMPDeclareVariant: {
1979 const auto *SA = cast<OMPDeclareVariantAttr>(A);
1980 Record.push_back(SA->isInherited());
1981 Record.push_back(A->isImplicit());
1982 Record.push_back(A->isPackExpansion());
1983 Record.AddStmt(SA->getVariantFuncRef());
1984 Record.writeOMPTraitInfo(SA->getTraitInfos());
1985 Record.push_back(SA->adjustArgsNothing_size());
1986 for (auto &Val : SA->adjustArgsNothing())
1987 Record.AddStmt(Val);
1988 Record.push_back(SA->adjustArgsNeedDevicePtr_size());
1989 for (auto &Val : SA->adjustArgsNeedDevicePtr())
1990 Record.AddStmt(Val);
1991 Record.push_back(SA->appendArgs_size());
1992 for (OMPDeclareVariantAttr::appendArgs_iterator I = SA->appendArgs_begin(), E = SA->appendArgs_end(); I != E; ++I) {
1993 Record.writeBool(I->IsTarget);
1994 Record.writeBool(I->IsTargetSync);
1995 }
1996 break;
1997 }
1998 case attr::OMPReferencedVar: {
1999 const auto *SA = cast<OMPReferencedVarAttr>(A);
2000 Record.push_back(A->isImplicit());
2001 Record.push_back(A->isPackExpansion());
2002 Record.AddStmt(SA->getRef());
2003 break;
2004 }
2005 case attr::OMPThreadPrivateDecl: {
2006 const auto *SA = cast<OMPThreadPrivateDeclAttr>(A);
2007 Record.push_back(SA->isInherited());
2008 Record.push_back(A->isImplicit());
2009 Record.push_back(A->isPackExpansion());
2010 break;
2011 }
2012 case attr::OSConsumed: {
2013 const auto *SA = cast<OSConsumedAttr>(A);
2014 Record.push_back(SA->isInherited());
2015 Record.push_back(A->isImplicit());
2016 Record.push_back(A->isPackExpansion());
2017 break;
2018 }
2019 case attr::OSConsumesThis: {
2020 const auto *SA = cast<OSConsumesThisAttr>(A);
2021 Record.push_back(SA->isInherited());
2022 Record.push_back(A->isImplicit());
2023 Record.push_back(A->isPackExpansion());
2024 break;
2025 }
2026 case attr::OSReturnsNotRetained: {
2027 const auto *SA = cast<OSReturnsNotRetainedAttr>(A);
2028 Record.push_back(SA->isInherited());
2029 Record.push_back(A->isImplicit());
2030 Record.push_back(A->isPackExpansion());
2031 break;
2032 }
2033 case attr::OSReturnsRetained: {
2034 const auto *SA = cast<OSReturnsRetainedAttr>(A);
2035 Record.push_back(SA->isInherited());
2036 Record.push_back(A->isImplicit());
2037 Record.push_back(A->isPackExpansion());
2038 break;
2039 }
2040 case attr::OSReturnsRetainedOnNonZero: {
2041 const auto *SA = cast<OSReturnsRetainedOnNonZeroAttr>(A);
2042 Record.push_back(SA->isInherited());
2043 Record.push_back(A->isImplicit());
2044 Record.push_back(A->isPackExpansion());
2045 break;
2046 }
2047 case attr::OSReturnsRetainedOnZero: {
2048 const auto *SA = cast<OSReturnsRetainedOnZeroAttr>(A);
2049 Record.push_back(SA->isInherited());
2050 Record.push_back(A->isImplicit());
2051 Record.push_back(A->isPackExpansion());
2052 break;
2053 }
2054 case attr::ObjCBoxable: {
2055 Record.push_back(A->isImplicit());
2056 Record.push_back(A->isPackExpansion());
2057 break;
2058 }
2059 case attr::ObjCBridge: {
2060 const auto *SA = cast<ObjCBridgeAttr>(A);
2061 Record.push_back(SA->isInherited());
2062 Record.push_back(A->isImplicit());
2063 Record.push_back(A->isPackExpansion());
2064 Record.AddIdentifierRef(SA->getBridgedType());
2065 break;
2066 }
2067 case attr::ObjCBridgeMutable: {
2068 const auto *SA = cast<ObjCBridgeMutableAttr>(A);
2069 Record.push_back(SA->isInherited());
2070 Record.push_back(A->isImplicit());
2071 Record.push_back(A->isPackExpansion());
2072 Record.AddIdentifierRef(SA->getBridgedType());
2073 break;
2074 }
2075 case attr::ObjCBridgeRelated: {
2076 const auto *SA = cast<ObjCBridgeRelatedAttr>(A);
2077 Record.push_back(SA->isInherited());
2078 Record.push_back(A->isImplicit());
2079 Record.push_back(A->isPackExpansion());
2080 Record.AddIdentifierRef(SA->getRelatedClass());
2081 Record.AddIdentifierRef(SA->getClassMethod());
2082 Record.AddIdentifierRef(SA->getInstanceMethod());
2083 break;
2084 }
2085 case attr::ObjCClassStub: {
2086 Record.push_back(A->isImplicit());
2087 Record.push_back(A->isPackExpansion());
2088 break;
2089 }
2090 case attr::ObjCDesignatedInitializer: {
2091 Record.push_back(A->isImplicit());
2092 Record.push_back(A->isPackExpansion());
2093 break;
2094 }
2095 case attr::ObjCDirect: {
2096 Record.push_back(A->isImplicit());
2097 Record.push_back(A->isPackExpansion());
2098 break;
2099 }
2100 case attr::ObjCDirectMembers: {
2101 Record.push_back(A->isImplicit());
2102 Record.push_back(A->isPackExpansion());
2103 break;
2104 }
2105 case attr::ObjCException: {
2106 const auto *SA = cast<ObjCExceptionAttr>(A);
2107 Record.push_back(SA->isInherited());
2108 Record.push_back(A->isImplicit());
2109 Record.push_back(A->isPackExpansion());
2110 break;
2111 }
2112 case attr::ObjCExplicitProtocolImpl: {
2113 const auto *SA = cast<ObjCExplicitProtocolImplAttr>(A);
2114 Record.push_back(SA->isInherited());
2115 Record.push_back(A->isImplicit());
2116 Record.push_back(A->isPackExpansion());
2117 break;
2118 }
2119 case attr::ObjCExternallyRetained: {
2120 const auto *SA = cast<ObjCExternallyRetainedAttr>(A);
2121 Record.push_back(SA->isInherited());
2122 Record.push_back(A->isImplicit());
2123 Record.push_back(A->isPackExpansion());
2124 break;
2125 }
2126 case attr::ObjCGC: {
2127 const auto *SA = cast<ObjCGCAttr>(A);
2128 Record.push_back(A->isImplicit());
2129 Record.push_back(A->isPackExpansion());
2130 Record.AddIdentifierRef(SA->getKind());
2131 break;
2132 }
2133 case attr::ObjCIndependentClass: {
2134 const auto *SA = cast<ObjCIndependentClassAttr>(A);
2135 Record.push_back(SA->isInherited());
2136 Record.push_back(A->isImplicit());
2137 Record.push_back(A->isPackExpansion());
2138 break;
2139 }
2140 case attr::ObjCInertUnsafeUnretained: {
2141 Record.push_back(A->isImplicit());
2142 Record.push_back(A->isPackExpansion());
2143 break;
2144 }
2145 case attr::ObjCKindOf: {
2146 Record.push_back(A->isImplicit());
2147 Record.push_back(A->isPackExpansion());
2148 break;
2149 }
2150 case attr::ObjCMethodFamily: {
2151 const auto *SA = cast<ObjCMethodFamilyAttr>(A);
2152 Record.push_back(SA->isInherited());
2153 Record.push_back(A->isImplicit());
2154 Record.push_back(A->isPackExpansion());
2155 Record.push_back(static_cast<uint64_t>(SA->getFamily()));
2156 break;
2157 }
2158 case attr::ObjCNSObject: {
2159 const auto *SA = cast<ObjCNSObjectAttr>(A);
2160 Record.push_back(SA->isInherited());
2161 Record.push_back(A->isImplicit());
2162 Record.push_back(A->isPackExpansion());
2163 break;
2164 }
2165 case attr::ObjCNonLazyClass: {
2166 Record.push_back(A->isImplicit());
2167 Record.push_back(A->isPackExpansion());
2168 break;
2169 }
2170 case attr::ObjCNonRuntimeProtocol: {
2171 Record.push_back(A->isImplicit());
2172 Record.push_back(A->isPackExpansion());
2173 break;
2174 }
2175 case attr::ObjCOwnership: {
2176 const auto *SA = cast<ObjCOwnershipAttr>(A);
2177 Record.push_back(SA->isInherited());
2178 Record.push_back(A->isImplicit());
2179 Record.push_back(A->isPackExpansion());
2180 Record.AddIdentifierRef(SA->getKind());
2181 break;
2182 }
2183 case attr::ObjCPreciseLifetime: {
2184 const auto *SA = cast<ObjCPreciseLifetimeAttr>(A);
2185 Record.push_back(SA->isInherited());
2186 Record.push_back(A->isImplicit());
2187 Record.push_back(A->isPackExpansion());
2188 break;
2189 }
2190 case attr::ObjCRequiresPropertyDefs: {
2191 const auto *SA = cast<ObjCRequiresPropertyDefsAttr>(A);
2192 Record.push_back(SA->isInherited());
2193 Record.push_back(A->isImplicit());
2194 Record.push_back(A->isPackExpansion());
2195 break;
2196 }
2197 case attr::ObjCRequiresSuper: {
2198 const auto *SA = cast<ObjCRequiresSuperAttr>(A);
2199 Record.push_back(SA->isInherited());
2200 Record.push_back(A->isImplicit());
2201 Record.push_back(A->isPackExpansion());
2202 break;
2203 }
2204 case attr::ObjCReturnsInnerPointer: {
2205 const auto *SA = cast<ObjCReturnsInnerPointerAttr>(A);
2206 Record.push_back(SA->isInherited());
2207 Record.push_back(A->isImplicit());
2208 Record.push_back(A->isPackExpansion());
2209 break;
2210 }
2211 case attr::ObjCRootClass: {
2212 const auto *SA = cast<ObjCRootClassAttr>(A);
2213 Record.push_back(SA->isInherited());
2214 Record.push_back(A->isImplicit());
2215 Record.push_back(A->isPackExpansion());
2216 break;
2217 }
2218 case attr::ObjCRuntimeName: {
2219 const auto *SA = cast<ObjCRuntimeNameAttr>(A);
2220 Record.push_back(A->isImplicit());
2221 Record.push_back(A->isPackExpansion());
2222 Record.AddString(SA->getMetadataName());
2223 break;
2224 }
2225 case attr::ObjCRuntimeVisible: {
2226 Record.push_back(A->isImplicit());
2227 Record.push_back(A->isPackExpansion());
2228 break;
2229 }
2230 case attr::ObjCSubclassingRestricted: {
2231 const auto *SA = cast<ObjCSubclassingRestrictedAttr>(A);
2232 Record.push_back(SA->isInherited());
2233 Record.push_back(A->isImplicit());
2234 Record.push_back(A->isPackExpansion());
2235 break;
2236 }
2237 case attr::OpenCLAccess: {
2238 Record.push_back(A->isImplicit());
2239 Record.push_back(A->isPackExpansion());
2240 break;
2241 }
2242 case attr::OpenCLConstantAddressSpace: {
2243 Record.push_back(A->isImplicit());
2244 Record.push_back(A->isPackExpansion());
2245 break;
2246 }
2247 case attr::OpenCLGenericAddressSpace: {
2248 Record.push_back(A->isImplicit());
2249 Record.push_back(A->isPackExpansion());
2250 break;
2251 }
2252 case attr::OpenCLGlobalAddressSpace: {
2253 Record.push_back(A->isImplicit());
2254 Record.push_back(A->isPackExpansion());
2255 break;
2256 }
2257 case attr::OpenCLGlobalDeviceAddressSpace: {
2258 Record.push_back(A->isImplicit());
2259 Record.push_back(A->isPackExpansion());
2260 break;
2261 }
2262 case attr::OpenCLGlobalHostAddressSpace: {
2263 Record.push_back(A->isImplicit());
2264 Record.push_back(A->isPackExpansion());
2265 break;
2266 }
2267 case attr::OpenCLIntelReqdSubGroupSize: {
2268 const auto *SA = cast<OpenCLIntelReqdSubGroupSizeAttr>(A);
2269 Record.push_back(SA->isInherited());
2270 Record.push_back(A->isImplicit());
2271 Record.push_back(A->isPackExpansion());
2272 Record.push_back(SA->getSubGroupSize());
2273 break;
2274 }
2275 case attr::OpenCLKernel: {
2276 const auto *SA = cast<OpenCLKernelAttr>(A);
2277 Record.push_back(SA->isInherited());
2278 Record.push_back(A->isImplicit());
2279 Record.push_back(A->isPackExpansion());
2280 break;
2281 }
2282 case attr::OpenCLLocalAddressSpace: {
2283 Record.push_back(A->isImplicit());
2284 Record.push_back(A->isPackExpansion());
2285 break;
2286 }
2287 case attr::OpenCLPrivateAddressSpace: {
2288 Record.push_back(A->isImplicit());
2289 Record.push_back(A->isPackExpansion());
2290 break;
2291 }
2292 case attr::OpenCLUnrollHint: {
2293 const auto *SA = cast<OpenCLUnrollHintAttr>(A);
2294 Record.push_back(A->isImplicit());
2295 Record.push_back(A->isPackExpansion());
2296 Record.push_back(SA->getUnrollHint());
2297 break;
2298 }
2299 case attr::OptimizeNone: {
2300 const auto *SA = cast<OptimizeNoneAttr>(A);
2301 Record.push_back(SA->isInherited());
2302 Record.push_back(A->isImplicit());
2303 Record.push_back(A->isPackExpansion());
2304 break;
2305 }
2306 case attr::Overloadable: {
2307 Record.push_back(A->isImplicit());
2308 Record.push_back(A->isPackExpansion());
2309 break;
2310 }
2311 case attr::Override: {
2312 const auto *SA = cast<OverrideAttr>(A);
2313 Record.push_back(SA->isInherited());
2314 Record.push_back(A->isImplicit());
2315 Record.push_back(A->isPackExpansion());
2316 break;
2317 }
2318 case attr::Owner: {
2319 const auto *SA = cast<OwnerAttr>(A);
2320 Record.push_back(SA->isInherited());
2321 Record.push_back(A->isImplicit());
2322 Record.push_back(A->isPackExpansion());
2323 Record.AddTypeSourceInfo(SA->getDerefTypeLoc());
2324 break;
2325 }
2326 case attr::Ownership: {
2327 const auto *SA = cast<OwnershipAttr>(A);
2328 Record.push_back(SA->isInherited());
2329 Record.push_back(A->isImplicit());
2330 Record.push_back(A->isPackExpansion());
2331 Record.AddIdentifierRef(SA->getModule());
2332 Record.push_back(SA->args_size());
2333 for (auto &Val : SA->args())
2334 Record.push_back(Val.serialize());
2335 break;
2336 }
2337 case attr::Packed: {
2338 const auto *SA = cast<PackedAttr>(A);
2339 Record.push_back(SA->isInherited());
2340 Record.push_back(A->isImplicit());
2341 Record.push_back(A->isPackExpansion());
2342 break;
2343 }
2344 case attr::ParamTypestate: {
2345 const auto *SA = cast<ParamTypestateAttr>(A);
2346 Record.push_back(SA->isInherited());
2347 Record.push_back(A->isImplicit());
2348 Record.push_back(A->isPackExpansion());
2349 Record.push_back(static_cast<uint64_t>(SA->getParamState()));
2350 break;
2351 }
2352 case attr::Pascal: {
2353 const auto *SA = cast<PascalAttr>(A);
2354 Record.push_back(SA->isInherited());
2355 Record.push_back(A->isImplicit());
2356 Record.push_back(A->isPackExpansion());
2357 break;
2358 }
2359 case attr::PassObjectSize: {
2360 const auto *SA = cast<PassObjectSizeAttr>(A);
2361 Record.push_back(SA->isInherited());
2362 Record.push_back(A->isImplicit());
2363 Record.push_back(A->isPackExpansion());
2364 Record.push_back(SA->getType());
2365 break;
2366 }
2367 case attr::PatchableFunctionEntry: {
2368 const auto *SA = cast<PatchableFunctionEntryAttr>(A);
2369 Record.push_back(SA->isInherited());
2370 Record.push_back(A->isImplicit());
2371 Record.push_back(A->isPackExpansion());
2372 Record.push_back(SA->getCount());
2373 Record.push_back(SA->getOffset());
2374 break;
2375 }
2376 case attr::Pcs: {
2377 const auto *SA = cast<PcsAttr>(A);
2378 Record.push_back(SA->isInherited());
2379 Record.push_back(A->isImplicit());
2380 Record.push_back(A->isPackExpansion());
2381 Record.push_back(static_cast<uint64_t>(SA->getPCS()));
2382 break;
2383 }
2384 case attr::Pointer: {
2385 const auto *SA = cast<PointerAttr>(A);
2386 Record.push_back(SA->isInherited());
2387 Record.push_back(A->isImplicit());
2388 Record.push_back(A->isPackExpansion());
2389 Record.AddTypeSourceInfo(SA->getDerefTypeLoc());
2390 break;
2391 }
2392 case attr::PragmaClangBSSSection: {
2393 const auto *SA = cast<PragmaClangBSSSectionAttr>(A);
2394 Record.push_back(SA->isInherited());
2395 Record.push_back(A->isImplicit());
2396 Record.push_back(A->isPackExpansion());
2397 Record.AddString(SA->getName());
2398 break;
2399 }
2400 case attr::PragmaClangDataSection: {
2401 const auto *SA = cast<PragmaClangDataSectionAttr>(A);
2402 Record.push_back(SA->isInherited());
2403 Record.push_back(A->isImplicit());
2404 Record.push_back(A->isPackExpansion());
2405 Record.AddString(SA->getName());
2406 break;
2407 }
2408 case attr::PragmaClangRelroSection: {
2409 const auto *SA = cast<PragmaClangRelroSectionAttr>(A);
2410 Record.push_back(SA->isInherited());
2411 Record.push_back(A->isImplicit());
2412 Record.push_back(A->isPackExpansion());
2413 Record.AddString(SA->getName());
2414 break;
2415 }
2416 case attr::PragmaClangRodataSection: {
2417 const auto *SA = cast<PragmaClangRodataSectionAttr>(A);
2418 Record.push_back(SA->isInherited());
2419 Record.push_back(A->isImplicit());
2420 Record.push_back(A->isPackExpansion());
2421 Record.AddString(SA->getName());
2422 break;
2423 }
2424 case attr::PragmaClangTextSection: {
2425 const auto *SA = cast<PragmaClangTextSectionAttr>(A);
2426 Record.push_back(SA->isInherited());
2427 Record.push_back(A->isImplicit());
2428 Record.push_back(A->isPackExpansion());
2429 Record.AddString(SA->getName());
2430 break;
2431 }
2432 case attr::PreferredName: {
2433 const auto *SA = cast<PreferredNameAttr>(A);
2434 Record.push_back(SA->isInherited());
2435 Record.push_back(A->isImplicit());
2436 Record.push_back(A->isPackExpansion());
2437 Record.AddTypeSourceInfo(SA->getTypedefTypeLoc());
2438 break;
2439 }
2440 case attr::PreferredType: {
2441 const auto *SA = cast<PreferredTypeAttr>(A);
2442 Record.push_back(SA->isInherited());
2443 Record.push_back(A->isImplicit());
2444 Record.push_back(A->isPackExpansion());
2445 Record.AddTypeSourceInfo(SA->getTypeLoc());
2446 break;
2447 }
2448 case attr::PreserveAll: {
2449 const auto *SA = cast<PreserveAllAttr>(A);
2450 Record.push_back(SA->isInherited());
2451 Record.push_back(A->isImplicit());
2452 Record.push_back(A->isPackExpansion());
2453 break;
2454 }
2455 case attr::PreserveMost: {
2456 const auto *SA = cast<PreserveMostAttr>(A);
2457 Record.push_back(SA->isInherited());
2458 Record.push_back(A->isImplicit());
2459 Record.push_back(A->isPackExpansion());
2460 break;
2461 }
2462 case attr::PreserveNone: {
2463 const auto *SA = cast<PreserveNoneAttr>(A);
2464 Record.push_back(SA->isInherited());
2465 Record.push_back(A->isImplicit());
2466 Record.push_back(A->isPackExpansion());
2467 break;
2468 }
2469 case attr::PtGuardedBy: {
2470 const auto *SA = cast<PtGuardedByAttr>(A);
2471 Record.push_back(SA->isInherited());
2472 Record.push_back(A->isImplicit());
2473 Record.push_back(A->isPackExpansion());
2474 Record.AddStmt(SA->getArg());
2475 break;
2476 }
2477 case attr::PtGuardedVar: {
2478 const auto *SA = cast<PtGuardedVarAttr>(A);
2479 Record.push_back(SA->isInherited());
2480 Record.push_back(A->isImplicit());
2481 Record.push_back(A->isPackExpansion());
2482 break;
2483 }
2484 case attr::Ptr32: {
2485 Record.push_back(A->isImplicit());
2486 Record.push_back(A->isPackExpansion());
2487 break;
2488 }
2489 case attr::Ptr64: {
2490 Record.push_back(A->isImplicit());
2491 Record.push_back(A->isPackExpansion());
2492 break;
2493 }
2494 case attr::Pure: {
2495 const auto *SA = cast<PureAttr>(A);
2496 Record.push_back(SA->isInherited());
2497 Record.push_back(A->isImplicit());
2498 Record.push_back(A->isPackExpansion());
2499 break;
2500 }
2501 case attr::RISCVInterrupt: {
2502 const auto *SA = cast<RISCVInterruptAttr>(A);
2503 Record.push_back(SA->isInherited());
2504 Record.push_back(A->isImplicit());
2505 Record.push_back(A->isPackExpansion());
2506 Record.push_back(static_cast<uint64_t>(SA->getInterrupt()));
2507 break;
2508 }
2509 case attr::RISCVVectorCC: {
2510 const auto *SA = cast<RISCVVectorCCAttr>(A);
2511 Record.push_back(SA->isInherited());
2512 Record.push_back(A->isImplicit());
2513 Record.push_back(A->isPackExpansion());
2514 break;
2515 }
2516 case attr::RandomizeLayout: {
2517 const auto *SA = cast<RandomizeLayoutAttr>(A);
2518 Record.push_back(SA->isInherited());
2519 Record.push_back(A->isImplicit());
2520 Record.push_back(A->isPackExpansion());
2521 break;
2522 }
2523 case attr::ReadOnlyPlacement: {
2524 const auto *SA = cast<ReadOnlyPlacementAttr>(A);
2525 Record.push_back(SA->isInherited());
2526 Record.push_back(A->isImplicit());
2527 Record.push_back(A->isPackExpansion());
2528 break;
2529 }
2530 case attr::RegCall: {
2531 const auto *SA = cast<RegCallAttr>(A);
2532 Record.push_back(SA->isInherited());
2533 Record.push_back(A->isImplicit());
2534 Record.push_back(A->isPackExpansion());
2535 break;
2536 }
2537 case attr::Reinitializes: {
2538 const auto *SA = cast<ReinitializesAttr>(A);
2539 Record.push_back(SA->isInherited());
2540 Record.push_back(A->isImplicit());
2541 Record.push_back(A->isPackExpansion());
2542 break;
2543 }
2544 case attr::ReleaseCapability: {
2545 const auto *SA = cast<ReleaseCapabilityAttr>(A);
2546 Record.push_back(SA->isInherited());
2547 Record.push_back(A->isImplicit());
2548 Record.push_back(A->isPackExpansion());
2549 Record.push_back(SA->args_size());
2550 for (auto &Val : SA->args())
2551 Record.AddStmt(Val);
2552 break;
2553 }
2554 case attr::ReleaseHandle: {
2555 const auto *SA = cast<ReleaseHandleAttr>(A);
2556 Record.push_back(SA->isInherited());
2557 Record.push_back(A->isImplicit());
2558 Record.push_back(A->isPackExpansion());
2559 Record.AddString(SA->getHandleType());
2560 break;
2561 }
2562 case attr::ReqdWorkGroupSize: {
2563 const auto *SA = cast<ReqdWorkGroupSizeAttr>(A);
2564 Record.push_back(SA->isInherited());
2565 Record.push_back(A->isImplicit());
2566 Record.push_back(A->isPackExpansion());
2567 Record.push_back(SA->getXDim());
2568 Record.push_back(SA->getYDim());
2569 Record.push_back(SA->getZDim());
2570 break;
2571 }
2572 case attr::RequiresCapability: {
2573 const auto *SA = cast<RequiresCapabilityAttr>(A);
2574 Record.push_back(SA->isInherited());
2575 Record.push_back(A->isImplicit());
2576 Record.push_back(A->isPackExpansion());
2577 Record.push_back(SA->args_size());
2578 for (auto &Val : SA->args())
2579 Record.AddStmt(Val);
2580 break;
2581 }
2582 case attr::Restrict: {
2583 const auto *SA = cast<RestrictAttr>(A);
2584 Record.push_back(SA->isInherited());
2585 Record.push_back(A->isImplicit());
2586 Record.push_back(A->isPackExpansion());
2587 break;
2588 }
2589 case attr::Retain: {
2590 const auto *SA = cast<RetainAttr>(A);
2591 Record.push_back(SA->isInherited());
2592 Record.push_back(A->isImplicit());
2593 Record.push_back(A->isPackExpansion());
2594 break;
2595 }
2596 case attr::ReturnTypestate: {
2597 const auto *SA = cast<ReturnTypestateAttr>(A);
2598 Record.push_back(SA->isInherited());
2599 Record.push_back(A->isImplicit());
2600 Record.push_back(A->isPackExpansion());
2601 Record.push_back(static_cast<uint64_t>(SA->getState()));
2602 break;
2603 }
2604 case attr::ReturnsNonNull: {
2605 const auto *SA = cast<ReturnsNonNullAttr>(A);
2606 Record.push_back(SA->isInherited());
2607 Record.push_back(A->isImplicit());
2608 Record.push_back(A->isPackExpansion());
2609 break;
2610 }
2611 case attr::ReturnsTwice: {
2612 const auto *SA = cast<ReturnsTwiceAttr>(A);
2613 Record.push_back(SA->isInherited());
2614 Record.push_back(A->isImplicit());
2615 Record.push_back(A->isPackExpansion());
2616 break;
2617 }
2618 case attr::SPtr: {
2619 Record.push_back(A->isImplicit());
2620 Record.push_back(A->isPackExpansion());
2621 break;
2622 }
2623 case attr::SYCLKernel: {
2624 const auto *SA = cast<SYCLKernelAttr>(A);
2625 Record.push_back(SA->isInherited());
2626 Record.push_back(A->isImplicit());
2627 Record.push_back(A->isPackExpansion());
2628 break;
2629 }
2630 case attr::SYCLKernelEntryPoint: {
2631 const auto *SA = cast<SYCLKernelEntryPointAttr>(A);
2632 Record.push_back(SA->isInherited());
2633 Record.push_back(A->isImplicit());
2634 Record.push_back(A->isPackExpansion());
2635 Record.AddTypeSourceInfo(SA->getKernelNameLoc());
2636 Record.push_back(SA->getInvalid());
2637 break;
2638 }
2639 case attr::SYCLSpecialClass: {
2640 const auto *SA = cast<SYCLSpecialClassAttr>(A);
2641 Record.push_back(SA->isInherited());
2642 Record.push_back(A->isImplicit());
2643 Record.push_back(A->isPackExpansion());
2644 break;
2645 }
2646 case attr::ScopedLockable: {
2647 const auto *SA = cast<ScopedLockableAttr>(A);
2648 Record.push_back(SA->isInherited());
2649 Record.push_back(A->isImplicit());
2650 Record.push_back(A->isPackExpansion());
2651 break;
2652 }
2653 case attr::Section: {
2654 const auto *SA = cast<SectionAttr>(A);
2655 Record.push_back(SA->isInherited());
2656 Record.push_back(A->isImplicit());
2657 Record.push_back(A->isPackExpansion());
2658 Record.AddString(SA->getName());
2659 break;
2660 }
2661 case attr::SelectAny: {
2662 const auto *SA = cast<SelectAnyAttr>(A);
2663 Record.push_back(SA->isInherited());
2664 Record.push_back(A->isImplicit());
2665 Record.push_back(A->isPackExpansion());
2666 break;
2667 }
2668 case attr::Sentinel: {
2669 const auto *SA = cast<SentinelAttr>(A);
2670 Record.push_back(SA->isInherited());
2671 Record.push_back(A->isImplicit());
2672 Record.push_back(A->isPackExpansion());
2673 Record.push_back(SA->getSentinel());
2674 Record.push_back(SA->getNullPos());
2675 break;
2676 }
2677 case attr::SetTypestate: {
2678 const auto *SA = cast<SetTypestateAttr>(A);
2679 Record.push_back(SA->isInherited());
2680 Record.push_back(A->isImplicit());
2681 Record.push_back(A->isPackExpansion());
2682 Record.push_back(static_cast<uint64_t>(SA->getNewState()));
2683 break;
2684 }
2685 case attr::SharedTrylockFunction: {
2686 const auto *SA = cast<SharedTrylockFunctionAttr>(A);
2687 Record.push_back(SA->isInherited());
2688 Record.push_back(A->isImplicit());
2689 Record.push_back(A->isPackExpansion());
2690 Record.AddStmt(SA->getSuccessValue());
2691 Record.push_back(SA->args_size());
2692 for (auto &Val : SA->args())
2693 Record.AddStmt(Val);
2694 break;
2695 }
2696 case attr::SizedBy: {
2697 const auto *SA = cast<SizedByAttr>(A);
2698 Record.push_back(SA->isInherited());
2699 Record.push_back(A->isImplicit());
2700 Record.push_back(A->isPackExpansion());
2701 Record.AddStmt(SA->getSize());
2702 Record.push_back(SA->getNestedLevel());
2703 break;
2704 }
2705 case attr::SizedByOrNull: {
2706 const auto *SA = cast<SizedByOrNullAttr>(A);
2707 Record.push_back(SA->isInherited());
2708 Record.push_back(A->isImplicit());
2709 Record.push_back(A->isPackExpansion());
2710 Record.AddStmt(SA->getSize());
2711 Record.push_back(SA->getNestedLevel());
2712 break;
2713 }
2714 case attr::SpeculativeLoadHardening: {
2715 const auto *SA = cast<SpeculativeLoadHardeningAttr>(A);
2716 Record.push_back(SA->isInherited());
2717 Record.push_back(A->isImplicit());
2718 Record.push_back(A->isPackExpansion());
2719 break;
2720 }
2721 case attr::StandaloneDebug: {
2722 const auto *SA = cast<StandaloneDebugAttr>(A);
2723 Record.push_back(SA->isInherited());
2724 Record.push_back(A->isImplicit());
2725 Record.push_back(A->isPackExpansion());
2726 break;
2727 }
2728 case attr::StdCall: {
2729 const auto *SA = cast<StdCallAttr>(A);
2730 Record.push_back(SA->isInherited());
2731 Record.push_back(A->isImplicit());
2732 Record.push_back(A->isPackExpansion());
2733 break;
2734 }
2735 case attr::StrictFP: {
2736 const auto *SA = cast<StrictFPAttr>(A);
2737 Record.push_back(SA->isInherited());
2738 Record.push_back(A->isImplicit());
2739 Record.push_back(A->isPackExpansion());
2740 break;
2741 }
2742 case attr::StrictGuardStackCheck: {
2743 const auto *SA = cast<StrictGuardStackCheckAttr>(A);
2744 Record.push_back(SA->isInherited());
2745 Record.push_back(A->isImplicit());
2746 Record.push_back(A->isPackExpansion());
2747 break;
2748 }
2749 case attr::Suppress: {
2750 const auto *SA = cast<SuppressAttr>(A);
2751 Record.push_back(SA->isInherited());
2752 Record.push_back(A->isImplicit());
2753 Record.push_back(A->isPackExpansion());
2754 Record.push_back(SA->diagnosticIdentifiers_size());
2755 for (auto &Val : SA->diagnosticIdentifiers())
2756 Record.AddString(Val);
2757 break;
2758 }
2759 case attr::SwiftAsync: {
2760 const auto *SA = cast<SwiftAsyncAttr>(A);
2761 Record.push_back(SA->isInherited());
2762 Record.push_back(A->isImplicit());
2763 Record.push_back(A->isPackExpansion());
2764 Record.push_back(static_cast<uint64_t>(SA->getKind()));
2765 Record.push_back(SA->getCompletionHandlerIndex().serialize());
2766 break;
2767 }
2768 case attr::SwiftAsyncCall: {
2769 const auto *SA = cast<SwiftAsyncCallAttr>(A);
2770 Record.push_back(SA->isInherited());
2771 Record.push_back(A->isImplicit());
2772 Record.push_back(A->isPackExpansion());
2773 break;
2774 }
2775 case attr::SwiftAsyncContext: {
2776 const auto *SA = cast<SwiftAsyncContextAttr>(A);
2777 Record.push_back(SA->isInherited());
2778 Record.push_back(A->isImplicit());
2779 Record.push_back(A->isPackExpansion());
2780 break;
2781 }
2782 case attr::SwiftAsyncError: {
2783 const auto *SA = cast<SwiftAsyncErrorAttr>(A);
2784 Record.push_back(SA->isInherited());
2785 Record.push_back(A->isImplicit());
2786 Record.push_back(A->isPackExpansion());
2787 Record.push_back(static_cast<uint64_t>(SA->getConvention()));
2788 Record.push_back(SA->getHandlerParamIdx());
2789 break;
2790 }
2791 case attr::SwiftAsyncName: {
2792 const auto *SA = cast<SwiftAsyncNameAttr>(A);
2793 Record.push_back(SA->isInherited());
2794 Record.push_back(A->isImplicit());
2795 Record.push_back(A->isPackExpansion());
2796 Record.AddString(SA->getName());
2797 break;
2798 }
2799 case attr::SwiftAttr: {
2800 const auto *SA = cast<SwiftAttrAttr>(A);
2801 Record.push_back(SA->isInherited());
2802 Record.push_back(A->isImplicit());
2803 Record.push_back(A->isPackExpansion());
2804 Record.AddString(SA->getAttribute());
2805 break;
2806 }
2807 case attr::SwiftBridge: {
2808 const auto *SA = cast<SwiftBridgeAttr>(A);
2809 Record.push_back(SA->isInherited());
2810 Record.push_back(A->isImplicit());
2811 Record.push_back(A->isPackExpansion());
2812 Record.AddString(SA->getSwiftType());
2813 break;
2814 }
2815 case attr::SwiftBridgedTypedef: {
2816 const auto *SA = cast<SwiftBridgedTypedefAttr>(A);
2817 Record.push_back(SA->isInherited());
2818 Record.push_back(A->isImplicit());
2819 Record.push_back(A->isPackExpansion());
2820 break;
2821 }
2822 case attr::SwiftCall: {
2823 const auto *SA = cast<SwiftCallAttr>(A);
2824 Record.push_back(SA->isInherited());
2825 Record.push_back(A->isImplicit());
2826 Record.push_back(A->isPackExpansion());
2827 break;
2828 }
2829 case attr::SwiftContext: {
2830 const auto *SA = cast<SwiftContextAttr>(A);
2831 Record.push_back(SA->isInherited());
2832 Record.push_back(A->isImplicit());
2833 Record.push_back(A->isPackExpansion());
2834 break;
2835 }
2836 case attr::SwiftError: {
2837 const auto *SA = cast<SwiftErrorAttr>(A);
2838 Record.push_back(SA->isInherited());
2839 Record.push_back(A->isImplicit());
2840 Record.push_back(A->isPackExpansion());
2841 Record.push_back(static_cast<uint64_t>(SA->getConvention()));
2842 break;
2843 }
2844 case attr::SwiftErrorResult: {
2845 const auto *SA = cast<SwiftErrorResultAttr>(A);
2846 Record.push_back(SA->isInherited());
2847 Record.push_back(A->isImplicit());
2848 Record.push_back(A->isPackExpansion());
2849 break;
2850 }
2851 case attr::SwiftImportAsNonGeneric: {
2852 const auto *SA = cast<SwiftImportAsNonGenericAttr>(A);
2853 Record.push_back(SA->isInherited());
2854 Record.push_back(A->isImplicit());
2855 Record.push_back(A->isPackExpansion());
2856 break;
2857 }
2858 case attr::SwiftImportPropertyAsAccessors: {
2859 const auto *SA = cast<SwiftImportPropertyAsAccessorsAttr>(A);
2860 Record.push_back(SA->isInherited());
2861 Record.push_back(A->isImplicit());
2862 Record.push_back(A->isPackExpansion());
2863 break;
2864 }
2865 case attr::SwiftIndirectResult: {
2866 const auto *SA = cast<SwiftIndirectResultAttr>(A);
2867 Record.push_back(SA->isInherited());
2868 Record.push_back(A->isImplicit());
2869 Record.push_back(A->isPackExpansion());
2870 break;
2871 }
2872 case attr::SwiftName: {
2873 const auto *SA = cast<SwiftNameAttr>(A);
2874 Record.push_back(SA->isInherited());
2875 Record.push_back(A->isImplicit());
2876 Record.push_back(A->isPackExpansion());
2877 Record.AddString(SA->getName());
2878 break;
2879 }
2880 case attr::SwiftNewType: {
2881 const auto *SA = cast<SwiftNewTypeAttr>(A);
2882 Record.push_back(SA->isInherited());
2883 Record.push_back(A->isImplicit());
2884 Record.push_back(A->isPackExpansion());
2885 Record.push_back(static_cast<uint64_t>(SA->getNewtypeKind()));
2886 break;
2887 }
2888 case attr::SwiftObjCMembers: {
2889 Record.push_back(A->isImplicit());
2890 Record.push_back(A->isPackExpansion());
2891 break;
2892 }
2893 case attr::SwiftPrivate: {
2894 const auto *SA = cast<SwiftPrivateAttr>(A);
2895 Record.push_back(SA->isInherited());
2896 Record.push_back(A->isImplicit());
2897 Record.push_back(A->isPackExpansion());
2898 break;
2899 }
2900 case attr::SwiftVersionedAddition: {
2901 const auto *SA = cast<SwiftVersionedAdditionAttr>(A);
2902 Record.push_back(A->isImplicit());
2903 Record.push_back(A->isPackExpansion());
2904 Record.AddVersionTuple(SA->getVersion());
2905 AddAttr(SA->getAdditionalAttr()); Record.push_back(SA->getIsReplacedByActive());
2906 break;
2907 }
2908 case attr::SwiftVersionedRemoval: {
2909 const auto *SA = cast<SwiftVersionedRemovalAttr>(A);
2910 Record.push_back(A->isImplicit());
2911 Record.push_back(A->isPackExpansion());
2912 Record.AddVersionTuple(SA->getVersion());
2913 Record.push_back(SA->getRawKind());
2914 Record.push_back(SA->getIsReplacedByActive());
2915 break;
2916 }
2917 case attr::SysVABI: {
2918 const auto *SA = cast<SysVABIAttr>(A);
2919 Record.push_back(SA->isInherited());
2920 Record.push_back(A->isImplicit());
2921 Record.push_back(A->isPackExpansion());
2922 break;
2923 }
2924 case attr::TLSModel: {
2925 const auto *SA = cast<TLSModelAttr>(A);
2926 Record.push_back(SA->isInherited());
2927 Record.push_back(A->isImplicit());
2928 Record.push_back(A->isPackExpansion());
2929 Record.AddString(SA->getModel());
2930 break;
2931 }
2932 case attr::Target: {
2933 const auto *SA = cast<TargetAttr>(A);
2934 Record.push_back(SA->isInherited());
2935 Record.push_back(A->isImplicit());
2936 Record.push_back(A->isPackExpansion());
2937 Record.AddString(SA->getFeaturesStr());
2938 break;
2939 }
2940 case attr::TargetClones: {
2941 const auto *SA = cast<TargetClonesAttr>(A);
2942 Record.push_back(SA->isInherited());
2943 Record.push_back(A->isImplicit());
2944 Record.push_back(A->isPackExpansion());
2945 Record.push_back(SA->featuresStrs_size());
2946 for (auto &Val : SA->featuresStrs())
2947 Record.AddString(Val);
2948 break;
2949 }
2950 case attr::TargetVersion: {
2951 const auto *SA = cast<TargetVersionAttr>(A);
2952 Record.push_back(SA->isInherited());
2953 Record.push_back(A->isImplicit());
2954 Record.push_back(A->isPackExpansion());
2955 Record.AddString(SA->getNamesStr());
2956 break;
2957 }
2958 case attr::TestTypestate: {
2959 const auto *SA = cast<TestTypestateAttr>(A);
2960 Record.push_back(SA->isInherited());
2961 Record.push_back(A->isImplicit());
2962 Record.push_back(A->isPackExpansion());
2963 Record.push_back(static_cast<uint64_t>(SA->getTestState()));
2964 break;
2965 }
2966 case attr::ThisCall: {
2967 const auto *SA = cast<ThisCallAttr>(A);
2968 Record.push_back(SA->isInherited());
2969 Record.push_back(A->isImplicit());
2970 Record.push_back(A->isPackExpansion());
2971 break;
2972 }
2973 case attr::Thread: {
2974 Record.push_back(A->isImplicit());
2975 Record.push_back(A->isPackExpansion());
2976 break;
2977 }
2978 case attr::TransparentUnion: {
2979 const auto *SA = cast<TransparentUnionAttr>(A);
2980 Record.push_back(SA->isInherited());
2981 Record.push_back(A->isImplicit());
2982 Record.push_back(A->isPackExpansion());
2983 break;
2984 }
2985 case attr::TrivialABI: {
2986 const auto *SA = cast<TrivialABIAttr>(A);
2987 Record.push_back(SA->isInherited());
2988 Record.push_back(A->isImplicit());
2989 Record.push_back(A->isPackExpansion());
2990 break;
2991 }
2992 case attr::TryAcquireCapability: {
2993 const auto *SA = cast<TryAcquireCapabilityAttr>(A);
2994 Record.push_back(SA->isInherited());
2995 Record.push_back(A->isImplicit());
2996 Record.push_back(A->isPackExpansion());
2997 Record.AddStmt(SA->getSuccessValue());
2998 Record.push_back(SA->args_size());
2999 for (auto &Val : SA->args())
3000 Record.AddStmt(Val);
3001 break;
3002 }
3003 case attr::TypeNonNull: {
3004 Record.push_back(A->isImplicit());
3005 Record.push_back(A->isPackExpansion());
3006 break;
3007 }
3008 case attr::TypeNullUnspecified: {
3009 Record.push_back(A->isImplicit());
3010 Record.push_back(A->isPackExpansion());
3011 break;
3012 }
3013 case attr::TypeNullable: {
3014 const auto *SA = cast<TypeNullableAttr>(A);
3015 Record.push_back(SA->isInherited());
3016 Record.push_back(A->isImplicit());
3017 Record.push_back(A->isPackExpansion());
3018 break;
3019 }
3020 case attr::TypeNullableResult: {
3021 Record.push_back(A->isImplicit());
3022 Record.push_back(A->isPackExpansion());
3023 break;
3024 }
3025 case attr::TypeTagForDatatype: {
3026 const auto *SA = cast<TypeTagForDatatypeAttr>(A);
3027 Record.push_back(SA->isInherited());
3028 Record.push_back(A->isImplicit());
3029 Record.push_back(A->isPackExpansion());
3030 Record.AddIdentifierRef(SA->getArgumentKind());
3031 Record.AddTypeSourceInfo(SA->getMatchingCTypeLoc());
3032 Record.push_back(SA->getLayoutCompatible());
3033 Record.push_back(SA->getMustBeNull());
3034 break;
3035 }
3036 case attr::TypeVisibility: {
3037 const auto *SA = cast<TypeVisibilityAttr>(A);
3038 Record.push_back(SA->isInherited());
3039 Record.push_back(A->isImplicit());
3040 Record.push_back(A->isPackExpansion());
3041 Record.push_back(static_cast<uint64_t>(SA->getVisibility()));
3042 break;
3043 }
3044 case attr::UPtr: {
3045 Record.push_back(A->isImplicit());
3046 Record.push_back(A->isPackExpansion());
3047 break;
3048 }
3049 case attr::Unavailable: {
3050 const auto *SA = cast<UnavailableAttr>(A);
3051 Record.push_back(SA->isInherited());
3052 Record.push_back(A->isImplicit());
3053 Record.push_back(A->isPackExpansion());
3054 Record.AddString(SA->getMessage());
3055 Record.push_back(static_cast<uint64_t>(SA->getImplicitReason()));
3056 break;
3057 }
3058 case attr::Uninitialized: {
3059 const auto *SA = cast<UninitializedAttr>(A);
3060 Record.push_back(SA->isInherited());
3061 Record.push_back(A->isImplicit());
3062 Record.push_back(A->isPackExpansion());
3063 break;
3064 }
3065 case attr::Unlikely: {
3066 Record.push_back(A->isImplicit());
3067 Record.push_back(A->isPackExpansion());
3068 break;
3069 }
3070 case attr::UnsafeBufferUsage: {
3071 const auto *SA = cast<UnsafeBufferUsageAttr>(A);
3072 Record.push_back(SA->isInherited());
3073 Record.push_back(A->isImplicit());
3074 Record.push_back(A->isPackExpansion());
3075 break;
3076 }
3077 case attr::Unused: {
3078 const auto *SA = cast<UnusedAttr>(A);
3079 Record.push_back(SA->isInherited());
3080 Record.push_back(A->isImplicit());
3081 Record.push_back(A->isPackExpansion());
3082 break;
3083 }
3084 case attr::UseHandle: {
3085 const auto *SA = cast<UseHandleAttr>(A);
3086 Record.push_back(SA->isInherited());
3087 Record.push_back(A->isImplicit());
3088 Record.push_back(A->isPackExpansion());
3089 Record.AddString(SA->getHandleType());
3090 break;
3091 }
3092 case attr::Used: {
3093 const auto *SA = cast<UsedAttr>(A);
3094 Record.push_back(SA->isInherited());
3095 Record.push_back(A->isImplicit());
3096 Record.push_back(A->isPackExpansion());
3097 break;
3098 }
3099 case attr::UsingIfExists: {
3100 const auto *SA = cast<UsingIfExistsAttr>(A);
3101 Record.push_back(SA->isInherited());
3102 Record.push_back(A->isImplicit());
3103 Record.push_back(A->isPackExpansion());
3104 break;
3105 }
3106 case attr::Uuid: {
3107 const auto *SA = cast<UuidAttr>(A);
3108 Record.push_back(SA->isInherited());
3109 Record.push_back(A->isImplicit());
3110 Record.push_back(A->isPackExpansion());
3111 Record.AddString(SA->getGuid());
3112 Record.AddDeclRef(SA->getGuidDecl());
3113 break;
3114 }
3115 case attr::VTablePointerAuthentication: {
3116 const auto *SA = cast<VTablePointerAuthenticationAttr>(A);
3117 Record.push_back(SA->isInherited());
3118 Record.push_back(A->isImplicit());
3119 Record.push_back(A->isPackExpansion());
3120 Record.push_back(static_cast<uint64_t>(SA->getKey()));
3121 Record.push_back(static_cast<uint64_t>(SA->getAddressDiscrimination()));
3122 Record.push_back(static_cast<uint64_t>(SA->getExtraDiscrimination()));
3123 Record.push_back(SA->getCustomDiscriminationValue());
3124 break;
3125 }
3126 case attr::VecReturn: {
3127 const auto *SA = cast<VecReturnAttr>(A);
3128 Record.push_back(SA->isInherited());
3129 Record.push_back(A->isImplicit());
3130 Record.push_back(A->isPackExpansion());
3131 break;
3132 }
3133 case attr::VecTypeHint: {
3134 const auto *SA = cast<VecTypeHintAttr>(A);
3135 Record.push_back(SA->isInherited());
3136 Record.push_back(A->isImplicit());
3137 Record.push_back(A->isPackExpansion());
3138 Record.AddTypeSourceInfo(SA->getTypeHintLoc());
3139 break;
3140 }
3141 case attr::VectorCall: {
3142 const auto *SA = cast<VectorCallAttr>(A);
3143 Record.push_back(SA->isInherited());
3144 Record.push_back(A->isImplicit());
3145 Record.push_back(A->isPackExpansion());
3146 break;
3147 }
3148 case attr::Visibility: {
3149 const auto *SA = cast<VisibilityAttr>(A);
3150 Record.push_back(SA->isInherited());
3151 Record.push_back(A->isImplicit());
3152 Record.push_back(A->isPackExpansion());
3153 Record.push_back(static_cast<uint64_t>(SA->getVisibility()));
3154 break;
3155 }
3156 case attr::WarnUnused: {
3157 const auto *SA = cast<WarnUnusedAttr>(A);
3158 Record.push_back(SA->isInherited());
3159 Record.push_back(A->isImplicit());
3160 Record.push_back(A->isPackExpansion());
3161 break;
3162 }
3163 case attr::WarnUnusedResult: {
3164 const auto *SA = cast<WarnUnusedResultAttr>(A);
3165 Record.push_back(SA->isInherited());
3166 Record.push_back(A->isImplicit());
3167 Record.push_back(A->isPackExpansion());
3168 Record.AddString(SA->getMessage());
3169 break;
3170 }
3171 case attr::Weak: {
3172 const auto *SA = cast<WeakAttr>(A);
3173 Record.push_back(SA->isInherited());
3174 Record.push_back(A->isImplicit());
3175 Record.push_back(A->isPackExpansion());
3176 break;
3177 }
3178 case attr::WeakImport: {
3179 const auto *SA = cast<WeakImportAttr>(A);
3180 Record.push_back(SA->isInherited());
3181 Record.push_back(A->isImplicit());
3182 Record.push_back(A->isPackExpansion());
3183 break;
3184 }
3185 case attr::WeakRef: {
3186 const auto *SA = cast<WeakRefAttr>(A);
3187 Record.push_back(SA->isInherited());
3188 Record.push_back(A->isImplicit());
3189 Record.push_back(A->isPackExpansion());
3190 Record.AddString(SA->getAliasee());
3191 break;
3192 }
3193 case attr::WebAssemblyExportName: {
3194 const auto *SA = cast<WebAssemblyExportNameAttr>(A);
3195 Record.push_back(SA->isInherited());
3196 Record.push_back(A->isImplicit());
3197 Record.push_back(A->isPackExpansion());
3198 Record.AddString(SA->getExportName());
3199 break;
3200 }
3201 case attr::WebAssemblyFuncref: {
3202 Record.push_back(A->isImplicit());
3203 Record.push_back(A->isPackExpansion());
3204 break;
3205 }
3206 case attr::WebAssemblyImportModule: {
3207 const auto *SA = cast<WebAssemblyImportModuleAttr>(A);
3208 Record.push_back(SA->isInherited());
3209 Record.push_back(A->isImplicit());
3210 Record.push_back(A->isPackExpansion());
3211 Record.AddString(SA->getImportModule());
3212 break;
3213 }
3214 case attr::WebAssemblyImportName: {
3215 const auto *SA = cast<WebAssemblyImportNameAttr>(A);
3216 Record.push_back(SA->isInherited());
3217 Record.push_back(A->isImplicit());
3218 Record.push_back(A->isPackExpansion());
3219 Record.AddString(SA->getImportName());
3220 break;
3221 }
3222 case attr::WorkGroupSizeHint: {
3223 const auto *SA = cast<WorkGroupSizeHintAttr>(A);
3224 Record.push_back(SA->isInherited());
3225 Record.push_back(A->isImplicit());
3226 Record.push_back(A->isPackExpansion());
3227 Record.push_back(SA->getXDim());
3228 Record.push_back(SA->getYDim());
3229 Record.push_back(SA->getZDim());
3230 break;
3231 }
3232 case attr::X86ForceAlignArgPointer: {
3233 const auto *SA = cast<X86ForceAlignArgPointerAttr>(A);
3234 Record.push_back(SA->isInherited());
3235 Record.push_back(A->isImplicit());
3236 Record.push_back(A->isPackExpansion());
3237 break;
3238 }
3239 case attr::XRayInstrument: {
3240 const auto *SA = cast<XRayInstrumentAttr>(A);
3241 Record.push_back(SA->isInherited());
3242 Record.push_back(A->isImplicit());
3243 Record.push_back(A->isPackExpansion());
3244 break;
3245 }
3246 case attr::XRayLogArgs: {
3247 const auto *SA = cast<XRayLogArgsAttr>(A);
3248 Record.push_back(SA->isInherited());
3249 Record.push_back(A->isImplicit());
3250 Record.push_back(A->isPackExpansion());
3251 Record.push_back(SA->getArgumentCount());
3252 break;
3253 }
3254 case attr::ZeroCallUsedRegs: {
3255 const auto *SA = cast<ZeroCallUsedRegsAttr>(A);
3256 Record.push_back(SA->isInherited());
3257 Record.push_back(A->isImplicit());
3258 Record.push_back(A->isPackExpansion());
3259 Record.push_back(static_cast<uint64_t>(SA->getZeroCallUsedRegs()));
3260 break;
3261 }
3262 }