LCOV - code coverage report
Current view: top level - build-llvm/tools/clang/include/clang/Serialization - AttrPCHWrite.inc (source / functions) Hit Total Coverage
Test: llvm-toolchain.info Lines: 428 1171 36.5 %
Date: 2018-10-20 13:21:21 Functions: 0 0 -
Legend: Lines: hit not hit

          Line data    Source code
       1             : /*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
       2             : |*                                                                            *|
       3             : |* Attribute serialization code                                               *|
       4             : |*                                                                            *|
       5             : |* Automatically generated file, do not edit!                                 *|
       6             : |*                                                                            *|
       7             : \*===----------------------------------------------------------------------===*/
       8             : 
       9      242113 :   switch (A->getKind()) {
      10             :   case attr::AMDGPUFlatWorkGroupSize: {
      11             :     const auto *SA = cast<AMDGPUFlatWorkGroupSizeAttr>(A);
      12           0 :     Record.push_back(SA->isInherited());
      13           0 :     Record.push_back(A->isImplicit());
      14           0 :     Record.push_back(A->getSpellingListIndex());
      15           0 :     Record.push_back(SA->getMin());
      16           0 :     Record.push_back(SA->getMax());
      17           0 :     break;
      18             :   }
      19             :   case attr::AMDGPUNumSGPR: {
      20             :     const auto *SA = cast<AMDGPUNumSGPRAttr>(A);
      21           0 :     Record.push_back(SA->isInherited());
      22           0 :     Record.push_back(A->isImplicit());
      23           0 :     Record.push_back(A->getSpellingListIndex());
      24           0 :     Record.push_back(SA->getNumSGPR());
      25           0 :     break;
      26             :   }
      27             :   case attr::AMDGPUNumVGPR: {
      28             :     const auto *SA = cast<AMDGPUNumVGPRAttr>(A);
      29           0 :     Record.push_back(SA->isInherited());
      30           0 :     Record.push_back(A->isImplicit());
      31           0 :     Record.push_back(A->getSpellingListIndex());
      32           0 :     Record.push_back(SA->getNumVGPR());
      33           0 :     break;
      34             :   }
      35             :   case attr::AMDGPUWavesPerEU: {
      36             :     const auto *SA = cast<AMDGPUWavesPerEUAttr>(A);
      37           0 :     Record.push_back(SA->isInherited());
      38           0 :     Record.push_back(A->isImplicit());
      39           0 :     Record.push_back(A->getSpellingListIndex());
      40           0 :     Record.push_back(SA->getMin());
      41           0 :     Record.push_back(SA->getMax());
      42           0 :     break;
      43             :   }
      44             :   case attr::ARMInterrupt: {
      45             :     const auto *SA = cast<ARMInterruptAttr>(A);
      46           0 :     Record.push_back(SA->isInherited());
      47           0 :     Record.push_back(A->isImplicit());
      48           0 :     Record.push_back(A->getSpellingListIndex());
      49           0 : Record.push_back(SA->getInterrupt());
      50           0 :     break;
      51             :   }
      52             :   case attr::AVRInterrupt: {
      53             :     const auto *SA = cast<AVRInterruptAttr>(A);
      54           0 :     Record.push_back(SA->isInherited());
      55           0 :     Record.push_back(A->isImplicit());
      56           0 :     Record.push_back(A->getSpellingListIndex());
      57           0 :     break;
      58             :   }
      59             :   case attr::AVRSignal: {
      60             :     const auto *SA = cast<AVRSignalAttr>(A);
      61           0 :     Record.push_back(SA->isInherited());
      62           0 :     Record.push_back(A->isImplicit());
      63           0 :     Record.push_back(A->getSpellingListIndex());
      64           0 :     break;
      65             :   }
      66             :   case attr::AbiTag: {
      67             :     const auto *SA = cast<AbiTagAttr>(A);
      68           1 :     Record.push_back(A->isImplicit());
      69           1 :     Record.push_back(A->getSpellingListIndex());
      70           1 :     Record.push_back(SA->tags_size());
      71           4 :     for (auto &Val : SA->tags())
      72           3 :       Record.AddString(Val);
      73             :     break;
      74             :   }
      75             :   case attr::AcquireCapability: {
      76             :     const auto *SA = cast<AcquireCapabilityAttr>(A);
      77          10 :     Record.push_back(SA->isInherited());
      78          10 :     Record.push_back(A->isImplicit());
      79          10 :     Record.push_back(A->getSpellingListIndex());
      80          10 :     Record.push_back(SA->args_size());
      81          16 :     for (auto &Val : SA->args())
      82           6 :       Record.AddStmt(Val);
      83             :     break;
      84             :   }
      85             :   case attr::AcquiredAfter: {
      86             :     const auto *SA = cast<AcquiredAfterAttr>(A);
      87           1 :     Record.push_back(SA->isInherited());
      88           1 :     Record.push_back(A->isImplicit());
      89           1 :     Record.push_back(A->getSpellingListIndex());
      90           1 :     Record.push_back(SA->args_size());
      91           2 :     for (auto &Val : SA->args())
      92           1 :       Record.AddStmt(Val);
      93             :     break;
      94             :   }
      95             :   case attr::AcquiredBefore: {
      96             :     const auto *SA = cast<AcquiredBeforeAttr>(A);
      97           0 :     Record.push_back(SA->isInherited());
      98           0 :     Record.push_back(A->isImplicit());
      99           0 :     Record.push_back(A->getSpellingListIndex());
     100           0 :     Record.push_back(SA->args_size());
     101           0 :     for (auto &Val : SA->args())
     102           0 :       Record.AddStmt(Val);
     103             :     break;
     104             :   }
     105             :   case attr::AddressSpace: {
     106             :     const auto *SA = cast<AddressSpaceAttr>(A);
     107          13 :     Record.push_back(A->isImplicit());
     108          13 :     Record.push_back(A->getSpellingListIndex());
     109          13 :     Record.push_back(SA->getAddressSpace());
     110          13 :     break;
     111             :   }
     112             :   case attr::Alias: {
     113             :     const auto *SA = cast<AliasAttr>(A);
     114           2 :     Record.push_back(A->isImplicit());
     115           2 :     Record.push_back(A->getSpellingListIndex());
     116           4 :     Record.AddString(SA->getAliasee());
     117           2 :     break;
     118             :   }
     119             :   case attr::AlignMac68k: {
     120             :     const auto *SA = cast<AlignMac68kAttr>(A);
     121           0 :     Record.push_back(SA->isInherited());
     122           0 :     Record.push_back(A->isImplicit());
     123           0 :     Record.push_back(A->getSpellingListIndex());
     124           0 :     break;
     125             :   }
     126             :   case attr::AlignValue: {
     127             :     const auto *SA = cast<AlignValueAttr>(A);
     128           4 :     Record.push_back(A->isImplicit());
     129           4 :     Record.push_back(A->getSpellingListIndex());
     130           4 :     Record.AddStmt(SA->getAlignment());
     131           4 :     break;
     132             :   }
     133             :   case attr::Aligned: {
     134             :     const auto *SA = cast<AlignedAttr>(A);
     135         277 :     Record.push_back(SA->isInherited());
     136         277 :     Record.push_back(A->isImplicit());
     137         277 :     Record.push_back(A->getSpellingListIndex());
     138         277 :     Record.push_back(SA->isAlignmentExpr());
     139         277 :     if (SA->isAlignmentExpr())
     140         277 :       Record.AddStmt(SA->getAlignmentExpr());
     141             :     else
     142           0 :       Record.AddTypeSourceInfo(SA->getAlignmentType());
     143             :     break;
     144             :   }
     145             :   case attr::AllocAlign: {
     146             :     const auto *SA = cast<AllocAlignAttr>(A);
     147           2 :     Record.push_back(SA->isInherited());
     148           2 :     Record.push_back(A->isImplicit());
     149           2 :     Record.push_back(A->getSpellingListIndex());
     150           2 :     Record.push_back(SA->getParamIndex().serialize());
     151           2 :     break;
     152             :   }
     153             :   case attr::AllocSize: {
     154             :     const auto *SA = cast<AllocSizeAttr>(A);
     155           4 :     Record.push_back(SA->isInherited());
     156           4 :     Record.push_back(A->isImplicit());
     157           4 :     Record.push_back(A->getSpellingListIndex());
     158           4 :     Record.push_back(SA->getElemSizeParam().serialize());
     159           4 :     Record.push_back(SA->getNumElemsParam().serialize());
     160           4 :     break;
     161             :   }
     162             :   case attr::AlwaysDestroy: {
     163             :     const auto *SA = cast<AlwaysDestroyAttr>(A);
     164           0 :     Record.push_back(SA->isInherited());
     165           0 :     Record.push_back(A->isImplicit());
     166           0 :     Record.push_back(A->getSpellingListIndex());
     167           0 :     break;
     168             :   }
     169             :   case attr::AlwaysInline: {
     170             :     const auto *SA = cast<AlwaysInlineAttr>(A);
     171       36751 :     Record.push_back(SA->isInherited());
     172       36751 :     Record.push_back(A->isImplicit());
     173       36751 :     Record.push_back(A->getSpellingListIndex());
     174       36751 :     break;
     175             :   }
     176             :   case attr::AnalyzerNoReturn: {
     177             :     const auto *SA = cast<AnalyzerNoReturnAttr>(A);
     178           0 :     Record.push_back(SA->isInherited());
     179           0 :     Record.push_back(A->isImplicit());
     180           0 :     Record.push_back(A->getSpellingListIndex());
     181           0 :     break;
     182             :   }
     183             :   case attr::Annotate: {
     184             :     const auto *SA = cast<AnnotateAttr>(A);
     185           0 :     Record.push_back(SA->isInherited());
     186           0 :     Record.push_back(A->isImplicit());
     187           0 :     Record.push_back(A->getSpellingListIndex());
     188           0 :     Record.AddString(SA->getAnnotation());
     189           0 :     break;
     190             :   }
     191             :   case attr::AnyX86Interrupt: {
     192             :     const auto *SA = cast<AnyX86InterruptAttr>(A);
     193           0 :     Record.push_back(SA->isInherited());
     194           0 :     Record.push_back(A->isImplicit());
     195           0 :     Record.push_back(A->getSpellingListIndex());
     196           0 :     break;
     197             :   }
     198             :   case attr::AnyX86NoCallerSavedRegisters: {
     199             :     const auto *SA = cast<AnyX86NoCallerSavedRegistersAttr>(A);
     200           0 :     Record.push_back(SA->isInherited());
     201           0 :     Record.push_back(A->isImplicit());
     202           0 :     Record.push_back(A->getSpellingListIndex());
     203           0 :     break;
     204             :   }
     205             :   case attr::AnyX86NoCfCheck: {
     206             :     const auto *SA = cast<AnyX86NoCfCheckAttr>(A);
     207           0 :     Record.push_back(SA->isInherited());
     208           0 :     Record.push_back(A->isImplicit());
     209           0 :     Record.push_back(A->getSpellingListIndex());
     210           0 :     break;
     211             :   }
     212             :   case attr::ArcWeakrefUnavailable: {
     213             :     const auto *SA = cast<ArcWeakrefUnavailableAttr>(A);
     214           0 :     Record.push_back(SA->isInherited());
     215           0 :     Record.push_back(A->isImplicit());
     216           0 :     Record.push_back(A->getSpellingListIndex());
     217           0 :     break;
     218             :   }
     219             :   case attr::ArgumentWithTypeTag: {
     220             :     const auto *SA = cast<ArgumentWithTypeTagAttr>(A);
     221           4 :     Record.push_back(SA->isInherited());
     222           4 :     Record.push_back(A->isImplicit());
     223           4 :     Record.push_back(A->getSpellingListIndex());
     224           4 :     Record.AddIdentifierRef(SA->getArgumentKind());
     225           4 :     Record.push_back(SA->getArgumentIdx().serialize());
     226           4 :     Record.push_back(SA->getTypeTagIdx().serialize());
     227           4 :     Record.push_back(SA->getIsPointer());
     228           4 :     break;
     229             :   }
     230             :   case attr::Artificial: {
     231             :     const auto *SA = cast<ArtificialAttr>(A);
     232           0 :     Record.push_back(SA->isInherited());
     233           0 :     Record.push_back(A->isImplicit());
     234           0 :     Record.push_back(A->getSpellingListIndex());
     235           0 :     break;
     236             :   }
     237             :   case attr::AsmLabel: {
     238             :     const auto *SA = cast<AsmLabelAttr>(A);
     239          34 :     Record.push_back(SA->isInherited());
     240          34 :     Record.push_back(A->isImplicit());
     241          34 :     Record.push_back(A->getSpellingListIndex());
     242          68 :     Record.AddString(SA->getLabel());
     243          34 :     break;
     244             :   }
     245             :   case attr::AssertCapability: {
     246             :     const auto *SA = cast<AssertCapabilityAttr>(A);
     247           0 :     Record.push_back(SA->isInherited());
     248           0 :     Record.push_back(A->isImplicit());
     249           0 :     Record.push_back(A->getSpellingListIndex());
     250           0 :     Record.push_back(SA->args_size());
     251           0 :     for (auto &Val : SA->args())
     252           0 :       Record.AddStmt(Val);
     253             :     break;
     254             :   }
     255             :   case attr::AssertExclusiveLock: {
     256             :     const auto *SA = cast<AssertExclusiveLockAttr>(A);
     257           0 :     Record.push_back(SA->isInherited());
     258           0 :     Record.push_back(A->isImplicit());
     259           0 :     Record.push_back(A->getSpellingListIndex());
     260           0 :     Record.push_back(SA->args_size());
     261           0 :     for (auto &Val : SA->args())
     262           0 :       Record.AddStmt(Val);
     263             :     break;
     264             :   }
     265             :   case attr::AssertSharedLock: {
     266             :     const auto *SA = cast<AssertSharedLockAttr>(A);
     267           0 :     Record.push_back(SA->isInherited());
     268           0 :     Record.push_back(A->isImplicit());
     269           0 :     Record.push_back(A->getSpellingListIndex());
     270           0 :     Record.push_back(SA->args_size());
     271           0 :     for (auto &Val : SA->args())
     272           0 :       Record.AddStmt(Val);
     273             :     break;
     274             :   }
     275             :   case attr::AssumeAligned: {
     276             :     const auto *SA = cast<AssumeAlignedAttr>(A);
     277           0 :     Record.push_back(SA->isInherited());
     278           0 :     Record.push_back(A->isImplicit());
     279           0 :     Record.push_back(A->getSpellingListIndex());
     280           0 :     Record.AddStmt(SA->getAlignment());
     281           0 :     Record.AddStmt(SA->getOffset());
     282           0 :     break;
     283             :   }
     284             :   case attr::Availability: {
     285             :     const auto *SA = cast<AvailabilityAttr>(A);
     286           4 :     Record.push_back(SA->isInherited());
     287           4 :     Record.push_back(A->isImplicit());
     288           4 :     Record.push_back(A->getSpellingListIndex());
     289           4 :     Record.AddIdentifierRef(SA->getPlatform());
     290           4 :     Record.AddVersionTuple(SA->getIntroduced());
     291           4 :     Record.AddVersionTuple(SA->getDeprecated());
     292           4 :     Record.AddVersionTuple(SA->getObsoleted());
     293           4 :     Record.push_back(SA->getUnavailable());
     294           8 :     Record.AddString(SA->getMessage());
     295           4 :     Record.push_back(SA->getStrict());
     296           8 :     Record.AddString(SA->getReplacement());
     297           4 :     break;
     298             :   }
     299             :   case attr::Blocks: {
     300             :     const auto *SA = cast<BlocksAttr>(A);
     301           5 :     Record.push_back(SA->isInherited());
     302           5 :     Record.push_back(A->isImplicit());
     303           5 :     Record.push_back(A->getSpellingListIndex());
     304           5 : Record.push_back(SA->getType());
     305           5 :     break;
     306             :   }
     307             :   case attr::C11NoReturn: {
     308             :     const auto *SA = cast<C11NoReturnAttr>(A);
     309           0 :     Record.push_back(SA->isInherited());
     310           0 :     Record.push_back(A->isImplicit());
     311           0 :     Record.push_back(A->getSpellingListIndex());
     312           0 :     break;
     313             :   }
     314             :   case attr::CDecl: {
     315             :     const auto *SA = cast<CDeclAttr>(A);
     316           0 :     Record.push_back(SA->isInherited());
     317           0 :     Record.push_back(A->isImplicit());
     318           0 :     Record.push_back(A->getSpellingListIndex());
     319           0 :     break;
     320             :   }
     321             :   case attr::CFAuditedTransfer: {
     322             :     const auto *SA = cast<CFAuditedTransferAttr>(A);
     323           0 :     Record.push_back(SA->isInherited());
     324           0 :     Record.push_back(A->isImplicit());
     325           0 :     Record.push_back(A->getSpellingListIndex());
     326           0 :     break;
     327             :   }
     328             :   case attr::CFConsumed: {
     329             :     const auto *SA = cast<CFConsumedAttr>(A);
     330           9 :     Record.push_back(SA->isInherited());
     331           9 :     Record.push_back(A->isImplicit());
     332           9 :     Record.push_back(A->getSpellingListIndex());
     333           9 :     break;
     334             :   }
     335             :   case attr::CFReturnsNotRetained: {
     336             :     const auto *SA = cast<CFReturnsNotRetainedAttr>(A);
     337           0 :     Record.push_back(SA->isInherited());
     338           0 :     Record.push_back(A->isImplicit());
     339           0 :     Record.push_back(A->getSpellingListIndex());
     340           0 :     break;
     341             :   }
     342             :   case attr::CFReturnsRetained: {
     343             :     const auto *SA = cast<CFReturnsRetainedAttr>(A);
     344           3 :     Record.push_back(SA->isInherited());
     345           3 :     Record.push_back(A->isImplicit());
     346           3 :     Record.push_back(A->getSpellingListIndex());
     347           3 :     break;
     348             :   }
     349             :   case attr::CFUnknownTransfer: {
     350             :     const auto *SA = cast<CFUnknownTransferAttr>(A);
     351           0 :     Record.push_back(SA->isInherited());
     352           0 :     Record.push_back(A->isImplicit());
     353           0 :     Record.push_back(A->getSpellingListIndex());
     354           0 :     break;
     355             :   }
     356             :   case attr::CPUDispatch: {
     357             :     const auto *SA = cast<CPUDispatchAttr>(A);
     358           0 :     Record.push_back(SA->isInherited());
     359           0 :     Record.push_back(A->isImplicit());
     360           0 :     Record.push_back(A->getSpellingListIndex());
     361           0 :     Record.push_back(SA->cpus_size());
     362           0 :     for (auto &Val : SA->cpus())
     363           0 :       Record.AddIdentifierRef(Val);
     364             :     break;
     365             :   }
     366             :   case attr::CPUSpecific: {
     367             :     const auto *SA = cast<CPUSpecificAttr>(A);
     368           0 :     Record.push_back(SA->isInherited());
     369           0 :     Record.push_back(A->isImplicit());
     370           0 :     Record.push_back(A->getSpellingListIndex());
     371           0 :     Record.push_back(SA->cpus_size());
     372           0 :     for (auto &Val : SA->cpus())
     373           0 :       Record.AddIdentifierRef(Val);
     374             :     break;
     375             :   }
     376             :   case attr::CUDAConstant: {
     377             :     const auto *SA = cast<CUDAConstantAttr>(A);
     378           0 :     Record.push_back(SA->isInherited());
     379           0 :     Record.push_back(A->isImplicit());
     380           0 :     Record.push_back(A->getSpellingListIndex());
     381           0 :     break;
     382             :   }
     383             :   case attr::CUDADevice: {
     384             :     const auto *SA = cast<CUDADeviceAttr>(A);
     385           4 :     Record.push_back(SA->isInherited());
     386           4 :     Record.push_back(A->isImplicit());
     387           4 :     Record.push_back(A->getSpellingListIndex());
     388           4 :     break;
     389             :   }
     390             :   case attr::CUDAGlobal: {
     391             :     const auto *SA = cast<CUDAGlobalAttr>(A);
     392           1 :     Record.push_back(SA->isInherited());
     393           1 :     Record.push_back(A->isImplicit());
     394           1 :     Record.push_back(A->getSpellingListIndex());
     395           1 :     break;
     396             :   }
     397             :   case attr::CUDAHost: {
     398             :     const auto *SA = cast<CUDAHostAttr>(A);
     399           4 :     Record.push_back(SA->isInherited());
     400           4 :     Record.push_back(A->isImplicit());
     401           4 :     Record.push_back(A->getSpellingListIndex());
     402           4 :     break;
     403             :   }
     404             :   case attr::CUDAInvalidTarget: {
     405             :     const auto *SA = cast<CUDAInvalidTargetAttr>(A);
     406           0 :     Record.push_back(SA->isInherited());
     407           0 :     Record.push_back(A->isImplicit());
     408           0 :     Record.push_back(A->getSpellingListIndex());
     409           0 :     break;
     410             :   }
     411             :   case attr::CUDALaunchBounds: {
     412             :     const auto *SA = cast<CUDALaunchBoundsAttr>(A);
     413           0 :     Record.push_back(SA->isInherited());
     414           0 :     Record.push_back(A->isImplicit());
     415           0 :     Record.push_back(A->getSpellingListIndex());
     416           0 :     Record.AddStmt(SA->getMaxThreads());
     417           0 :     Record.AddStmt(SA->getMinBlocks());
     418           0 :     break;
     419             :   }
     420             :   case attr::CUDAShared: {
     421             :     const auto *SA = cast<CUDASharedAttr>(A);
     422           0 :     Record.push_back(SA->isInherited());
     423           0 :     Record.push_back(A->isImplicit());
     424           0 :     Record.push_back(A->getSpellingListIndex());
     425           0 :     break;
     426             :   }
     427             :   case attr::CXX11NoReturn: {
     428             :     const auto *SA = cast<CXX11NoReturnAttr>(A);
     429          63 :     Record.push_back(SA->isInherited());
     430          63 :     Record.push_back(A->isImplicit());
     431          63 :     Record.push_back(A->getSpellingListIndex());
     432          63 :     break;
     433             :   }
     434             :   case attr::CallableWhen: {
     435             :     const auto *SA = cast<CallableWhenAttr>(A);
     436           0 :     Record.push_back(SA->isInherited());
     437           0 :     Record.push_back(A->isImplicit());
     438           0 :     Record.push_back(A->getSpellingListIndex());
     439           0 :     Record.push_back(SA->callableStates_size());
     440           0 :     for (CallableWhenAttr::callableStates_iterator i = SA->callableStates_begin(), e = SA->callableStates_end(); i != e; ++i)
     441           0 :       Record.push_back((*i));
     442             :     break;
     443             :   }
     444             :   case attr::Capability: {
     445             :     const auto *SA = cast<CapabilityAttr>(A);
     446           2 :     Record.push_back(SA->isInherited());
     447           2 :     Record.push_back(A->isImplicit());
     448           2 :     Record.push_back(A->getSpellingListIndex());
     449           4 :     Record.AddString(SA->getName());
     450           2 :     break;
     451             :   }
     452             :   case attr::CapturedRecord: {
     453             :     const auto *SA = cast<CapturedRecordAttr>(A);
     454       19618 :     Record.push_back(SA->isInherited());
     455       19618 :     Record.push_back(A->isImplicit());
     456       19618 :     Record.push_back(A->getSpellingListIndex());
     457       19618 :     break;
     458             :   }
     459             :   case attr::CarriesDependency: {
     460             :     const auto *SA = cast<CarriesDependencyAttr>(A);
     461           0 :     Record.push_back(SA->isInherited());
     462           0 :     Record.push_back(A->isImplicit());
     463           0 :     Record.push_back(A->getSpellingListIndex());
     464           0 :     break;
     465             :   }
     466             :   case attr::Cleanup: {
     467             :     const auto *SA = cast<CleanupAttr>(A);
     468           0 :     Record.push_back(SA->isInherited());
     469           0 :     Record.push_back(A->isImplicit());
     470           0 :     Record.push_back(A->getSpellingListIndex());
     471           0 :     Record.AddDeclRef(SA->getFunctionDecl());
     472             :     break;
     473             :   }
     474             :   case attr::CodeSeg: {
     475             :     const auto *SA = cast<CodeSegAttr>(A);
     476           0 :     Record.push_back(SA->isInherited());
     477           0 :     Record.push_back(A->isImplicit());
     478           0 :     Record.push_back(A->getSpellingListIndex());
     479           0 :     Record.AddString(SA->getName());
     480           0 :     break;
     481             :   }
     482             :   case attr::Cold: {
     483             :     const auto *SA = cast<ColdAttr>(A);
     484           8 :     Record.push_back(SA->isInherited());
     485           8 :     Record.push_back(A->isImplicit());
     486           8 :     Record.push_back(A->getSpellingListIndex());
     487           8 :     break;
     488             :   }
     489             :   case attr::Common: {
     490             :     const auto *SA = cast<CommonAttr>(A);
     491           0 :     Record.push_back(SA->isInherited());
     492           0 :     Record.push_back(A->isImplicit());
     493           0 :     Record.push_back(A->getSpellingListIndex());
     494           0 :     break;
     495             :   }
     496             :   case attr::Const: {
     497             :     const auto *SA = cast<ConstAttr>(A);
     498       43909 :     Record.push_back(SA->isInherited());
     499       43909 :     Record.push_back(A->isImplicit());
     500       43909 :     Record.push_back(A->getSpellingListIndex());
     501       43909 :     break;
     502             :   }
     503             :   case attr::Constructor: {
     504             :     const auto *SA = cast<ConstructorAttr>(A);
     505           0 :     Record.push_back(SA->isInherited());
     506           0 :     Record.push_back(A->isImplicit());
     507           0 :     Record.push_back(A->getSpellingListIndex());
     508           0 :     Record.push_back(SA->getPriority());
     509           0 :     break;
     510             :   }
     511             :   case attr::Consumable: {
     512             :     const auto *SA = cast<ConsumableAttr>(A);
     513           0 :     Record.push_back(SA->isInherited());
     514           0 :     Record.push_back(A->isImplicit());
     515           0 :     Record.push_back(A->getSpellingListIndex());
     516           0 : Record.push_back(SA->getDefaultState());
     517           0 :     break;
     518             :   }
     519             :   case attr::ConsumableAutoCast: {
     520             :     const auto *SA = cast<ConsumableAutoCastAttr>(A);
     521           0 :     Record.push_back(SA->isInherited());
     522           0 :     Record.push_back(A->isImplicit());
     523           0 :     Record.push_back(A->getSpellingListIndex());
     524           0 :     break;
     525             :   }
     526             :   case attr::ConsumableSetOnRead: {
     527             :     const auto *SA = cast<ConsumableSetOnReadAttr>(A);
     528           0 :     Record.push_back(SA->isInherited());
     529           0 :     Record.push_back(A->isImplicit());
     530           0 :     Record.push_back(A->getSpellingListIndex());
     531           0 :     break;
     532             :   }
     533             :   case attr::Convergent: {
     534             :     const auto *SA = cast<ConvergentAttr>(A);
     535         849 :     Record.push_back(SA->isInherited());
     536         849 :     Record.push_back(A->isImplicit());
     537         849 :     Record.push_back(A->getSpellingListIndex());
     538         849 :     break;
     539             :   }
     540             :   case attr::DLLExport: {
     541             :     const auto *SA = cast<DLLExportAttr>(A);
     542          36 :     Record.push_back(SA->isInherited());
     543          36 :     Record.push_back(A->isImplicit());
     544          36 :     Record.push_back(A->getSpellingListIndex());
     545          36 :     break;
     546             :   }
     547             :   case attr::DLLImport: {
     548             :     const auto *SA = cast<DLLImportAttr>(A);
     549           0 :     Record.push_back(SA->isInherited());
     550           0 :     Record.push_back(A->isImplicit());
     551           0 :     Record.push_back(A->getSpellingListIndex());
     552           0 :     break;
     553             :   }
     554             :   case attr::Deprecated: {
     555             :     const auto *SA = cast<DeprecatedAttr>(A);
     556           7 :     Record.push_back(SA->isInherited());
     557           7 :     Record.push_back(A->isImplicit());
     558           7 :     Record.push_back(A->getSpellingListIndex());
     559          14 :     Record.AddString(SA->getMessage());
     560          14 :     Record.AddString(SA->getReplacement());
     561           7 :     break;
     562             :   }
     563             :   case attr::Destructor: {
     564             :     const auto *SA = cast<DestructorAttr>(A);
     565           0 :     Record.push_back(SA->isInherited());
     566           0 :     Record.push_back(A->isImplicit());
     567           0 :     Record.push_back(A->getSpellingListIndex());
     568           0 :     Record.push_back(SA->getPriority());
     569           0 :     break;
     570             :   }
     571             :   case attr::DiagnoseIf: {
     572             :     const auto *SA = cast<DiagnoseIfAttr>(A);
     573          19 :     Record.push_back(SA->isInherited());
     574          19 :     Record.push_back(A->isImplicit());
     575          19 :     Record.push_back(A->getSpellingListIndex());
     576          19 :     Record.AddStmt(SA->getCond());
     577          38 :     Record.AddString(SA->getMessage());
     578          19 : Record.push_back(SA->getDiagnosticType());
     579          19 :     Record.push_back(SA->getArgDependent());
     580          19 :     Record.AddDeclRef(SA->getParent());
     581             :     break;
     582             :   }
     583             :   case attr::DisableTailCalls: {
     584             :     const auto *SA = cast<DisableTailCallsAttr>(A);
     585           0 :     Record.push_back(SA->isInherited());
     586           0 :     Record.push_back(A->isImplicit());
     587           0 :     Record.push_back(A->getSpellingListIndex());
     588           0 :     break;
     589             :   }
     590             :   case attr::EmptyBases: {
     591             :     const auto *SA = cast<EmptyBasesAttr>(A);
     592           0 :     Record.push_back(SA->isInherited());
     593           0 :     Record.push_back(A->isImplicit());
     594           0 :     Record.push_back(A->getSpellingListIndex());
     595           0 :     break;
     596             :   }
     597             :   case attr::EnableIf: {
     598             :     const auto *SA = cast<EnableIfAttr>(A);
     599          18 :     Record.push_back(SA->isInherited());
     600          18 :     Record.push_back(A->isImplicit());
     601          18 :     Record.push_back(A->getSpellingListIndex());
     602          18 :     Record.AddStmt(SA->getCond());
     603          36 :     Record.AddString(SA->getMessage());
     604          18 :     break;
     605             :   }
     606             :   case attr::EnumExtensibility: {
     607             :     const auto *SA = cast<EnumExtensibilityAttr>(A);
     608           2 :     Record.push_back(SA->isInherited());
     609           2 :     Record.push_back(A->isImplicit());
     610           2 :     Record.push_back(A->getSpellingListIndex());
     611           2 : Record.push_back(SA->getExtensibility());
     612           2 :     break;
     613             :   }
     614             :   case attr::ExcludeFromExplicitInstantiation: {
     615             :     const auto *SA = cast<ExcludeFromExplicitInstantiationAttr>(A);
     616           0 :     Record.push_back(SA->isInherited());
     617           0 :     Record.push_back(A->isImplicit());
     618           0 :     Record.push_back(A->getSpellingListIndex());
     619           0 :     break;
     620             :   }
     621             :   case attr::ExclusiveTrylockFunction: {
     622             :     const auto *SA = cast<ExclusiveTrylockFunctionAttr>(A);
     623           1 :     Record.push_back(SA->isInherited());
     624           1 :     Record.push_back(A->isImplicit());
     625           1 :     Record.push_back(A->getSpellingListIndex());
     626           1 :     Record.AddStmt(SA->getSuccessValue());
     627           1 :     Record.push_back(SA->args_size());
     628           1 :     for (auto &Val : SA->args())
     629           0 :       Record.AddStmt(Val);
     630             :     break;
     631             :   }
     632             :   case attr::ExternalSourceSymbol: {
     633             :     const auto *SA = cast<ExternalSourceSymbolAttr>(A);
     634           0 :     Record.push_back(SA->isInherited());
     635           0 :     Record.push_back(A->isImplicit());
     636           0 :     Record.push_back(A->getSpellingListIndex());
     637           0 :     Record.AddString(SA->getLanguage());
     638           0 :     Record.AddString(SA->getDefinedIn());
     639           0 :     Record.push_back(SA->getGeneratedDeclaration());
     640           0 :     break;
     641             :   }
     642             :   case attr::FallThrough: {
     643           4 :     Record.push_back(A->isImplicit());
     644           4 :     Record.push_back(A->getSpellingListIndex());
     645           4 :     break;
     646             :   }
     647             :   case attr::FastCall: {
     648             :     const auto *SA = cast<FastCallAttr>(A);
     649           0 :     Record.push_back(SA->isInherited());
     650           0 :     Record.push_back(A->isImplicit());
     651           0 :     Record.push_back(A->getSpellingListIndex());
     652           0 :     break;
     653             :   }
     654             :   case attr::Final: {
     655             :     const auto *SA = cast<FinalAttr>(A);
     656           0 :     Record.push_back(SA->isInherited());
     657           0 :     Record.push_back(A->isImplicit());
     658           0 :     Record.push_back(A->getSpellingListIndex());
     659           0 :     break;
     660             :   }
     661             :   case attr::FlagEnum: {
     662             :     const auto *SA = cast<FlagEnumAttr>(A);
     663           2 :     Record.push_back(SA->isInherited());
     664           2 :     Record.push_back(A->isImplicit());
     665           2 :     Record.push_back(A->getSpellingListIndex());
     666           2 :     break;
     667             :   }
     668             :   case attr::Flatten: {
     669             :     const auto *SA = cast<FlattenAttr>(A);
     670           0 :     Record.push_back(SA->isInherited());
     671           0 :     Record.push_back(A->isImplicit());
     672           0 :     Record.push_back(A->getSpellingListIndex());
     673           0 :     break;
     674             :   }
     675             :   case attr::Format: {
     676             :     const auto *SA = cast<FormatAttr>(A);
     677          70 :     Record.push_back(SA->isInherited());
     678          70 :     Record.push_back(A->isImplicit());
     679          70 :     Record.push_back(A->getSpellingListIndex());
     680          70 :     Record.AddIdentifierRef(SA->getType());
     681          70 :     Record.push_back(SA->getFormatIdx());
     682          70 :     Record.push_back(SA->getFirstArg());
     683          70 :     break;
     684             :   }
     685             :   case attr::FormatArg: {
     686             :     const auto *SA = cast<FormatArgAttr>(A);
     687           2 :     Record.push_back(SA->isInherited());
     688           2 :     Record.push_back(A->isImplicit());
     689           2 :     Record.push_back(A->getSpellingListIndex());
     690           2 :     Record.push_back(SA->getFormatIdx().serialize());
     691           2 :     break;
     692             :   }
     693             :   case attr::GNUInline: {
     694             :     const auto *SA = cast<GNUInlineAttr>(A);
     695           0 :     Record.push_back(SA->isInherited());
     696           0 :     Record.push_back(A->isImplicit());
     697           0 :     Record.push_back(A->getSpellingListIndex());
     698           0 :     break;
     699             :   }
     700             :   case attr::GuardedBy: {
     701             :     const auto *SA = cast<GuardedByAttr>(A);
     702           4 :     Record.push_back(SA->isInherited());
     703           4 :     Record.push_back(A->isImplicit());
     704           4 :     Record.push_back(A->getSpellingListIndex());
     705           4 :     Record.AddStmt(SA->getArg());
     706           4 :     break;
     707             :   }
     708             :   case attr::GuardedVar: {
     709             :     const auto *SA = cast<GuardedVarAttr>(A);
     710           1 :     Record.push_back(SA->isInherited());
     711           1 :     Record.push_back(A->isImplicit());
     712           1 :     Record.push_back(A->getSpellingListIndex());
     713           1 :     break;
     714             :   }
     715             :   case attr::Hot: {
     716             :     const auto *SA = cast<HotAttr>(A);
     717           0 :     Record.push_back(SA->isInherited());
     718           0 :     Record.push_back(A->isImplicit());
     719           0 :     Record.push_back(A->getSpellingListIndex());
     720           0 :     break;
     721             :   }
     722             :   case attr::IBAction: {
     723             :     const auto *SA = cast<IBActionAttr>(A);
     724           2 :     Record.push_back(SA->isInherited());
     725           2 :     Record.push_back(A->isImplicit());
     726           2 :     Record.push_back(A->getSpellingListIndex());
     727           2 :     break;
     728             :   }
     729             :   case attr::IBOutlet: {
     730             :     const auto *SA = cast<IBOutletAttr>(A);
     731           3 :     Record.push_back(SA->isInherited());
     732           3 :     Record.push_back(A->isImplicit());
     733           3 :     Record.push_back(A->getSpellingListIndex());
     734           3 :     break;
     735             :   }
     736             :   case attr::IBOutletCollection: {
     737             :     const auto *SA = cast<IBOutletCollectionAttr>(A);
     738           1 :     Record.push_back(SA->isInherited());
     739           1 :     Record.push_back(A->isImplicit());
     740           1 :     Record.push_back(A->getSpellingListIndex());
     741           1 :     Record.AddTypeSourceInfo(SA->getInterfaceLoc());
     742           1 :     break;
     743             :   }
     744             :   case attr::IFunc: {
     745             :     const auto *SA = cast<IFuncAttr>(A);
     746           0 :     Record.push_back(A->isImplicit());
     747           0 :     Record.push_back(A->getSpellingListIndex());
     748           0 :     Record.AddString(SA->getResolver());
     749           0 :     break;
     750             :   }
     751             :   case attr::InitPriority: {
     752             :     const auto *SA = cast<InitPriorityAttr>(A);
     753         216 :     Record.push_back(SA->isInherited());
     754         216 :     Record.push_back(A->isImplicit());
     755         216 :     Record.push_back(A->getSpellingListIndex());
     756         216 :     Record.push_back(SA->getPriority());
     757         216 :     break;
     758             :   }
     759             :   case attr::InitSeg: {
     760             :     const auto *SA = cast<InitSegAttr>(A);
     761           0 :     Record.push_back(A->isImplicit());
     762           0 :     Record.push_back(A->getSpellingListIndex());
     763           0 :     Record.AddString(SA->getSection());
     764           0 :     break;
     765             :   }
     766             :   case attr::IntelOclBicc: {
     767             :     const auto *SA = cast<IntelOclBiccAttr>(A);
     768           0 :     Record.push_back(SA->isInherited());
     769           0 :     Record.push_back(A->isImplicit());
     770           0 :     Record.push_back(A->getSpellingListIndex());
     771           0 :     break;
     772             :   }
     773             :   case attr::InternalLinkage: {
     774             :     const auto *SA = cast<InternalLinkageAttr>(A);
     775           0 :     Record.push_back(SA->isInherited());
     776           0 :     Record.push_back(A->isImplicit());
     777           0 :     Record.push_back(A->getSpellingListIndex());
     778           0 :     break;
     779             :   }
     780             :   case attr::LTOVisibilityPublic: {
     781             :     const auto *SA = cast<LTOVisibilityPublicAttr>(A);
     782           0 :     Record.push_back(SA->isInherited());
     783           0 :     Record.push_back(A->isImplicit());
     784           0 :     Record.push_back(A->getSpellingListIndex());
     785           0 :     break;
     786             :   }
     787             :   case attr::LayoutVersion: {
     788             :     const auto *SA = cast<LayoutVersionAttr>(A);
     789           0 :     Record.push_back(SA->isInherited());
     790           0 :     Record.push_back(A->isImplicit());
     791           0 :     Record.push_back(A->getSpellingListIndex());
     792           0 :     Record.push_back(SA->getVersion());
     793           0 :     break;
     794             :   }
     795             :   case attr::LifetimeBound: {
     796             :     const auto *SA = cast<LifetimeBoundAttr>(A);
     797           0 :     Record.push_back(SA->isInherited());
     798           0 :     Record.push_back(A->isImplicit());
     799           0 :     Record.push_back(A->getSpellingListIndex());
     800           0 :     break;
     801             :   }
     802             :   case attr::LockReturned: {
     803             :     const auto *SA = cast<LockReturnedAttr>(A);
     804           0 :     Record.push_back(SA->isInherited());
     805           0 :     Record.push_back(A->isImplicit());
     806           0 :     Record.push_back(A->getSpellingListIndex());
     807           0 :     Record.AddStmt(SA->getArg());
     808           0 :     break;
     809             :   }
     810             :   case attr::LocksExcluded: {
     811             :     const auto *SA = cast<LocksExcludedAttr>(A);
     812           0 :     Record.push_back(SA->isInherited());
     813           0 :     Record.push_back(A->isImplicit());
     814           0 :     Record.push_back(A->getSpellingListIndex());
     815           0 :     Record.push_back(SA->args_size());
     816           0 :     for (auto &Val : SA->args())
     817           0 :       Record.AddStmt(Val);
     818             :     break;
     819             :   }
     820             :   case attr::LoopHint: {
     821             :     const auto *SA = cast<LoopHintAttr>(A);
     822          16 :     Record.push_back(A->isImplicit());
     823          16 :     Record.push_back(A->getSpellingListIndex());
     824          16 : Record.push_back(SA->getOption());
     825          16 : Record.push_back(SA->getState());
     826          16 :     Record.AddStmt(SA->getValue());
     827          16 :     break;
     828             :   }
     829             :   case attr::MSABI: {
     830             :     const auto *SA = cast<MSABIAttr>(A);
     831           1 :     Record.push_back(SA->isInherited());
     832           1 :     Record.push_back(A->isImplicit());
     833           1 :     Record.push_back(A->getSpellingListIndex());
     834           1 :     break;
     835             :   }
     836             :   case attr::MSInheritance: {
     837             :     const auto *SA = cast<MSInheritanceAttr>(A);
     838           2 :     Record.push_back(SA->isInherited());
     839           2 :     Record.push_back(A->isImplicit());
     840           2 :     Record.push_back(A->getSpellingListIndex());
     841           2 :     Record.push_back(SA->getBestCase());
     842           2 :     break;
     843             :   }
     844             :   case attr::MSNoVTable: {
     845             :     const auto *SA = cast<MSNoVTableAttr>(A);
     846           0 :     Record.push_back(SA->isInherited());
     847           0 :     Record.push_back(A->isImplicit());
     848           0 :     Record.push_back(A->getSpellingListIndex());
     849           0 :     break;
     850             :   }
     851             :   case attr::MSP430Interrupt: {
     852             :     const auto *SA = cast<MSP430InterruptAttr>(A);
     853           0 :     Record.push_back(SA->isInherited());
     854           0 :     Record.push_back(A->isImplicit());
     855           0 :     Record.push_back(A->getSpellingListIndex());
     856           0 :     Record.push_back(SA->getNumber());
     857           0 :     break;
     858             :   }
     859             :   case attr::MSStruct: {
     860             :     const auto *SA = cast<MSStructAttr>(A);
     861           1 :     Record.push_back(SA->isInherited());
     862           1 :     Record.push_back(A->isImplicit());
     863           1 :     Record.push_back(A->getSpellingListIndex());
     864           1 :     break;
     865             :   }
     866             :   case attr::MSVtorDisp: {
     867             :     const auto *SA = cast<MSVtorDispAttr>(A);
     868           0 :     Record.push_back(SA->isInherited());
     869           0 :     Record.push_back(A->isImplicit());
     870           0 :     Record.push_back(A->getSpellingListIndex());
     871           0 :     Record.push_back(SA->getVdm());
     872           0 :     break;
     873             :   }
     874             :   case attr::MaxFieldAlignment: {
     875             :     const auto *SA = cast<MaxFieldAlignmentAttr>(A);
     876           0 :     Record.push_back(SA->isInherited());
     877           0 :     Record.push_back(A->isImplicit());
     878           0 :     Record.push_back(A->getSpellingListIndex());
     879           0 :     Record.push_back(SA->getAlignment());
     880           0 :     break;
     881             :   }
     882             :   case attr::MayAlias: {
     883             :     const auto *SA = cast<MayAliasAttr>(A);
     884         174 :     Record.push_back(SA->isInherited());
     885         174 :     Record.push_back(A->isImplicit());
     886         174 :     Record.push_back(A->getSpellingListIndex());
     887         174 :     break;
     888             :   }
     889             :   case attr::MicroMips: {
     890             :     const auto *SA = cast<MicroMipsAttr>(A);
     891           0 :     Record.push_back(SA->isInherited());
     892           0 :     Record.push_back(A->isImplicit());
     893           0 :     Record.push_back(A->getSpellingListIndex());
     894           0 :     break;
     895             :   }
     896             :   case attr::MinSize: {
     897             :     const auto *SA = cast<MinSizeAttr>(A);
     898           0 :     Record.push_back(SA->isInherited());
     899           0 :     Record.push_back(A->isImplicit());
     900           0 :     Record.push_back(A->getSpellingListIndex());
     901           0 :     break;
     902             :   }
     903             :   case attr::MinVectorWidth: {
     904             :     const auto *SA = cast<MinVectorWidthAttr>(A);
     905       14772 :     Record.push_back(SA->isInherited());
     906       14772 :     Record.push_back(A->isImplicit());
     907       14772 :     Record.push_back(A->getSpellingListIndex());
     908       14772 :     Record.push_back(SA->getVectorWidth());
     909       14772 :     break;
     910             :   }
     911             :   case attr::Mips16: {
     912             :     const auto *SA = cast<Mips16Attr>(A);
     913           0 :     Record.push_back(SA->isInherited());
     914           0 :     Record.push_back(A->isImplicit());
     915           0 :     Record.push_back(A->getSpellingListIndex());
     916           0 :     break;
     917             :   }
     918             :   case attr::MipsInterrupt: {
     919             :     const auto *SA = cast<MipsInterruptAttr>(A);
     920           0 :     Record.push_back(SA->isInherited());
     921           0 :     Record.push_back(A->isImplicit());
     922           0 :     Record.push_back(A->getSpellingListIndex());
     923           0 : Record.push_back(SA->getInterrupt());
     924           0 :     break;
     925             :   }
     926             :   case attr::MipsLongCall: {
     927             :     const auto *SA = cast<MipsLongCallAttr>(A);
     928           0 :     Record.push_back(SA->isInherited());
     929           0 :     Record.push_back(A->isImplicit());
     930           0 :     Record.push_back(A->getSpellingListIndex());
     931           0 :     break;
     932             :   }
     933             :   case attr::MipsShortCall: {
     934             :     const auto *SA = cast<MipsShortCallAttr>(A);
     935           0 :     Record.push_back(SA->isInherited());
     936           0 :     Record.push_back(A->isImplicit());
     937           0 :     Record.push_back(A->getSpellingListIndex());
     938           0 :     break;
     939             :   }
     940             :   case attr::Mode: {
     941             :     const auto *SA = cast<ModeAttr>(A);
     942           5 :     Record.push_back(A->isImplicit());
     943           5 :     Record.push_back(A->getSpellingListIndex());
     944           5 :     Record.AddIdentifierRef(SA->getMode());
     945             :     break;
     946             :   }
     947             :   case attr::NSConsumed: {
     948             :     const auto *SA = cast<NSConsumedAttr>(A);
     949           0 :     Record.push_back(SA->isInherited());
     950           0 :     Record.push_back(A->isImplicit());
     951           0 :     Record.push_back(A->getSpellingListIndex());
     952           0 :     break;
     953             :   }
     954             :   case attr::NSConsumesSelf: {
     955             :     const auto *SA = cast<NSConsumesSelfAttr>(A);
     956           0 :     Record.push_back(SA->isInherited());
     957           0 :     Record.push_back(A->isImplicit());
     958           0 :     Record.push_back(A->getSpellingListIndex());
     959           0 :     break;
     960             :   }
     961             :   case attr::NSReturnsAutoreleased: {
     962             :     const auto *SA = cast<NSReturnsAutoreleasedAttr>(A);
     963           0 :     Record.push_back(SA->isInherited());
     964           0 :     Record.push_back(A->isImplicit());
     965           0 :     Record.push_back(A->getSpellingListIndex());
     966           0 :     break;
     967             :   }
     968             :   case attr::NSReturnsNotRetained: {
     969             :     const auto *SA = cast<NSReturnsNotRetainedAttr>(A);
     970           3 :     Record.push_back(SA->isInherited());
     971           3 :     Record.push_back(A->isImplicit());
     972           3 :     Record.push_back(A->getSpellingListIndex());
     973           3 :     break;
     974             :   }
     975             :   case attr::NSReturnsRetained: {
     976             :     const auto *SA = cast<NSReturnsRetainedAttr>(A);
     977          20 :     Record.push_back(SA->isInherited());
     978          20 :     Record.push_back(A->isImplicit());
     979          20 :     Record.push_back(A->getSpellingListIndex());
     980          20 :     break;
     981             :   }
     982             :   case attr::Naked: {
     983             :     const auto *SA = cast<NakedAttr>(A);
     984           0 :     Record.push_back(SA->isInherited());
     985           0 :     Record.push_back(A->isImplicit());
     986           0 :     Record.push_back(A->getSpellingListIndex());
     987           0 :     break;
     988             :   }
     989             :   case attr::NoAlias: {
     990             :     const auto *SA = cast<NoAliasAttr>(A);
     991           0 :     Record.push_back(SA->isInherited());
     992           0 :     Record.push_back(A->isImplicit());
     993           0 :     Record.push_back(A->getSpellingListIndex());
     994           0 :     break;
     995             :   }
     996             :   case attr::NoCommon: {
     997             :     const auto *SA = cast<NoCommonAttr>(A);
     998           0 :     Record.push_back(SA->isInherited());
     999           0 :     Record.push_back(A->isImplicit());
    1000           0 :     Record.push_back(A->getSpellingListIndex());
    1001           0 :     break;
    1002             :   }
    1003             :   case attr::NoDebug: {
    1004             :     const auto *SA = cast<NoDebugAttr>(A);
    1005       19245 :     Record.push_back(SA->isInherited());
    1006       19245 :     Record.push_back(A->isImplicit());
    1007       19245 :     Record.push_back(A->getSpellingListIndex());
    1008       19245 :     break;
    1009             :   }
    1010             :   case attr::NoDestroy: {
    1011             :     const auto *SA = cast<NoDestroyAttr>(A);
    1012           0 :     Record.push_back(SA->isInherited());
    1013           0 :     Record.push_back(A->isImplicit());
    1014           0 :     Record.push_back(A->getSpellingListIndex());
    1015           0 :     break;
    1016             :   }
    1017             :   case attr::NoDuplicate: {
    1018             :     const auto *SA = cast<NoDuplicateAttr>(A);
    1019           0 :     Record.push_back(SA->isInherited());
    1020           0 :     Record.push_back(A->isImplicit());
    1021           0 :     Record.push_back(A->getSpellingListIndex());
    1022           0 :     break;
    1023             :   }
    1024             :   case attr::NoEscape: {
    1025           1 :     Record.push_back(A->isImplicit());
    1026           1 :     Record.push_back(A->getSpellingListIndex());
    1027           1 :     break;
    1028             :   }
    1029             :   case attr::NoInline: {
    1030             :     const auto *SA = cast<NoInlineAttr>(A);
    1031           0 :     Record.push_back(SA->isInherited());
    1032           0 :     Record.push_back(A->isImplicit());
    1033           0 :     Record.push_back(A->getSpellingListIndex());
    1034           0 :     break;
    1035             :   }
    1036             :   case attr::NoInstrumentFunction: {
    1037             :     const auto *SA = cast<NoInstrumentFunctionAttr>(A);
    1038           0 :     Record.push_back(SA->isInherited());
    1039           0 :     Record.push_back(A->isImplicit());
    1040           0 :     Record.push_back(A->getSpellingListIndex());
    1041           0 :     break;
    1042             :   }
    1043             :   case attr::NoMicroMips: {
    1044             :     const auto *SA = cast<NoMicroMipsAttr>(A);
    1045           0 :     Record.push_back(SA->isInherited());
    1046           0 :     Record.push_back(A->isImplicit());
    1047           0 :     Record.push_back(A->getSpellingListIndex());
    1048           0 :     break;
    1049             :   }
    1050             :   case attr::NoMips16: {
    1051             :     const auto *SA = cast<NoMips16Attr>(A);
    1052           0 :     Record.push_back(SA->isInherited());
    1053           0 :     Record.push_back(A->isImplicit());
    1054           0 :     Record.push_back(A->getSpellingListIndex());
    1055           0 :     break;
    1056             :   }
    1057             :   case attr::NoReturn: {
    1058             :     const auto *SA = cast<NoReturnAttr>(A);
    1059           0 :     Record.push_back(SA->isInherited());
    1060           0 :     Record.push_back(A->isImplicit());
    1061           0 :     Record.push_back(A->getSpellingListIndex());
    1062           0 :     break;
    1063             :   }
    1064             :   case attr::NoSanitize: {
    1065             :     const auto *SA = cast<NoSanitizeAttr>(A);
    1066          51 :     Record.push_back(SA->isInherited());
    1067          51 :     Record.push_back(A->isImplicit());
    1068          51 :     Record.push_back(A->getSpellingListIndex());
    1069          51 :     Record.push_back(SA->sanitizers_size());
    1070         103 :     for (auto &Val : SA->sanitizers())
    1071          52 :       Record.AddString(Val);
    1072             :     break;
    1073             :   }
    1074             :   case attr::NoSplitStack: {
    1075             :     const auto *SA = cast<NoSplitStackAttr>(A);
    1076           0 :     Record.push_back(SA->isInherited());
    1077           0 :     Record.push_back(A->isImplicit());
    1078           0 :     Record.push_back(A->getSpellingListIndex());
    1079           0 :     break;
    1080             :   }
    1081             :   case attr::NoStackProtector: {
    1082             :     const auto *SA = cast<NoStackProtectorAttr>(A);
    1083           0 :     Record.push_back(SA->isInherited());
    1084           0 :     Record.push_back(A->isImplicit());
    1085           0 :     Record.push_back(A->getSpellingListIndex());
    1086           0 :     break;
    1087             :   }
    1088             :   case attr::NoThreadSafetyAnalysis: {
    1089             :     const auto *SA = cast<NoThreadSafetyAnalysisAttr>(A);
    1090           0 :     Record.push_back(SA->isInherited());
    1091           0 :     Record.push_back(A->isImplicit());
    1092           0 :     Record.push_back(A->getSpellingListIndex());
    1093           0 :     break;
    1094             :   }
    1095             :   case attr::NoThrow: {
    1096             :     const auto *SA = cast<NoThrowAttr>(A);
    1097        6274 :     Record.push_back(SA->isInherited());
    1098        6274 :     Record.push_back(A->isImplicit());
    1099        6274 :     Record.push_back(A->getSpellingListIndex());
    1100        6274 :     break;
    1101             :   }
    1102             :   case attr::NonNull: {
    1103             :     const auto *SA = cast<NonNullAttr>(A);
    1104         292 :     Record.push_back(SA->isInherited());
    1105         292 :     Record.push_back(A->isImplicit());
    1106         292 :     Record.push_back(A->getSpellingListIndex());
    1107         292 :     Record.push_back(SA->args_size());
    1108         722 :     for (auto &Val : SA->args())
    1109         430 :       Record.push_back(Val.serialize());
    1110             :     break;
    1111             :   }
    1112             :   case attr::NotTailCalled: {
    1113             :     const auto *SA = cast<NotTailCalledAttr>(A);
    1114           1 :     Record.push_back(SA->isInherited());
    1115           1 :     Record.push_back(A->isImplicit());
    1116           1 :     Record.push_back(A->getSpellingListIndex());
    1117           1 :     break;
    1118             :   }
    1119             :   case attr::OMPCaptureKind: {
    1120             :     const auto *SA = cast<OMPCaptureKindAttr>(A);
    1121       17236 :     Record.push_back(A->isImplicit());
    1122       17236 :     Record.push_back(A->getSpellingListIndex());
    1123       17236 :     Record.push_back(SA->getCaptureKind());
    1124       17236 :     break;
    1125             :   }
    1126             :   case attr::OMPCaptureNoInit: {
    1127             :     const auto *SA = cast<OMPCaptureNoInitAttr>(A);
    1128          18 :     Record.push_back(SA->isInherited());
    1129          18 :     Record.push_back(A->isImplicit());
    1130          18 :     Record.push_back(A->getSpellingListIndex());
    1131          18 :     break;
    1132             :   }
    1133             :   case attr::OMPDeclareSimdDecl: {
    1134             :     const auto *SA = cast<OMPDeclareSimdDeclAttr>(A);
    1135         124 :     Record.push_back(A->isImplicit());
    1136         124 :     Record.push_back(A->getSpellingListIndex());
    1137         124 : Record.push_back(SA->getBranchState());
    1138         124 :     Record.AddStmt(SA->getSimdlen());
    1139         124 :     Record.push_back(SA->uniforms_size());
    1140         160 :     for (auto &Val : SA->uniforms())
    1141          36 :       Record.AddStmt(Val);
    1142         124 :     Record.push_back(SA->aligneds_size());
    1143         206 :     for (auto &Val : SA->aligneds())
    1144          82 :       Record.AddStmt(Val);
    1145         124 :     Record.push_back(SA->alignments_size());
    1146         206 :     for (auto &Val : SA->alignments())
    1147          82 :       Record.AddStmt(Val);
    1148         124 :     Record.push_back(SA->linears_size());
    1149         178 :     for (auto &Val : SA->linears())
    1150          54 :       Record.AddStmt(Val);
    1151         124 :     Record.push_back(SA->modifiers_size());
    1152         178 :     for (auto &Val : SA->modifiers())
    1153          54 :       Record.push_back(Val);
    1154         124 :     Record.push_back(SA->steps_size());
    1155         178 :     for (auto &Val : SA->steps())
    1156          54 :       Record.AddStmt(Val);
    1157             :     break;
    1158             :   }
    1159             :   case attr::OMPDeclareTargetDecl: {
    1160             :     const auto *SA = cast<OMPDeclareTargetDeclAttr>(A);
    1161         110 :     Record.push_back(SA->isInherited());
    1162         110 :     Record.push_back(A->isImplicit());
    1163         110 :     Record.push_back(A->getSpellingListIndex());
    1164         110 : Record.push_back(SA->getMapType());
    1165         110 :     break;
    1166             :   }
    1167             :   case attr::OMPReferencedVar: {
    1168             :     const auto *SA = cast<OMPReferencedVarAttr>(A);
    1169        8100 :     Record.push_back(A->isImplicit());
    1170        8100 :     Record.push_back(A->getSpellingListIndex());
    1171        8100 :     Record.AddStmt(SA->getRef());
    1172        8100 :     break;
    1173             :   }
    1174             :   case attr::OMPThreadPrivateDecl: {
    1175             :     const auto *SA = cast<OMPThreadPrivateDeclAttr>(A);
    1176         162 :     Record.push_back(SA->isInherited());
    1177         162 :     Record.push_back(A->isImplicit());
    1178         162 :     Record.push_back(A->getSpellingListIndex());
    1179         162 :     break;
    1180             :   }
    1181             :   case attr::ObjCBoxable: {
    1182           2 :     Record.push_back(A->isImplicit());
    1183           2 :     Record.push_back(A->getSpellingListIndex());
    1184           2 :     break;
    1185             :   }
    1186             :   case attr::ObjCBridge: {
    1187             :     const auto *SA = cast<ObjCBridgeAttr>(A);
    1188           0 :     Record.push_back(SA->isInherited());
    1189           0 :     Record.push_back(A->isImplicit());
    1190           0 :     Record.push_back(A->getSpellingListIndex());
    1191           0 :     Record.AddIdentifierRef(SA->getBridgedType());
    1192             :     break;
    1193             :   }
    1194             :   case attr::ObjCBridgeMutable: {
    1195             :     const auto *SA = cast<ObjCBridgeMutableAttr>(A);
    1196           0 :     Record.push_back(SA->isInherited());
    1197           0 :     Record.push_back(A->isImplicit());
    1198           0 :     Record.push_back(A->getSpellingListIndex());
    1199           0 :     Record.AddIdentifierRef(SA->getBridgedType());
    1200             :     break;
    1201             :   }
    1202             :   case attr::ObjCBridgeRelated: {
    1203             :     const auto *SA = cast<ObjCBridgeRelatedAttr>(A);
    1204           0 :     Record.push_back(SA->isInherited());
    1205           0 :     Record.push_back(A->isImplicit());
    1206           0 :     Record.push_back(A->getSpellingListIndex());
    1207           0 :     Record.AddIdentifierRef(SA->getRelatedClass());
    1208           0 :     Record.AddIdentifierRef(SA->getClassMethod());
    1209           0 :     Record.AddIdentifierRef(SA->getInstanceMethod());
    1210             :     break;
    1211             :   }
    1212             :   case attr::ObjCDesignatedInitializer: {
    1213           1 :     Record.push_back(A->isImplicit());
    1214           1 :     Record.push_back(A->getSpellingListIndex());
    1215           1 :     break;
    1216             :   }
    1217             :   case attr::ObjCException: {
    1218             :     const auto *SA = cast<ObjCExceptionAttr>(A);
    1219           0 :     Record.push_back(SA->isInherited());
    1220           0 :     Record.push_back(A->isImplicit());
    1221           0 :     Record.push_back(A->getSpellingListIndex());
    1222           0 :     break;
    1223             :   }
    1224             :   case attr::ObjCExplicitProtocolImpl: {
    1225             :     const auto *SA = cast<ObjCExplicitProtocolImplAttr>(A);
    1226           0 :     Record.push_back(SA->isInherited());
    1227           0 :     Record.push_back(A->isImplicit());
    1228           0 :     Record.push_back(A->getSpellingListIndex());
    1229           0 :     break;
    1230             :   }
    1231             :   case attr::ObjCGC: {
    1232             :     const auto *SA = cast<ObjCGCAttr>(A);
    1233           6 :     Record.push_back(A->isImplicit());
    1234           6 :     Record.push_back(A->getSpellingListIndex());
    1235           6 :     Record.AddIdentifierRef(SA->getKind());
    1236             :     break;
    1237             :   }
    1238             :   case attr::ObjCIndependentClass: {
    1239             :     const auto *SA = cast<ObjCIndependentClassAttr>(A);
    1240           0 :     Record.push_back(SA->isInherited());
    1241           0 :     Record.push_back(A->isImplicit());
    1242           0 :     Record.push_back(A->getSpellingListIndex());
    1243           0 :     break;
    1244             :   }
    1245             :   case attr::ObjCInertUnsafeUnretained: {
    1246           0 :     Record.push_back(A->isImplicit());
    1247           0 :     Record.push_back(A->getSpellingListIndex());
    1248           0 :     break;
    1249             :   }
    1250             :   case attr::ObjCKindOf: {
    1251           3 :     Record.push_back(A->isImplicit());
    1252           3 :     Record.push_back(A->getSpellingListIndex());
    1253           3 :     break;
    1254             :   }
    1255             :   case attr::ObjCMethodFamily: {
    1256             :     const auto *SA = cast<ObjCMethodFamilyAttr>(A);
    1257           0 :     Record.push_back(SA->isInherited());
    1258           0 :     Record.push_back(A->isImplicit());
    1259           0 :     Record.push_back(A->getSpellingListIndex());
    1260           0 : Record.push_back(SA->getFamily());
    1261           0 :     break;
    1262             :   }
    1263             :   case attr::ObjCNSObject: {
    1264             :     const auto *SA = cast<ObjCNSObjectAttr>(A);
    1265           0 :     Record.push_back(SA->isInherited());
    1266           0 :     Record.push_back(A->isImplicit());
    1267           0 :     Record.push_back(A->getSpellingListIndex());
    1268           0 :     break;
    1269             :   }
    1270             :   case attr::ObjCOwnership: {
    1271             :     const auto *SA = cast<ObjCOwnershipAttr>(A);
    1272           0 :     Record.push_back(SA->isInherited());
    1273           0 :     Record.push_back(A->isImplicit());
    1274           0 :     Record.push_back(A->getSpellingListIndex());
    1275           0 :     Record.AddIdentifierRef(SA->getKind());
    1276             :     break;
    1277             :   }
    1278             :   case attr::ObjCPreciseLifetime: {
    1279             :     const auto *SA = cast<ObjCPreciseLifetimeAttr>(A);
    1280           0 :     Record.push_back(SA->isInherited());
    1281           0 :     Record.push_back(A->isImplicit());
    1282           0 :     Record.push_back(A->getSpellingListIndex());
    1283           0 :     break;
    1284             :   }
    1285             :   case attr::ObjCRequiresPropertyDefs: {
    1286             :     const auto *SA = cast<ObjCRequiresPropertyDefsAttr>(A);
    1287           0 :     Record.push_back(SA->isInherited());
    1288           0 :     Record.push_back(A->isImplicit());
    1289           0 :     Record.push_back(A->getSpellingListIndex());
    1290           0 :     break;
    1291             :   }
    1292             :   case attr::ObjCRequiresSuper: {
    1293             :     const auto *SA = cast<ObjCRequiresSuperAttr>(A);
    1294           0 :     Record.push_back(SA->isInherited());
    1295           0 :     Record.push_back(A->isImplicit());
    1296           0 :     Record.push_back(A->getSpellingListIndex());
    1297           0 :     break;
    1298             :   }
    1299             :   case attr::ObjCReturnsInnerPointer: {
    1300             :     const auto *SA = cast<ObjCReturnsInnerPointerAttr>(A);
    1301           0 :     Record.push_back(SA->isInherited());
    1302           0 :     Record.push_back(A->isImplicit());
    1303           0 :     Record.push_back(A->getSpellingListIndex());
    1304           0 :     break;
    1305             :   }
    1306             :   case attr::ObjCRootClass: {
    1307             :     const auto *SA = cast<ObjCRootClassAttr>(A);
    1308           2 :     Record.push_back(SA->isInherited());
    1309           2 :     Record.push_back(A->isImplicit());
    1310           2 :     Record.push_back(A->getSpellingListIndex());
    1311           2 :     break;
    1312             :   }
    1313             :   case attr::ObjCRuntimeName: {
    1314             :     const auto *SA = cast<ObjCRuntimeNameAttr>(A);
    1315           0 :     Record.push_back(A->isImplicit());
    1316           0 :     Record.push_back(A->getSpellingListIndex());
    1317           0 :     Record.AddString(SA->getMetadataName());
    1318           0 :     break;
    1319             :   }
    1320             :   case attr::ObjCRuntimeVisible: {
    1321           0 :     Record.push_back(A->isImplicit());
    1322           0 :     Record.push_back(A->getSpellingListIndex());
    1323           0 :     break;
    1324             :   }
    1325             :   case attr::ObjCSubclassingRestricted: {
    1326             :     const auto *SA = cast<ObjCSubclassingRestrictedAttr>(A);
    1327           0 :     Record.push_back(SA->isInherited());
    1328           0 :     Record.push_back(A->isImplicit());
    1329           0 :     Record.push_back(A->getSpellingListIndex());
    1330           0 :     break;
    1331             :   }
    1332             :   case attr::OpenCLAccess: {
    1333        1393 :     Record.push_back(A->isImplicit());
    1334        1393 :     Record.push_back(A->getSpellingListIndex());
    1335        1393 :     break;
    1336             :   }
    1337             :   case attr::OpenCLConstantAddressSpace: {
    1338           0 :     Record.push_back(A->isImplicit());
    1339           0 :     Record.push_back(A->getSpellingListIndex());
    1340           0 :     break;
    1341             :   }
    1342             :   case attr::OpenCLGenericAddressSpace: {
    1343           0 :     Record.push_back(A->isImplicit());
    1344           0 :     Record.push_back(A->getSpellingListIndex());
    1345           0 :     break;
    1346             :   }
    1347             :   case attr::OpenCLGlobalAddressSpace: {
    1348           0 :     Record.push_back(A->isImplicit());
    1349           0 :     Record.push_back(A->getSpellingListIndex());
    1350           0 :     break;
    1351             :   }
    1352             :   case attr::OpenCLIntelReqdSubGroupSize: {
    1353             :     const auto *SA = cast<OpenCLIntelReqdSubGroupSizeAttr>(A);
    1354           0 :     Record.push_back(SA->isInherited());
    1355           0 :     Record.push_back(A->isImplicit());
    1356           0 :     Record.push_back(A->getSpellingListIndex());
    1357           0 :     Record.push_back(SA->getSubGroupSize());
    1358           0 :     break;
    1359             :   }
    1360             :   case attr::OpenCLKernel: {
    1361             :     const auto *SA = cast<OpenCLKernelAttr>(A);
    1362           0 :     Record.push_back(SA->isInherited());
    1363           0 :     Record.push_back(A->isImplicit());
    1364           0 :     Record.push_back(A->getSpellingListIndex());
    1365           0 :     break;
    1366             :   }
    1367             :   case attr::OpenCLLocalAddressSpace: {
    1368           0 :     Record.push_back(A->isImplicit());
    1369           0 :     Record.push_back(A->getSpellingListIndex());
    1370           0 :     break;
    1371             :   }
    1372             :   case attr::OpenCLPrivateAddressSpace: {
    1373           0 :     Record.push_back(A->isImplicit());
    1374           0 :     Record.push_back(A->getSpellingListIndex());
    1375           0 :     break;
    1376             :   }
    1377             :   case attr::OpenCLUnrollHint: {
    1378             :     const auto *SA = cast<OpenCLUnrollHintAttr>(A);
    1379           0 :     Record.push_back(SA->isInherited());
    1380           0 :     Record.push_back(A->isImplicit());
    1381           0 :     Record.push_back(A->getSpellingListIndex());
    1382           0 :     Record.push_back(SA->getUnrollHint());
    1383           0 :     break;
    1384             :   }
    1385             :   case attr::OptimizeNone: {
    1386             :     const auto *SA = cast<OptimizeNoneAttr>(A);
    1387           0 :     Record.push_back(SA->isInherited());
    1388           0 :     Record.push_back(A->isImplicit());
    1389           0 :     Record.push_back(A->getSpellingListIndex());
    1390           0 :     break;
    1391             :   }
    1392             :   case attr::Overloadable: {
    1393       47164 :     Record.push_back(A->isImplicit());
    1394       47164 :     Record.push_back(A->getSpellingListIndex());
    1395       47164 :     break;
    1396             :   }
    1397             :   case attr::Override: {
    1398             :     const auto *SA = cast<OverrideAttr>(A);
    1399           4 :     Record.push_back(SA->isInherited());
    1400           4 :     Record.push_back(A->isImplicit());
    1401           4 :     Record.push_back(A->getSpellingListIndex());
    1402           4 :     break;
    1403             :   }
    1404             :   case attr::Ownership: {
    1405             :     const auto *SA = cast<OwnershipAttr>(A);
    1406           6 :     Record.push_back(SA->isInherited());
    1407           6 :     Record.push_back(A->isImplicit());
    1408           6 :     Record.push_back(A->getSpellingListIndex());
    1409           6 :     Record.AddIdentifierRef(SA->getModule());
    1410           6 :     Record.push_back(SA->args_size());
    1411          16 :     for (auto &Val : SA->args())
    1412          10 :       Record.push_back(Val.serialize());
    1413             :     break;
    1414             :   }
    1415             :   case attr::Packed: {
    1416             :     const auto *SA = cast<PackedAttr>(A);
    1417         211 :     Record.push_back(SA->isInherited());
    1418         211 :     Record.push_back(A->isImplicit());
    1419         211 :     Record.push_back(A->getSpellingListIndex());
    1420         211 :     break;
    1421             :   }
    1422             :   case attr::ParamTypestate: {
    1423             :     const auto *SA = cast<ParamTypestateAttr>(A);
    1424           0 :     Record.push_back(SA->isInherited());
    1425           0 :     Record.push_back(A->isImplicit());
    1426           0 :     Record.push_back(A->getSpellingListIndex());
    1427           0 : Record.push_back(SA->getParamState());
    1428           0 :     break;
    1429             :   }
    1430             :   case attr::Pascal: {
    1431             :     const auto *SA = cast<PascalAttr>(A);
    1432           0 :     Record.push_back(SA->isInherited());
    1433           0 :     Record.push_back(A->isImplicit());
    1434           0 :     Record.push_back(A->getSpellingListIndex());
    1435           0 :     break;
    1436             :   }
    1437             :   case attr::PassObjectSize: {
    1438             :     const auto *SA = cast<PassObjectSizeAttr>(A);
    1439           2 :     Record.push_back(SA->isInherited());
    1440           2 :     Record.push_back(A->isImplicit());
    1441           2 :     Record.push_back(A->getSpellingListIndex());
    1442           2 :     Record.push_back(SA->getType());
    1443           2 :     break;
    1444             :   }
    1445             :   case attr::Pcs: {
    1446             :     const auto *SA = cast<PcsAttr>(A);
    1447           0 :     Record.push_back(SA->isInherited());
    1448           0 :     Record.push_back(A->isImplicit());
    1449           0 :     Record.push_back(A->getSpellingListIndex());
    1450           0 : Record.push_back(SA->getPCS());
    1451           0 :     break;
    1452             :   }
    1453             :   case attr::PragmaClangBSSSection: {
    1454             :     const auto *SA = cast<PragmaClangBSSSectionAttr>(A);
    1455           0 :     Record.push_back(SA->isInherited());
    1456           0 :     Record.push_back(A->isImplicit());
    1457           0 :     Record.push_back(A->getSpellingListIndex());
    1458           0 :     Record.AddString(SA->getName());
    1459           0 :     break;
    1460             :   }
    1461             :   case attr::PragmaClangDataSection: {
    1462             :     const auto *SA = cast<PragmaClangDataSectionAttr>(A);
    1463           0 :     Record.push_back(SA->isInherited());
    1464           0 :     Record.push_back(A->isImplicit());
    1465           0 :     Record.push_back(A->getSpellingListIndex());
    1466           0 :     Record.AddString(SA->getName());
    1467           0 :     break;
    1468             :   }
    1469             :   case attr::PragmaClangRodataSection: {
    1470             :     const auto *SA = cast<PragmaClangRodataSectionAttr>(A);
    1471           0 :     Record.push_back(SA->isInherited());
    1472           0 :     Record.push_back(A->isImplicit());
    1473           0 :     Record.push_back(A->getSpellingListIndex());
    1474           0 :     Record.AddString(SA->getName());
    1475           0 :     break;
    1476             :   }
    1477             :   case attr::PragmaClangTextSection: {
    1478             :     const auto *SA = cast<PragmaClangTextSectionAttr>(A);
    1479           0 :     Record.push_back(SA->isInherited());
    1480           0 :     Record.push_back(A->isImplicit());
    1481           0 :     Record.push_back(A->getSpellingListIndex());
    1482           0 :     Record.AddString(SA->getName());
    1483           0 :     break;
    1484             :   }
    1485             :   case attr::PreserveAll: {
    1486             :     const auto *SA = cast<PreserveAllAttr>(A);
    1487           0 :     Record.push_back(SA->isInherited());
    1488           0 :     Record.push_back(A->isImplicit());
    1489           0 :     Record.push_back(A->getSpellingListIndex());
    1490           0 :     break;
    1491             :   }
    1492             :   case attr::PreserveMost: {
    1493             :     const auto *SA = cast<PreserveMostAttr>(A);
    1494           0 :     Record.push_back(SA->isInherited());
    1495           0 :     Record.push_back(A->isImplicit());
    1496           0 :     Record.push_back(A->getSpellingListIndex());
    1497           0 :     break;
    1498             :   }
    1499             :   case attr::PtGuardedBy: {
    1500             :     const auto *SA = cast<PtGuardedByAttr>(A);
    1501           0 :     Record.push_back(SA->isInherited());
    1502           0 :     Record.push_back(A->isImplicit());
    1503           0 :     Record.push_back(A->getSpellingListIndex());
    1504           0 :     Record.AddStmt(SA->getArg());
    1505           0 :     break;
    1506             :   }
    1507             :   case attr::PtGuardedVar: {
    1508             :     const auto *SA = cast<PtGuardedVarAttr>(A);
    1509           0 :     Record.push_back(SA->isInherited());
    1510           0 :     Record.push_back(A->isImplicit());
    1511           0 :     Record.push_back(A->getSpellingListIndex());
    1512           0 :     break;
    1513             :   }
    1514             :   case attr::Ptr32: {
    1515           0 :     Record.push_back(A->isImplicit());
    1516           0 :     Record.push_back(A->getSpellingListIndex());
    1517           0 :     break;
    1518             :   }
    1519             :   case attr::Ptr64: {
    1520           0 :     Record.push_back(A->isImplicit());
    1521           0 :     Record.push_back(A->getSpellingListIndex());
    1522           0 :     break;
    1523             :   }
    1524             :   case attr::Pure: {
    1525             :     const auto *SA = cast<PureAttr>(A);
    1526         652 :     Record.push_back(SA->isInherited());
    1527         652 :     Record.push_back(A->isImplicit());
    1528         652 :     Record.push_back(A->getSpellingListIndex());
    1529         652 :     break;
    1530             :   }
    1531             :   case attr::RISCVInterrupt: {
    1532             :     const auto *SA = cast<RISCVInterruptAttr>(A);
    1533           0 :     Record.push_back(SA->isInherited());
    1534           0 :     Record.push_back(A->isImplicit());
    1535           0 :     Record.push_back(A->getSpellingListIndex());
    1536           0 : Record.push_back(SA->getInterrupt());
    1537           0 :     break;
    1538             :   }
    1539             :   case attr::RegCall: {
    1540             :     const auto *SA = cast<RegCallAttr>(A);
    1541           0 :     Record.push_back(SA->isInherited());
    1542           0 :     Record.push_back(A->isImplicit());
    1543           0 :     Record.push_back(A->getSpellingListIndex());
    1544           0 :     break;
    1545             :   }
    1546             :   case attr::Reinitializes: {
    1547             :     const auto *SA = cast<ReinitializesAttr>(A);
    1548           0 :     Record.push_back(SA->isInherited());
    1549           0 :     Record.push_back(A->isImplicit());
    1550           0 :     Record.push_back(A->getSpellingListIndex());
    1551           0 :     break;
    1552             :   }
    1553             :   case attr::ReleaseCapability: {
    1554             :     const auto *SA = cast<ReleaseCapabilityAttr>(A);
    1555           9 :     Record.push_back(SA->isInherited());
    1556           9 :     Record.push_back(A->isImplicit());
    1557           9 :     Record.push_back(A->getSpellingListIndex());
    1558           9 :     Record.push_back(SA->args_size());
    1559          12 :     for (auto &Val : SA->args())
    1560           3 :       Record.AddStmt(Val);
    1561             :     break;
    1562             :   }
    1563             :   case attr::RenderScriptKernel: {
    1564           0 :     Record.push_back(A->isImplicit());
    1565           0 :     Record.push_back(A->getSpellingListIndex());
    1566           0 :     break;
    1567             :   }
    1568             :   case attr::ReqdWorkGroupSize: {
    1569             :     const auto *SA = cast<ReqdWorkGroupSizeAttr>(A);
    1570           0 :     Record.push_back(SA->isInherited());
    1571           0 :     Record.push_back(A->isImplicit());
    1572           0 :     Record.push_back(A->getSpellingListIndex());
    1573           0 :     Record.push_back(SA->getXDim());
    1574           0 :     Record.push_back(SA->getYDim());
    1575           0 :     Record.push_back(SA->getZDim());
    1576           0 :     break;
    1577             :   }
    1578             :   case attr::RequireConstantInit: {
    1579             :     const auto *SA = cast<RequireConstantInitAttr>(A);
    1580           0 :     Record.push_back(SA->isInherited());
    1581           0 :     Record.push_back(A->isImplicit());
    1582           0 :     Record.push_back(A->getSpellingListIndex());
    1583           0 :     break;
    1584             :   }
    1585             :   case attr::RequiresCapability: {
    1586             :     const auto *SA = cast<RequiresCapabilityAttr>(A);
    1587           0 :     Record.push_back(SA->isInherited());
    1588           0 :     Record.push_back(A->isImplicit());
    1589           0 :     Record.push_back(A->getSpellingListIndex());
    1590           0 :     Record.push_back(SA->args_size());
    1591           0 :     for (auto &Val : SA->args())
    1592           0 :       Record.AddStmt(Val);
    1593             :     break;
    1594             :   }
    1595             :   case attr::Restrict: {
    1596             :     const auto *SA = cast<RestrictAttr>(A);
    1597          15 :     Record.push_back(SA->isInherited());
    1598          15 :     Record.push_back(A->isImplicit());
    1599          15 :     Record.push_back(A->getSpellingListIndex());
    1600          15 :     break;
    1601             :   }
    1602             :   case attr::ReturnTypestate: {
    1603             :     const auto *SA = cast<ReturnTypestateAttr>(A);
    1604           0 :     Record.push_back(SA->isInherited());
    1605           0 :     Record.push_back(A->isImplicit());
    1606           0 :     Record.push_back(A->getSpellingListIndex());
    1607           0 : Record.push_back(SA->getState());
    1608           0 :     break;
    1609             :   }
    1610             :   case attr::ReturnsNonNull: {
    1611             :     const auto *SA = cast<ReturnsNonNullAttr>(A);
    1612           0 :     Record.push_back(SA->isInherited());
    1613           0 :     Record.push_back(A->isImplicit());
    1614           0 :     Record.push_back(A->getSpellingListIndex());
    1615           0 :     break;
    1616             :   }
    1617             :   case attr::ReturnsTwice: {
    1618             :     const auto *SA = cast<ReturnsTwiceAttr>(A);
    1619           4 :     Record.push_back(SA->isInherited());
    1620           4 :     Record.push_back(A->isImplicit());
    1621           4 :     Record.push_back(A->getSpellingListIndex());
    1622           4 :     break;
    1623             :   }
    1624             :   case attr::SPtr: {
    1625           0 :     Record.push_back(A->isImplicit());
    1626           0 :     Record.push_back(A->getSpellingListIndex());
    1627           0 :     break;
    1628             :   }
    1629             :   case attr::ScopedLockable: {
    1630             :     const auto *SA = cast<ScopedLockableAttr>(A);
    1631           3 :     Record.push_back(SA->isInherited());
    1632           3 :     Record.push_back(A->isImplicit());
    1633           3 :     Record.push_back(A->getSpellingListIndex());
    1634           3 :     break;
    1635             :   }
    1636             :   case attr::Section: {
    1637             :     const auto *SA = cast<SectionAttr>(A);
    1638           0 :     Record.push_back(SA->isInherited());
    1639           0 :     Record.push_back(A->isImplicit());
    1640           0 :     Record.push_back(A->getSpellingListIndex());
    1641           0 :     Record.AddString(SA->getName());
    1642           0 :     break;
    1643             :   }
    1644             :   case attr::SelectAny: {
    1645             :     const auto *SA = cast<SelectAnyAttr>(A);
    1646           0 :     Record.push_back(SA->isInherited());
    1647           0 :     Record.push_back(A->isImplicit());
    1648           0 :     Record.push_back(A->getSpellingListIndex());
    1649           0 :     break;
    1650             :   }
    1651             :   case attr::Sentinel: {
    1652             :     const auto *SA = cast<SentinelAttr>(A);
    1653           0 :     Record.push_back(SA->isInherited());
    1654           0 :     Record.push_back(A->isImplicit());
    1655           0 :     Record.push_back(A->getSpellingListIndex());
    1656           0 :     Record.push_back(SA->getSentinel());
    1657           0 :     Record.push_back(SA->getNullPos());
    1658           0 :     break;
    1659             :   }
    1660             :   case attr::SetTypestate: {
    1661             :     const auto *SA = cast<SetTypestateAttr>(A);
    1662           0 :     Record.push_back(SA->isInherited());
    1663           0 :     Record.push_back(A->isImplicit());
    1664           0 :     Record.push_back(A->getSpellingListIndex());
    1665           0 : Record.push_back(SA->getNewState());
    1666           0 :     break;
    1667             :   }
    1668             :   case attr::SharedTrylockFunction: {
    1669             :     const auto *SA = cast<SharedTrylockFunctionAttr>(A);
    1670           1 :     Record.push_back(SA->isInherited());
    1671           1 :     Record.push_back(A->isImplicit());
    1672           1 :     Record.push_back(A->getSpellingListIndex());
    1673           1 :     Record.AddStmt(SA->getSuccessValue());
    1674           1 :     Record.push_back(SA->args_size());
    1675           1 :     for (auto &Val : SA->args())
    1676           0 :       Record.AddStmt(Val);
    1677             :     break;
    1678             :   }
    1679             :   case attr::StdCall: {
    1680             :     const auto *SA = cast<StdCallAttr>(A);
    1681           0 :     Record.push_back(SA->isInherited());
    1682           0 :     Record.push_back(A->isImplicit());
    1683           0 :     Record.push_back(A->getSpellingListIndex());
    1684           0 :     break;
    1685             :   }
    1686             :   case attr::Suppress: {
    1687             :     const auto *SA = cast<SuppressAttr>(A);
    1688           0 :     Record.push_back(A->isImplicit());
    1689           0 :     Record.push_back(A->getSpellingListIndex());
    1690           0 :     Record.push_back(SA->diagnosticIdentifiers_size());
    1691           0 :     for (auto &Val : SA->diagnosticIdentifiers())
    1692           0 :       Record.AddString(Val);
    1693             :     break;
    1694             :   }
    1695             :   case attr::SwiftCall: {
    1696             :     const auto *SA = cast<SwiftCallAttr>(A);
    1697           0 :     Record.push_back(SA->isInherited());
    1698           0 :     Record.push_back(A->isImplicit());
    1699           0 :     Record.push_back(A->getSpellingListIndex());
    1700           0 :     break;
    1701             :   }
    1702             :   case attr::SwiftContext: {
    1703             :     const auto *SA = cast<SwiftContextAttr>(A);
    1704           0 :     Record.push_back(SA->isInherited());
    1705           0 :     Record.push_back(A->isImplicit());
    1706           0 :     Record.push_back(A->getSpellingListIndex());
    1707           0 :     break;
    1708             :   }
    1709             :   case attr::SwiftErrorResult: {
    1710             :     const auto *SA = cast<SwiftErrorResultAttr>(A);
    1711           0 :     Record.push_back(SA->isInherited());
    1712           0 :     Record.push_back(A->isImplicit());
    1713           0 :     Record.push_back(A->getSpellingListIndex());
    1714           0 :     break;
    1715             :   }
    1716             :   case attr::SwiftIndirectResult: {
    1717             :     const auto *SA = cast<SwiftIndirectResultAttr>(A);
    1718           0 :     Record.push_back(SA->isInherited());
    1719           0 :     Record.push_back(A->isImplicit());
    1720           0 :     Record.push_back(A->getSpellingListIndex());
    1721           0 :     break;
    1722             :   }
    1723             :   case attr::SysVABI: {
    1724             :     const auto *SA = cast<SysVABIAttr>(A);
    1725           0 :     Record.push_back(SA->isInherited());
    1726           0 :     Record.push_back(A->isImplicit());
    1727           0 :     Record.push_back(A->getSpellingListIndex());
    1728           0 :     break;
    1729             :   }
    1730             :   case attr::TLSModel: {
    1731             :     const auto *SA = cast<TLSModelAttr>(A);
    1732           0 :     Record.push_back(SA->isInherited());
    1733           0 :     Record.push_back(A->isImplicit());
    1734           0 :     Record.push_back(A->getSpellingListIndex());
    1735           0 :     Record.AddString(SA->getModel());
    1736           0 :     break;
    1737             :   }
    1738             :   case attr::Target: {
    1739             :     const auto *SA = cast<TargetAttr>(A);
    1740       15569 :     Record.push_back(SA->isInherited());
    1741       15569 :     Record.push_back(A->isImplicit());
    1742       15569 :     Record.push_back(A->getSpellingListIndex());
    1743       31138 :     Record.AddString(SA->getFeaturesStr());
    1744       15569 :     break;
    1745             :   }
    1746             :   case attr::TestTypestate: {
    1747             :     const auto *SA = cast<TestTypestateAttr>(A);
    1748           0 :     Record.push_back(SA->isInherited());
    1749           0 :     Record.push_back(A->isImplicit());
    1750           0 :     Record.push_back(A->getSpellingListIndex());
    1751           0 : Record.push_back(SA->getTestState());
    1752           0 :     break;
    1753             :   }
    1754             :   case attr::ThisCall: {
    1755             :     const auto *SA = cast<ThisCallAttr>(A);
    1756           0 :     Record.push_back(SA->isInherited());
    1757           0 :     Record.push_back(A->isImplicit());
    1758           0 :     Record.push_back(A->getSpellingListIndex());
    1759           0 :     break;
    1760             :   }
    1761             :   case attr::Thread: {
    1762           0 :     Record.push_back(A->isImplicit());
    1763           0 :     Record.push_back(A->getSpellingListIndex());
    1764           0 :     break;
    1765             :   }
    1766             :   case attr::TransparentUnion: {
    1767             :     const auto *SA = cast<TransparentUnionAttr>(A);
    1768           0 :     Record.push_back(SA->isInherited());
    1769           0 :     Record.push_back(A->isImplicit());
    1770           0 :     Record.push_back(A->getSpellingListIndex());
    1771           0 :     break;
    1772             :   }
    1773             :   case attr::TrivialABI: {
    1774             :     const auto *SA = cast<TrivialABIAttr>(A);
    1775           0 :     Record.push_back(SA->isInherited());
    1776           0 :     Record.push_back(A->isImplicit());
    1777           0 :     Record.push_back(A->getSpellingListIndex());
    1778           0 :     break;
    1779             :   }
    1780             :   case attr::TryAcquireCapability: {
    1781             :     const auto *SA = cast<TryAcquireCapabilityAttr>(A);
    1782           0 :     Record.push_back(SA->isInherited());
    1783           0 :     Record.push_back(A->isImplicit());
    1784           0 :     Record.push_back(A->getSpellingListIndex());
    1785           0 :     Record.AddStmt(SA->getSuccessValue());
    1786           0 :     Record.push_back(SA->args_size());
    1787           0 :     for (auto &Val : SA->args())
    1788           0 :       Record.AddStmt(Val);
    1789             :     break;
    1790             :   }
    1791             :   case attr::TypeNonNull: {
    1792           0 :     Record.push_back(A->isImplicit());
    1793           0 :     Record.push_back(A->getSpellingListIndex());
    1794           0 :     break;
    1795             :   }
    1796             :   case attr::TypeNullUnspecified: {
    1797           0 :     Record.push_back(A->isImplicit());
    1798           0 :     Record.push_back(A->getSpellingListIndex());
    1799           0 :     break;
    1800             :   }
    1801             :   case attr::TypeNullable: {
    1802           2 :     Record.push_back(A->isImplicit());
    1803           2 :     Record.push_back(A->getSpellingListIndex());
    1804           2 :     break;
    1805             :   }
    1806             :   case attr::TypeTagForDatatype: {
    1807             :     const auto *SA = cast<TypeTagForDatatypeAttr>(A);
    1808           0 :     Record.push_back(SA->isInherited());
    1809           0 :     Record.push_back(A->isImplicit());
    1810           0 :     Record.push_back(A->getSpellingListIndex());
    1811           0 :     Record.AddIdentifierRef(SA->getArgumentKind());
    1812           0 :     Record.AddTypeSourceInfo(SA->getMatchingCTypeLoc());
    1813           0 :     Record.push_back(SA->getLayoutCompatible());
    1814           0 :     Record.push_back(SA->getMustBeNull());
    1815           0 :     break;
    1816             :   }
    1817             :   case attr::TypeVisibility: {
    1818             :     const auto *SA = cast<TypeVisibilityAttr>(A);
    1819         723 :     Record.push_back(SA->isInherited());
    1820         723 :     Record.push_back(A->isImplicit());
    1821         723 :     Record.push_back(A->getSpellingListIndex());
    1822         723 : Record.push_back(SA->getVisibility());
    1823         723 :     break;
    1824             :   }
    1825             :   case attr::UPtr: {
    1826           0 :     Record.push_back(A->isImplicit());
    1827           0 :     Record.push_back(A->getSpellingListIndex());
    1828           0 :     break;
    1829             :   }
    1830             :   case attr::Unavailable: {
    1831             :     const auto *SA = cast<UnavailableAttr>(A);
    1832           6 :     Record.push_back(SA->isInherited());
    1833           6 :     Record.push_back(A->isImplicit());
    1834           6 :     Record.push_back(A->getSpellingListIndex());
    1835          12 :     Record.AddString(SA->getMessage());
    1836           6 : Record.push_back(SA->getImplicitReason());
    1837           6 :     break;
    1838             :   }
    1839             :   case attr::Unused: {
    1840             :     const auto *SA = cast<UnusedAttr>(A);
    1841           0 :     Record.push_back(SA->isInherited());
    1842           0 :     Record.push_back(A->isImplicit());
    1843           0 :     Record.push_back(A->getSpellingListIndex());
    1844           0 :     break;
    1845             :   }
    1846             :   case attr::Used: {
    1847             :     const auto *SA = cast<UsedAttr>(A);
    1848           0 :     Record.push_back(SA->isInherited());
    1849           0 :     Record.push_back(A->isImplicit());
    1850           0 :     Record.push_back(A->getSpellingListIndex());
    1851           0 :     break;
    1852             :   }
    1853             :   case attr::Uuid: {
    1854             :     const auto *SA = cast<UuidAttr>(A);
    1855           0 :     Record.push_back(SA->isInherited());
    1856           0 :     Record.push_back(A->isImplicit());
    1857           0 :     Record.push_back(A->getSpellingListIndex());
    1858           0 :     Record.AddString(SA->getGuid());
    1859           0 :     break;
    1860             :   }
    1861             :   case attr::VecReturn: {
    1862             :     const auto *SA = cast<VecReturnAttr>(A);
    1863           0 :     Record.push_back(SA->isInherited());
    1864           0 :     Record.push_back(A->isImplicit());
    1865           0 :     Record.push_back(A->getSpellingListIndex());
    1866           0 :     break;
    1867             :   }
    1868             :   case attr::VecTypeHint: {
    1869             :     const auto *SA = cast<VecTypeHintAttr>(A);
    1870           0 :     Record.push_back(SA->isInherited());
    1871           0 :     Record.push_back(A->isImplicit());
    1872           0 :     Record.push_back(A->getSpellingListIndex());
    1873           0 :     Record.AddTypeSourceInfo(SA->getTypeHintLoc());
    1874           0 :     break;
    1875             :   }
    1876             :   case attr::VectorCall: {
    1877             :     const auto *SA = cast<VectorCallAttr>(A);
    1878           0 :     Record.push_back(SA->isInherited());
    1879           0 :     Record.push_back(A->isImplicit());
    1880           0 :     Record.push_back(A->getSpellingListIndex());
    1881           0 :     break;
    1882             :   }
    1883             :   case attr::Visibility: {
    1884             :     const auto *SA = cast<VisibilityAttr>(A);
    1885        7593 :     Record.push_back(SA->isInherited());
    1886        7593 :     Record.push_back(A->isImplicit());
    1887        7593 :     Record.push_back(A->getSpellingListIndex());
    1888        7593 : Record.push_back(SA->getVisibility());
    1889        7593 :     break;
    1890             :   }
    1891             :   case attr::WarnUnused: {
    1892             :     const auto *SA = cast<WarnUnusedAttr>(A);
    1893           0 :     Record.push_back(SA->isInherited());
    1894           0 :     Record.push_back(A->isImplicit());
    1895           0 :     Record.push_back(A->getSpellingListIndex());
    1896           0 :     break;
    1897             :   }
    1898             :   case attr::WarnUnusedResult: {
    1899             :     const auto *SA = cast<WarnUnusedResultAttr>(A);
    1900          94 :     Record.push_back(SA->isInherited());
    1901          94 :     Record.push_back(A->isImplicit());
    1902          94 :     Record.push_back(A->getSpellingListIndex());
    1903          94 :     break;
    1904             :   }
    1905             :   case attr::Weak: {
    1906             :     const auto *SA = cast<WeakAttr>(A);
    1907          66 :     Record.push_back(SA->isInherited());
    1908          66 :     Record.push_back(A->isImplicit());
    1909          66 :     Record.push_back(A->getSpellingListIndex());
    1910          66 :     break;
    1911             :   }
    1912             :   case attr::WeakImport: {
    1913             :     const auto *SA = cast<WeakImportAttr>(A);
    1914           0 :     Record.push_back(SA->isInherited());
    1915           0 :     Record.push_back(A->isImplicit());
    1916           0 :     Record.push_back(A->getSpellingListIndex());
    1917           0 :     break;
    1918             :   }
    1919             :   case attr::WeakRef: {
    1920             :     const auto *SA = cast<WeakRefAttr>(A);
    1921           2 :     Record.push_back(SA->isInherited());
    1922           2 :     Record.push_back(A->isImplicit());
    1923           2 :     Record.push_back(A->getSpellingListIndex());
    1924           4 :     Record.AddString(SA->getAliasee());
    1925           2 :     break;
    1926             :   }
    1927             :   case attr::WorkGroupSizeHint: {
    1928             :     const auto *SA = cast<WorkGroupSizeHintAttr>(A);
    1929           0 :     Record.push_back(SA->isInherited());
    1930           0 :     Record.push_back(A->isImplicit());
    1931           0 :     Record.push_back(A->getSpellingListIndex());
    1932           0 :     Record.push_back(SA->getXDim());
    1933           0 :     Record.push_back(SA->getYDim());
    1934           0 :     Record.push_back(SA->getZDim());
    1935           0 :     break;
    1936             :   }
    1937             :   case attr::X86ForceAlignArgPointer: {
    1938             :     const auto *SA = cast<X86ForceAlignArgPointerAttr>(A);
    1939           0 :     Record.push_back(SA->isInherited());
    1940           0 :     Record.push_back(A->isImplicit());
    1941           0 :     Record.push_back(A->getSpellingListIndex());
    1942           0 :     break;
    1943             :   }
    1944             :   case attr::XRayInstrument: {
    1945             :     const auto *SA = cast<XRayInstrumentAttr>(A);
    1946           0 :     Record.push_back(SA->isInherited());
    1947           0 :     Record.push_back(A->isImplicit());
    1948           0 :     Record.push_back(A->getSpellingListIndex());
    1949           0 :     break;
    1950             :   }
    1951             :   case attr::XRayLogArgs: {
    1952             :     const auto *SA = cast<XRayLogArgsAttr>(A);
    1953           2 :     Record.push_back(SA->isInherited());
    1954           2 :     Record.push_back(A->isImplicit());
    1955           2 :     Record.push_back(A->getSpellingListIndex());
    1956           2 :     Record.push_back(SA->getArgumentCount());
    1957           2 :     break;
    1958             :   }
    1959             :   }

Generated by: LCOV version 1.13