Back to home page

EIC code displayed by LXR

 
 

    


Warning, /include/clang/Sema/AttrTemplateInstantiate.inc is written in an unsupported language. File is not indexed.

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