Back to home page

EIC code displayed by LXR

 
 

    


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

0001 /*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
0002 |*                                                                            *|
0003 |* Used by RecursiveASTVisitor to visit attributes.                           *|
0004 |*                                                                            *|
0005 |* Automatically generated file, do not edit!                                 *|
0006 |* From: Attr.td                                                              *|
0007 |*                                                                            *|
0008 \*===----------------------------------------------------------------------===*/
0009 
0010 #ifdef ATTR_VISITOR_DECLS_ONLY
0011 
0012   bool TraverseAArch64SVEPcsAttr(AArch64SVEPcsAttr *A);
0013   bool VisitAArch64SVEPcsAttr(AArch64SVEPcsAttr *A) {
0014     return true; 
0015   }
0016   bool TraverseAArch64VectorPcsAttr(AArch64VectorPcsAttr *A);
0017   bool VisitAArch64VectorPcsAttr(AArch64VectorPcsAttr *A) {
0018     return true; 
0019   }
0020   bool TraverseAMDGPUFlatWorkGroupSizeAttr(AMDGPUFlatWorkGroupSizeAttr *A);
0021   bool VisitAMDGPUFlatWorkGroupSizeAttr(AMDGPUFlatWorkGroupSizeAttr *A) {
0022     return true; 
0023   }
0024   bool TraverseAMDGPUKernelCallAttr(AMDGPUKernelCallAttr *A);
0025   bool VisitAMDGPUKernelCallAttr(AMDGPUKernelCallAttr *A) {
0026     return true; 
0027   }
0028   bool TraverseAMDGPUMaxNumWorkGroupsAttr(AMDGPUMaxNumWorkGroupsAttr *A);
0029   bool VisitAMDGPUMaxNumWorkGroupsAttr(AMDGPUMaxNumWorkGroupsAttr *A) {
0030     return true; 
0031   }
0032   bool TraverseAMDGPUNumSGPRAttr(AMDGPUNumSGPRAttr *A);
0033   bool VisitAMDGPUNumSGPRAttr(AMDGPUNumSGPRAttr *A) {
0034     return true; 
0035   }
0036   bool TraverseAMDGPUNumVGPRAttr(AMDGPUNumVGPRAttr *A);
0037   bool VisitAMDGPUNumVGPRAttr(AMDGPUNumVGPRAttr *A) {
0038     return true; 
0039   }
0040   bool TraverseAMDGPUWavesPerEUAttr(AMDGPUWavesPerEUAttr *A);
0041   bool VisitAMDGPUWavesPerEUAttr(AMDGPUWavesPerEUAttr *A) {
0042     return true; 
0043   }
0044   bool TraverseARMInterruptAttr(ARMInterruptAttr *A);
0045   bool VisitARMInterruptAttr(ARMInterruptAttr *A) {
0046     return true; 
0047   }
0048   bool TraverseAVRInterruptAttr(AVRInterruptAttr *A);
0049   bool VisitAVRInterruptAttr(AVRInterruptAttr *A) {
0050     return true; 
0051   }
0052   bool TraverseAVRSignalAttr(AVRSignalAttr *A);
0053   bool VisitAVRSignalAttr(AVRSignalAttr *A) {
0054     return true; 
0055   }
0056   bool TraverseAbiTagAttr(AbiTagAttr *A);
0057   bool VisitAbiTagAttr(AbiTagAttr *A) {
0058     return true; 
0059   }
0060   bool TraverseAcquireCapabilityAttr(AcquireCapabilityAttr *A);
0061   bool VisitAcquireCapabilityAttr(AcquireCapabilityAttr *A) {
0062     return true; 
0063   }
0064   bool TraverseAcquireHandleAttr(AcquireHandleAttr *A);
0065   bool VisitAcquireHandleAttr(AcquireHandleAttr *A) {
0066     return true; 
0067   }
0068   bool TraverseAcquiredAfterAttr(AcquiredAfterAttr *A);
0069   bool VisitAcquiredAfterAttr(AcquiredAfterAttr *A) {
0070     return true; 
0071   }
0072   bool TraverseAcquiredBeforeAttr(AcquiredBeforeAttr *A);
0073   bool VisitAcquiredBeforeAttr(AcquiredBeforeAttr *A) {
0074     return true; 
0075   }
0076   bool TraverseAddressSpaceAttr(AddressSpaceAttr *A);
0077   bool VisitAddressSpaceAttr(AddressSpaceAttr *A) {
0078     return true; 
0079   }
0080   bool TraverseAliasAttr(AliasAttr *A);
0081   bool VisitAliasAttr(AliasAttr *A) {
0082     return true; 
0083   }
0084   bool TraverseAlignMac68kAttr(AlignMac68kAttr *A);
0085   bool VisitAlignMac68kAttr(AlignMac68kAttr *A) {
0086     return true; 
0087   }
0088   bool TraverseAlignNaturalAttr(AlignNaturalAttr *A);
0089   bool VisitAlignNaturalAttr(AlignNaturalAttr *A) {
0090     return true; 
0091   }
0092   bool TraverseAlignValueAttr(AlignValueAttr *A);
0093   bool VisitAlignValueAttr(AlignValueAttr *A) {
0094     return true; 
0095   }
0096   bool TraverseAlignedAttr(AlignedAttr *A);
0097   bool VisitAlignedAttr(AlignedAttr *A) {
0098     return true; 
0099   }
0100   bool TraverseAllocAlignAttr(AllocAlignAttr *A);
0101   bool VisitAllocAlignAttr(AllocAlignAttr *A) {
0102     return true; 
0103   }
0104   bool TraverseAllocSizeAttr(AllocSizeAttr *A);
0105   bool VisitAllocSizeAttr(AllocSizeAttr *A) {
0106     return true; 
0107   }
0108   bool TraverseAllocatingAttr(AllocatingAttr *A);
0109   bool VisitAllocatingAttr(AllocatingAttr *A) {
0110     return true; 
0111   }
0112   bool TraverseAlwaysDestroyAttr(AlwaysDestroyAttr *A);
0113   bool VisitAlwaysDestroyAttr(AlwaysDestroyAttr *A) {
0114     return true; 
0115   }
0116   bool TraverseAlwaysInlineAttr(AlwaysInlineAttr *A);
0117   bool VisitAlwaysInlineAttr(AlwaysInlineAttr *A) {
0118     return true; 
0119   }
0120   bool TraverseAnalyzerNoReturnAttr(AnalyzerNoReturnAttr *A);
0121   bool VisitAnalyzerNoReturnAttr(AnalyzerNoReturnAttr *A) {
0122     return true; 
0123   }
0124   bool TraverseAnnotateAttr(AnnotateAttr *A);
0125   bool VisitAnnotateAttr(AnnotateAttr *A) {
0126     return true; 
0127   }
0128   bool TraverseAnnotateTypeAttr(AnnotateTypeAttr *A);
0129   bool VisitAnnotateTypeAttr(AnnotateTypeAttr *A) {
0130     return true; 
0131   }
0132   bool TraverseAnyX86InterruptAttr(AnyX86InterruptAttr *A);
0133   bool VisitAnyX86InterruptAttr(AnyX86InterruptAttr *A) {
0134     return true; 
0135   }
0136   bool TraverseAnyX86NoCallerSavedRegistersAttr(AnyX86NoCallerSavedRegistersAttr *A);
0137   bool VisitAnyX86NoCallerSavedRegistersAttr(AnyX86NoCallerSavedRegistersAttr *A) {
0138     return true; 
0139   }
0140   bool TraverseAnyX86NoCfCheckAttr(AnyX86NoCfCheckAttr *A);
0141   bool VisitAnyX86NoCfCheckAttr(AnyX86NoCfCheckAttr *A) {
0142     return true; 
0143   }
0144   bool TraverseArcWeakrefUnavailableAttr(ArcWeakrefUnavailableAttr *A);
0145   bool VisitArcWeakrefUnavailableAttr(ArcWeakrefUnavailableAttr *A) {
0146     return true; 
0147   }
0148   bool TraverseArgumentWithTypeTagAttr(ArgumentWithTypeTagAttr *A);
0149   bool VisitArgumentWithTypeTagAttr(ArgumentWithTypeTagAttr *A) {
0150     return true; 
0151   }
0152   bool TraverseArmAgnosticAttr(ArmAgnosticAttr *A);
0153   bool VisitArmAgnosticAttr(ArmAgnosticAttr *A) {
0154     return true; 
0155   }
0156   bool TraverseArmBuiltinAliasAttr(ArmBuiltinAliasAttr *A);
0157   bool VisitArmBuiltinAliasAttr(ArmBuiltinAliasAttr *A) {
0158     return true; 
0159   }
0160   bool TraverseArmInAttr(ArmInAttr *A);
0161   bool VisitArmInAttr(ArmInAttr *A) {
0162     return true; 
0163   }
0164   bool TraverseArmInOutAttr(ArmInOutAttr *A);
0165   bool VisitArmInOutAttr(ArmInOutAttr *A) {
0166     return true; 
0167   }
0168   bool TraverseArmLocallyStreamingAttr(ArmLocallyStreamingAttr *A);
0169   bool VisitArmLocallyStreamingAttr(ArmLocallyStreamingAttr *A) {
0170     return true; 
0171   }
0172   bool TraverseArmMveStrictPolymorphismAttr(ArmMveStrictPolymorphismAttr *A);
0173   bool VisitArmMveStrictPolymorphismAttr(ArmMveStrictPolymorphismAttr *A) {
0174     return true; 
0175   }
0176   bool TraverseArmNewAttr(ArmNewAttr *A);
0177   bool VisitArmNewAttr(ArmNewAttr *A) {
0178     return true; 
0179   }
0180   bool TraverseArmOutAttr(ArmOutAttr *A);
0181   bool VisitArmOutAttr(ArmOutAttr *A) {
0182     return true; 
0183   }
0184   bool TraverseArmPreservesAttr(ArmPreservesAttr *A);
0185   bool VisitArmPreservesAttr(ArmPreservesAttr *A) {
0186     return true; 
0187   }
0188   bool TraverseArmStreamingAttr(ArmStreamingAttr *A);
0189   bool VisitArmStreamingAttr(ArmStreamingAttr *A) {
0190     return true; 
0191   }
0192   bool TraverseArmStreamingCompatibleAttr(ArmStreamingCompatibleAttr *A);
0193   bool VisitArmStreamingCompatibleAttr(ArmStreamingCompatibleAttr *A) {
0194     return true; 
0195   }
0196   bool TraverseArtificialAttr(ArtificialAttr *A);
0197   bool VisitArtificialAttr(ArtificialAttr *A) {
0198     return true; 
0199   }
0200   bool TraverseAsmLabelAttr(AsmLabelAttr *A);
0201   bool VisitAsmLabelAttr(AsmLabelAttr *A) {
0202     return true; 
0203   }
0204   bool TraverseAssertCapabilityAttr(AssertCapabilityAttr *A);
0205   bool VisitAssertCapabilityAttr(AssertCapabilityAttr *A) {
0206     return true; 
0207   }
0208   bool TraverseAssertExclusiveLockAttr(AssertExclusiveLockAttr *A);
0209   bool VisitAssertExclusiveLockAttr(AssertExclusiveLockAttr *A) {
0210     return true; 
0211   }
0212   bool TraverseAssertSharedLockAttr(AssertSharedLockAttr *A);
0213   bool VisitAssertSharedLockAttr(AssertSharedLockAttr *A) {
0214     return true; 
0215   }
0216   bool TraverseAssumeAlignedAttr(AssumeAlignedAttr *A);
0217   bool VisitAssumeAlignedAttr(AssumeAlignedAttr *A) {
0218     return true; 
0219   }
0220   bool TraverseAvailabilityAttr(AvailabilityAttr *A);
0221   bool VisitAvailabilityAttr(AvailabilityAttr *A) {
0222     return true; 
0223   }
0224   bool TraverseAvailableOnlyInDefaultEvalMethodAttr(AvailableOnlyInDefaultEvalMethodAttr *A);
0225   bool VisitAvailableOnlyInDefaultEvalMethodAttr(AvailableOnlyInDefaultEvalMethodAttr *A) {
0226     return true; 
0227   }
0228   bool TraverseBPFFastCallAttr(BPFFastCallAttr *A);
0229   bool VisitBPFFastCallAttr(BPFFastCallAttr *A) {
0230     return true; 
0231   }
0232   bool TraverseBPFPreserveAccessIndexAttr(BPFPreserveAccessIndexAttr *A);
0233   bool VisitBPFPreserveAccessIndexAttr(BPFPreserveAccessIndexAttr *A) {
0234     return true; 
0235   }
0236   bool TraverseBPFPreserveStaticOffsetAttr(BPFPreserveStaticOffsetAttr *A);
0237   bool VisitBPFPreserveStaticOffsetAttr(BPFPreserveStaticOffsetAttr *A) {
0238     return true; 
0239   }
0240   bool TraverseBTFDeclTagAttr(BTFDeclTagAttr *A);
0241   bool VisitBTFDeclTagAttr(BTFDeclTagAttr *A) {
0242     return true; 
0243   }
0244   bool TraverseBTFTypeTagAttr(BTFTypeTagAttr *A);
0245   bool VisitBTFTypeTagAttr(BTFTypeTagAttr *A) {
0246     return true; 
0247   }
0248   bool TraverseBlockingAttr(BlockingAttr *A);
0249   bool VisitBlockingAttr(BlockingAttr *A) {
0250     return true; 
0251   }
0252   bool TraverseBlocksAttr(BlocksAttr *A);
0253   bool VisitBlocksAttr(BlocksAttr *A) {
0254     return true; 
0255   }
0256   bool TraverseBuiltinAttr(BuiltinAttr *A);
0257   bool VisitBuiltinAttr(BuiltinAttr *A) {
0258     return true; 
0259   }
0260   bool TraverseBuiltinAliasAttr(BuiltinAliasAttr *A);
0261   bool VisitBuiltinAliasAttr(BuiltinAliasAttr *A) {
0262     return true; 
0263   }
0264   bool TraverseC11NoReturnAttr(C11NoReturnAttr *A);
0265   bool VisitC11NoReturnAttr(C11NoReturnAttr *A) {
0266     return true; 
0267   }
0268   bool TraverseCDeclAttr(CDeclAttr *A);
0269   bool VisitCDeclAttr(CDeclAttr *A) {
0270     return true; 
0271   }
0272   bool TraverseCFAuditedTransferAttr(CFAuditedTransferAttr *A);
0273   bool VisitCFAuditedTransferAttr(CFAuditedTransferAttr *A) {
0274     return true; 
0275   }
0276   bool TraverseCFConsumedAttr(CFConsumedAttr *A);
0277   bool VisitCFConsumedAttr(CFConsumedAttr *A) {
0278     return true; 
0279   }
0280   bool TraverseCFGuardAttr(CFGuardAttr *A);
0281   bool VisitCFGuardAttr(CFGuardAttr *A) {
0282     return true; 
0283   }
0284   bool TraverseCFICanonicalJumpTableAttr(CFICanonicalJumpTableAttr *A);
0285   bool VisitCFICanonicalJumpTableAttr(CFICanonicalJumpTableAttr *A) {
0286     return true; 
0287   }
0288   bool TraverseCFReturnsNotRetainedAttr(CFReturnsNotRetainedAttr *A);
0289   bool VisitCFReturnsNotRetainedAttr(CFReturnsNotRetainedAttr *A) {
0290     return true; 
0291   }
0292   bool TraverseCFReturnsRetainedAttr(CFReturnsRetainedAttr *A);
0293   bool VisitCFReturnsRetainedAttr(CFReturnsRetainedAttr *A) {
0294     return true; 
0295   }
0296   bool TraverseCFUnknownTransferAttr(CFUnknownTransferAttr *A);
0297   bool VisitCFUnknownTransferAttr(CFUnknownTransferAttr *A) {
0298     return true; 
0299   }
0300   bool TraverseCPUDispatchAttr(CPUDispatchAttr *A);
0301   bool VisitCPUDispatchAttr(CPUDispatchAttr *A) {
0302     return true; 
0303   }
0304   bool TraverseCPUSpecificAttr(CPUSpecificAttr *A);
0305   bool VisitCPUSpecificAttr(CPUSpecificAttr *A) {
0306     return true; 
0307   }
0308   bool TraverseCUDAConstantAttr(CUDAConstantAttr *A);
0309   bool VisitCUDAConstantAttr(CUDAConstantAttr *A) {
0310     return true; 
0311   }
0312   bool TraverseCUDADeviceAttr(CUDADeviceAttr *A);
0313   bool VisitCUDADeviceAttr(CUDADeviceAttr *A) {
0314     return true; 
0315   }
0316   bool TraverseCUDADeviceBuiltinSurfaceTypeAttr(CUDADeviceBuiltinSurfaceTypeAttr *A);
0317   bool VisitCUDADeviceBuiltinSurfaceTypeAttr(CUDADeviceBuiltinSurfaceTypeAttr *A) {
0318     return true; 
0319   }
0320   bool TraverseCUDADeviceBuiltinTextureTypeAttr(CUDADeviceBuiltinTextureTypeAttr *A);
0321   bool VisitCUDADeviceBuiltinTextureTypeAttr(CUDADeviceBuiltinTextureTypeAttr *A) {
0322     return true; 
0323   }
0324   bool TraverseCUDAGlobalAttr(CUDAGlobalAttr *A);
0325   bool VisitCUDAGlobalAttr(CUDAGlobalAttr *A) {
0326     return true; 
0327   }
0328   bool TraverseCUDAGridConstantAttr(CUDAGridConstantAttr *A);
0329   bool VisitCUDAGridConstantAttr(CUDAGridConstantAttr *A) {
0330     return true; 
0331   }
0332   bool TraverseCUDAHostAttr(CUDAHostAttr *A);
0333   bool VisitCUDAHostAttr(CUDAHostAttr *A) {
0334     return true; 
0335   }
0336   bool TraverseCUDAInvalidTargetAttr(CUDAInvalidTargetAttr *A);
0337   bool VisitCUDAInvalidTargetAttr(CUDAInvalidTargetAttr *A) {
0338     return true; 
0339   }
0340   bool TraverseCUDALaunchBoundsAttr(CUDALaunchBoundsAttr *A);
0341   bool VisitCUDALaunchBoundsAttr(CUDALaunchBoundsAttr *A) {
0342     return true; 
0343   }
0344   bool TraverseCUDASharedAttr(CUDASharedAttr *A);
0345   bool VisitCUDASharedAttr(CUDASharedAttr *A) {
0346     return true; 
0347   }
0348   bool TraverseCXX11NoReturnAttr(CXX11NoReturnAttr *A);
0349   bool VisitCXX11NoReturnAttr(CXX11NoReturnAttr *A) {
0350     return true; 
0351   }
0352   bool TraverseCXXAssumeAttr(CXXAssumeAttr *A);
0353   bool VisitCXXAssumeAttr(CXXAssumeAttr *A) {
0354     return true; 
0355   }
0356   bool TraverseCallableWhenAttr(CallableWhenAttr *A);
0357   bool VisitCallableWhenAttr(CallableWhenAttr *A) {
0358     return true; 
0359   }
0360   bool TraverseCallbackAttr(CallbackAttr *A);
0361   bool VisitCallbackAttr(CallbackAttr *A) {
0362     return true; 
0363   }
0364   bool TraverseCalledOnceAttr(CalledOnceAttr *A);
0365   bool VisitCalledOnceAttr(CalledOnceAttr *A) {
0366     return true; 
0367   }
0368   bool TraverseCapabilityAttr(CapabilityAttr *A);
0369   bool VisitCapabilityAttr(CapabilityAttr *A) {
0370     return true; 
0371   }
0372   bool TraverseCapturedRecordAttr(CapturedRecordAttr *A);
0373   bool VisitCapturedRecordAttr(CapturedRecordAttr *A) {
0374     return true; 
0375   }
0376   bool TraverseCarriesDependencyAttr(CarriesDependencyAttr *A);
0377   bool VisitCarriesDependencyAttr(CarriesDependencyAttr *A) {
0378     return true; 
0379   }
0380   bool TraverseCleanupAttr(CleanupAttr *A);
0381   bool VisitCleanupAttr(CleanupAttr *A) {
0382     return true; 
0383   }
0384   bool TraverseClspvLibclcBuiltinAttr(ClspvLibclcBuiltinAttr *A);
0385   bool VisitClspvLibclcBuiltinAttr(ClspvLibclcBuiltinAttr *A) {
0386     return true; 
0387   }
0388   bool TraverseCmseNSCallAttr(CmseNSCallAttr *A);
0389   bool VisitCmseNSCallAttr(CmseNSCallAttr *A) {
0390     return true; 
0391   }
0392   bool TraverseCmseNSEntryAttr(CmseNSEntryAttr *A);
0393   bool VisitCmseNSEntryAttr(CmseNSEntryAttr *A) {
0394     return true; 
0395   }
0396   bool TraverseCodeAlignAttr(CodeAlignAttr *A);
0397   bool VisitCodeAlignAttr(CodeAlignAttr *A) {
0398     return true; 
0399   }
0400   bool TraverseCodeModelAttr(CodeModelAttr *A);
0401   bool VisitCodeModelAttr(CodeModelAttr *A) {
0402     return true; 
0403   }
0404   bool TraverseCodeSegAttr(CodeSegAttr *A);
0405   bool VisitCodeSegAttr(CodeSegAttr *A) {
0406     return true; 
0407   }
0408   bool TraverseColdAttr(ColdAttr *A);
0409   bool VisitColdAttr(ColdAttr *A) {
0410     return true; 
0411   }
0412   bool TraverseCommonAttr(CommonAttr *A);
0413   bool VisitCommonAttr(CommonAttr *A) {
0414     return true; 
0415   }
0416   bool TraverseConstAttr(ConstAttr *A);
0417   bool VisitConstAttr(ConstAttr *A) {
0418     return true; 
0419   }
0420   bool TraverseConstInitAttr(ConstInitAttr *A);
0421   bool VisitConstInitAttr(ConstInitAttr *A) {
0422     return true; 
0423   }
0424   bool TraverseConstructorAttr(ConstructorAttr *A);
0425   bool VisitConstructorAttr(ConstructorAttr *A) {
0426     return true; 
0427   }
0428   bool TraverseConsumableAttr(ConsumableAttr *A);
0429   bool VisitConsumableAttr(ConsumableAttr *A) {
0430     return true; 
0431   }
0432   bool TraverseConsumableAutoCastAttr(ConsumableAutoCastAttr *A);
0433   bool VisitConsumableAutoCastAttr(ConsumableAutoCastAttr *A) {
0434     return true; 
0435   }
0436   bool TraverseConsumableSetOnReadAttr(ConsumableSetOnReadAttr *A);
0437   bool VisitConsumableSetOnReadAttr(ConsumableSetOnReadAttr *A) {
0438     return true; 
0439   }
0440   bool TraverseConvergentAttr(ConvergentAttr *A);
0441   bool VisitConvergentAttr(ConvergentAttr *A) {
0442     return true; 
0443   }
0444   bool TraverseCoroAwaitElidableAttr(CoroAwaitElidableAttr *A);
0445   bool VisitCoroAwaitElidableAttr(CoroAwaitElidableAttr *A) {
0446     return true; 
0447   }
0448   bool TraverseCoroAwaitElidableArgumentAttr(CoroAwaitElidableArgumentAttr *A);
0449   bool VisitCoroAwaitElidableArgumentAttr(CoroAwaitElidableArgumentAttr *A) {
0450     return true; 
0451   }
0452   bool TraverseCoroDisableLifetimeBoundAttr(CoroDisableLifetimeBoundAttr *A);
0453   bool VisitCoroDisableLifetimeBoundAttr(CoroDisableLifetimeBoundAttr *A) {
0454     return true; 
0455   }
0456   bool TraverseCoroLifetimeBoundAttr(CoroLifetimeBoundAttr *A);
0457   bool VisitCoroLifetimeBoundAttr(CoroLifetimeBoundAttr *A) {
0458     return true; 
0459   }
0460   bool TraverseCoroOnlyDestroyWhenCompleteAttr(CoroOnlyDestroyWhenCompleteAttr *A);
0461   bool VisitCoroOnlyDestroyWhenCompleteAttr(CoroOnlyDestroyWhenCompleteAttr *A) {
0462     return true; 
0463   }
0464   bool TraverseCoroReturnTypeAttr(CoroReturnTypeAttr *A);
0465   bool VisitCoroReturnTypeAttr(CoroReturnTypeAttr *A) {
0466     return true; 
0467   }
0468   bool TraverseCoroWrapperAttr(CoroWrapperAttr *A);
0469   bool VisitCoroWrapperAttr(CoroWrapperAttr *A) {
0470     return true; 
0471   }
0472   bool TraverseCountedByAttr(CountedByAttr *A);
0473   bool VisitCountedByAttr(CountedByAttr *A) {
0474     return true; 
0475   }
0476   bool TraverseCountedByOrNullAttr(CountedByOrNullAttr *A);
0477   bool VisitCountedByOrNullAttr(CountedByOrNullAttr *A) {
0478     return true; 
0479   }
0480   bool TraverseDLLExportAttr(DLLExportAttr *A);
0481   bool VisitDLLExportAttr(DLLExportAttr *A) {
0482     return true; 
0483   }
0484   bool TraverseDLLExportStaticLocalAttr(DLLExportStaticLocalAttr *A);
0485   bool VisitDLLExportStaticLocalAttr(DLLExportStaticLocalAttr *A) {
0486     return true; 
0487   }
0488   bool TraverseDLLImportAttr(DLLImportAttr *A);
0489   bool VisitDLLImportAttr(DLLImportAttr *A) {
0490     return true; 
0491   }
0492   bool TraverseDLLImportStaticLocalAttr(DLLImportStaticLocalAttr *A);
0493   bool VisitDLLImportStaticLocalAttr(DLLImportStaticLocalAttr *A) {
0494     return true; 
0495   }
0496   bool TraverseDeprecatedAttr(DeprecatedAttr *A);
0497   bool VisitDeprecatedAttr(DeprecatedAttr *A) {
0498     return true; 
0499   }
0500   bool TraverseDestructorAttr(DestructorAttr *A);
0501   bool VisitDestructorAttr(DestructorAttr *A) {
0502     return true; 
0503   }
0504   bool TraverseDiagnoseAsBuiltinAttr(DiagnoseAsBuiltinAttr *A);
0505   bool VisitDiagnoseAsBuiltinAttr(DiagnoseAsBuiltinAttr *A) {
0506     return true; 
0507   }
0508   bool TraverseDiagnoseIfAttr(DiagnoseIfAttr *A);
0509   bool VisitDiagnoseIfAttr(DiagnoseIfAttr *A) {
0510     return true; 
0511   }
0512   bool TraverseDisableSanitizerInstrumentationAttr(DisableSanitizerInstrumentationAttr *A);
0513   bool VisitDisableSanitizerInstrumentationAttr(DisableSanitizerInstrumentationAttr *A) {
0514     return true; 
0515   }
0516   bool TraverseDisableTailCallsAttr(DisableTailCallsAttr *A);
0517   bool VisitDisableTailCallsAttr(DisableTailCallsAttr *A) {
0518     return true; 
0519   }
0520   bool TraverseEmptyBasesAttr(EmptyBasesAttr *A);
0521   bool VisitEmptyBasesAttr(EmptyBasesAttr *A) {
0522     return true; 
0523   }
0524   bool TraverseEnableIfAttr(EnableIfAttr *A);
0525   bool VisitEnableIfAttr(EnableIfAttr *A) {
0526     return true; 
0527   }
0528   bool TraverseEnforceTCBAttr(EnforceTCBAttr *A);
0529   bool VisitEnforceTCBAttr(EnforceTCBAttr *A) {
0530     return true; 
0531   }
0532   bool TraverseEnforceTCBLeafAttr(EnforceTCBLeafAttr *A);
0533   bool VisitEnforceTCBLeafAttr(EnforceTCBLeafAttr *A) {
0534     return true; 
0535   }
0536   bool TraverseEnumExtensibilityAttr(EnumExtensibilityAttr *A);
0537   bool VisitEnumExtensibilityAttr(EnumExtensibilityAttr *A) {
0538     return true; 
0539   }
0540   bool TraverseErrorAttr(ErrorAttr *A);
0541   bool VisitErrorAttr(ErrorAttr *A) {
0542     return true; 
0543   }
0544   bool TraverseExcludeFromExplicitInstantiationAttr(ExcludeFromExplicitInstantiationAttr *A);
0545   bool VisitExcludeFromExplicitInstantiationAttr(ExcludeFromExplicitInstantiationAttr *A) {
0546     return true; 
0547   }
0548   bool TraverseExclusiveTrylockFunctionAttr(ExclusiveTrylockFunctionAttr *A);
0549   bool VisitExclusiveTrylockFunctionAttr(ExclusiveTrylockFunctionAttr *A) {
0550     return true; 
0551   }
0552   bool TraverseExplicitInitAttr(ExplicitInitAttr *A);
0553   bool VisitExplicitInitAttr(ExplicitInitAttr *A) {
0554     return true; 
0555   }
0556   bool TraverseExternalSourceSymbolAttr(ExternalSourceSymbolAttr *A);
0557   bool VisitExternalSourceSymbolAttr(ExternalSourceSymbolAttr *A) {
0558     return true; 
0559   }
0560   bool TraverseFallThroughAttr(FallThroughAttr *A);
0561   bool VisitFallThroughAttr(FallThroughAttr *A) {
0562     return true; 
0563   }
0564   bool TraverseFastCallAttr(FastCallAttr *A);
0565   bool VisitFastCallAttr(FastCallAttr *A) {
0566     return true; 
0567   }
0568   bool TraverseFinalAttr(FinalAttr *A);
0569   bool VisitFinalAttr(FinalAttr *A) {
0570     return true; 
0571   }
0572   bool TraverseFlagEnumAttr(FlagEnumAttr *A);
0573   bool VisitFlagEnumAttr(FlagEnumAttr *A) {
0574     return true; 
0575   }
0576   bool TraverseFlattenAttr(FlattenAttr *A);
0577   bool VisitFlattenAttr(FlattenAttr *A) {
0578     return true; 
0579   }
0580   bool TraverseFormatAttr(FormatAttr *A);
0581   bool VisitFormatAttr(FormatAttr *A) {
0582     return true; 
0583   }
0584   bool TraverseFormatArgAttr(FormatArgAttr *A);
0585   bool VisitFormatArgAttr(FormatArgAttr *A) {
0586     return true; 
0587   }
0588   bool TraverseFunctionReturnThunksAttr(FunctionReturnThunksAttr *A);
0589   bool VisitFunctionReturnThunksAttr(FunctionReturnThunksAttr *A) {
0590     return true; 
0591   }
0592   bool TraverseGNUInlineAttr(GNUInlineAttr *A);
0593   bool VisitGNUInlineAttr(GNUInlineAttr *A) {
0594     return true; 
0595   }
0596   bool TraverseGuardedByAttr(GuardedByAttr *A);
0597   bool VisitGuardedByAttr(GuardedByAttr *A) {
0598     return true; 
0599   }
0600   bool TraverseGuardedVarAttr(GuardedVarAttr *A);
0601   bool VisitGuardedVarAttr(GuardedVarAttr *A) {
0602     return true; 
0603   }
0604   bool TraverseHIPManagedAttr(HIPManagedAttr *A);
0605   bool VisitHIPManagedAttr(HIPManagedAttr *A) {
0606     return true; 
0607   }
0608   bool TraverseHLSLContainedTypeAttr(HLSLContainedTypeAttr *A);
0609   bool VisitHLSLContainedTypeAttr(HLSLContainedTypeAttr *A) {
0610     return true; 
0611   }
0612   bool TraverseHLSLControlFlowHintAttr(HLSLControlFlowHintAttr *A);
0613   bool VisitHLSLControlFlowHintAttr(HLSLControlFlowHintAttr *A) {
0614     return true; 
0615   }
0616   bool TraverseHLSLGroupSharedAddressSpaceAttr(HLSLGroupSharedAddressSpaceAttr *A);
0617   bool VisitHLSLGroupSharedAddressSpaceAttr(HLSLGroupSharedAddressSpaceAttr *A) {
0618     return true; 
0619   }
0620   bool TraverseHLSLLoopHintAttr(HLSLLoopHintAttr *A);
0621   bool VisitHLSLLoopHintAttr(HLSLLoopHintAttr *A) {
0622     return true; 
0623   }
0624   bool TraverseHLSLNumThreadsAttr(HLSLNumThreadsAttr *A);
0625   bool VisitHLSLNumThreadsAttr(HLSLNumThreadsAttr *A) {
0626     return true; 
0627   }
0628   bool TraverseHLSLPackOffsetAttr(HLSLPackOffsetAttr *A);
0629   bool VisitHLSLPackOffsetAttr(HLSLPackOffsetAttr *A) {
0630     return true; 
0631   }
0632   bool TraverseHLSLParamModifierAttr(HLSLParamModifierAttr *A);
0633   bool VisitHLSLParamModifierAttr(HLSLParamModifierAttr *A) {
0634     return true; 
0635   }
0636   bool TraverseHLSLROVAttr(HLSLROVAttr *A);
0637   bool VisitHLSLROVAttr(HLSLROVAttr *A) {
0638     return true; 
0639   }
0640   bool TraverseHLSLRawBufferAttr(HLSLRawBufferAttr *A);
0641   bool VisitHLSLRawBufferAttr(HLSLRawBufferAttr *A) {
0642     return true; 
0643   }
0644   bool TraverseHLSLResourceAttr(HLSLResourceAttr *A);
0645   bool VisitHLSLResourceAttr(HLSLResourceAttr *A) {
0646     return true; 
0647   }
0648   bool TraverseHLSLResourceBindingAttr(HLSLResourceBindingAttr *A);
0649   bool VisitHLSLResourceBindingAttr(HLSLResourceBindingAttr *A) {
0650     return true; 
0651   }
0652   bool TraverseHLSLResourceClassAttr(HLSLResourceClassAttr *A);
0653   bool VisitHLSLResourceClassAttr(HLSLResourceClassAttr *A) {
0654     return true; 
0655   }
0656   bool TraverseHLSLSV_DispatchThreadIDAttr(HLSLSV_DispatchThreadIDAttr *A);
0657   bool VisitHLSLSV_DispatchThreadIDAttr(HLSLSV_DispatchThreadIDAttr *A) {
0658     return true; 
0659   }
0660   bool TraverseHLSLSV_GroupIDAttr(HLSLSV_GroupIDAttr *A);
0661   bool VisitHLSLSV_GroupIDAttr(HLSLSV_GroupIDAttr *A) {
0662     return true; 
0663   }
0664   bool TraverseHLSLSV_GroupIndexAttr(HLSLSV_GroupIndexAttr *A);
0665   bool VisitHLSLSV_GroupIndexAttr(HLSLSV_GroupIndexAttr *A) {
0666     return true; 
0667   }
0668   bool TraverseHLSLSV_GroupThreadIDAttr(HLSLSV_GroupThreadIDAttr *A);
0669   bool VisitHLSLSV_GroupThreadIDAttr(HLSLSV_GroupThreadIDAttr *A) {
0670     return true; 
0671   }
0672   bool TraverseHLSLShaderAttr(HLSLShaderAttr *A);
0673   bool VisitHLSLShaderAttr(HLSLShaderAttr *A) {
0674     return true; 
0675   }
0676   bool TraverseHLSLWaveSizeAttr(HLSLWaveSizeAttr *A);
0677   bool VisitHLSLWaveSizeAttr(HLSLWaveSizeAttr *A) {
0678     return true; 
0679   }
0680   bool TraverseHotAttr(HotAttr *A);
0681   bool VisitHotAttr(HotAttr *A) {
0682     return true; 
0683   }
0684   bool TraverseHybridPatchableAttr(HybridPatchableAttr *A);
0685   bool VisitHybridPatchableAttr(HybridPatchableAttr *A) {
0686     return true; 
0687   }
0688   bool TraverseIBActionAttr(IBActionAttr *A);
0689   bool VisitIBActionAttr(IBActionAttr *A) {
0690     return true; 
0691   }
0692   bool TraverseIBOutletAttr(IBOutletAttr *A);
0693   bool VisitIBOutletAttr(IBOutletAttr *A) {
0694     return true; 
0695   }
0696   bool TraverseIBOutletCollectionAttr(IBOutletCollectionAttr *A);
0697   bool VisitIBOutletCollectionAttr(IBOutletCollectionAttr *A) {
0698     return true; 
0699   }
0700   bool TraverseIFuncAttr(IFuncAttr *A);
0701   bool VisitIFuncAttr(IFuncAttr *A) {
0702     return true; 
0703   }
0704   bool TraverseInitPriorityAttr(InitPriorityAttr *A);
0705   bool VisitInitPriorityAttr(InitPriorityAttr *A) {
0706     return true; 
0707   }
0708   bool TraverseInitSegAttr(InitSegAttr *A);
0709   bool VisitInitSegAttr(InitSegAttr *A) {
0710     return true; 
0711   }
0712   bool TraverseIntelOclBiccAttr(IntelOclBiccAttr *A);
0713   bool VisitIntelOclBiccAttr(IntelOclBiccAttr *A) {
0714     return true; 
0715   }
0716   bool TraverseInternalLinkageAttr(InternalLinkageAttr *A);
0717   bool VisitInternalLinkageAttr(InternalLinkageAttr *A) {
0718     return true; 
0719   }
0720   bool TraverseLTOVisibilityPublicAttr(LTOVisibilityPublicAttr *A);
0721   bool VisitLTOVisibilityPublicAttr(LTOVisibilityPublicAttr *A) {
0722     return true; 
0723   }
0724   bool TraverseLayoutVersionAttr(LayoutVersionAttr *A);
0725   bool VisitLayoutVersionAttr(LayoutVersionAttr *A) {
0726     return true; 
0727   }
0728   bool TraverseLeafAttr(LeafAttr *A);
0729   bool VisitLeafAttr(LeafAttr *A) {
0730     return true; 
0731   }
0732   bool TraverseLifetimeBoundAttr(LifetimeBoundAttr *A);
0733   bool VisitLifetimeBoundAttr(LifetimeBoundAttr *A) {
0734     return true; 
0735   }
0736   bool TraverseLifetimeCaptureByAttr(LifetimeCaptureByAttr *A);
0737   bool VisitLifetimeCaptureByAttr(LifetimeCaptureByAttr *A) {
0738     return true; 
0739   }
0740   bool TraverseLikelyAttr(LikelyAttr *A);
0741   bool VisitLikelyAttr(LikelyAttr *A) {
0742     return true; 
0743   }
0744   bool TraverseLoaderUninitializedAttr(LoaderUninitializedAttr *A);
0745   bool VisitLoaderUninitializedAttr(LoaderUninitializedAttr *A) {
0746     return true; 
0747   }
0748   bool TraverseLockReturnedAttr(LockReturnedAttr *A);
0749   bool VisitLockReturnedAttr(LockReturnedAttr *A) {
0750     return true; 
0751   }
0752   bool TraverseLocksExcludedAttr(LocksExcludedAttr *A);
0753   bool VisitLocksExcludedAttr(LocksExcludedAttr *A) {
0754     return true; 
0755   }
0756   bool TraverseLoopHintAttr(LoopHintAttr *A);
0757   bool VisitLoopHintAttr(LoopHintAttr *A) {
0758     return true; 
0759   }
0760   bool TraverseM68kInterruptAttr(M68kInterruptAttr *A);
0761   bool VisitM68kInterruptAttr(M68kInterruptAttr *A) {
0762     return true; 
0763   }
0764   bool TraverseM68kRTDAttr(M68kRTDAttr *A);
0765   bool VisitM68kRTDAttr(M68kRTDAttr *A) {
0766     return true; 
0767   }
0768   bool TraverseMIGServerRoutineAttr(MIGServerRoutineAttr *A);
0769   bool VisitMIGServerRoutineAttr(MIGServerRoutineAttr *A) {
0770     return true; 
0771   }
0772   bool TraverseMSABIAttr(MSABIAttr *A);
0773   bool VisitMSABIAttr(MSABIAttr *A) {
0774     return true; 
0775   }
0776   bool TraverseMSAllocatorAttr(MSAllocatorAttr *A);
0777   bool VisitMSAllocatorAttr(MSAllocatorAttr *A) {
0778     return true; 
0779   }
0780   bool TraverseMSConstexprAttr(MSConstexprAttr *A);
0781   bool VisitMSConstexprAttr(MSConstexprAttr *A) {
0782     return true; 
0783   }
0784   bool TraverseMSInheritanceAttr(MSInheritanceAttr *A);
0785   bool VisitMSInheritanceAttr(MSInheritanceAttr *A) {
0786     return true; 
0787   }
0788   bool TraverseMSNoVTableAttr(MSNoVTableAttr *A);
0789   bool VisitMSNoVTableAttr(MSNoVTableAttr *A) {
0790     return true; 
0791   }
0792   bool TraverseMSP430InterruptAttr(MSP430InterruptAttr *A);
0793   bool VisitMSP430InterruptAttr(MSP430InterruptAttr *A) {
0794     return true; 
0795   }
0796   bool TraverseMSStructAttr(MSStructAttr *A);
0797   bool VisitMSStructAttr(MSStructAttr *A) {
0798     return true; 
0799   }
0800   bool TraverseMSVtorDispAttr(MSVtorDispAttr *A);
0801   bool VisitMSVtorDispAttr(MSVtorDispAttr *A) {
0802     return true; 
0803   }
0804   bool TraverseMaxFieldAlignmentAttr(MaxFieldAlignmentAttr *A);
0805   bool VisitMaxFieldAlignmentAttr(MaxFieldAlignmentAttr *A) {
0806     return true; 
0807   }
0808   bool TraverseMayAliasAttr(MayAliasAttr *A);
0809   bool VisitMayAliasAttr(MayAliasAttr *A) {
0810     return true; 
0811   }
0812   bool TraverseMaybeUndefAttr(MaybeUndefAttr *A);
0813   bool VisitMaybeUndefAttr(MaybeUndefAttr *A) {
0814     return true; 
0815   }
0816   bool TraverseMicroMipsAttr(MicroMipsAttr *A);
0817   bool VisitMicroMipsAttr(MicroMipsAttr *A) {
0818     return true; 
0819   }
0820   bool TraverseMinSizeAttr(MinSizeAttr *A);
0821   bool VisitMinSizeAttr(MinSizeAttr *A) {
0822     return true; 
0823   }
0824   bool TraverseMinVectorWidthAttr(MinVectorWidthAttr *A);
0825   bool VisitMinVectorWidthAttr(MinVectorWidthAttr *A) {
0826     return true; 
0827   }
0828   bool TraverseMips16Attr(Mips16Attr *A);
0829   bool VisitMips16Attr(Mips16Attr *A) {
0830     return true; 
0831   }
0832   bool TraverseMipsInterruptAttr(MipsInterruptAttr *A);
0833   bool VisitMipsInterruptAttr(MipsInterruptAttr *A) {
0834     return true; 
0835   }
0836   bool TraverseMipsLongCallAttr(MipsLongCallAttr *A);
0837   bool VisitMipsLongCallAttr(MipsLongCallAttr *A) {
0838     return true; 
0839   }
0840   bool TraverseMipsShortCallAttr(MipsShortCallAttr *A);
0841   bool VisitMipsShortCallAttr(MipsShortCallAttr *A) {
0842     return true; 
0843   }
0844   bool TraverseModeAttr(ModeAttr *A);
0845   bool VisitModeAttr(ModeAttr *A) {
0846     return true; 
0847   }
0848   bool TraverseMustTailAttr(MustTailAttr *A);
0849   bool VisitMustTailAttr(MustTailAttr *A) {
0850     return true; 
0851   }
0852   bool TraverseNSConsumedAttr(NSConsumedAttr *A);
0853   bool VisitNSConsumedAttr(NSConsumedAttr *A) {
0854     return true; 
0855   }
0856   bool TraverseNSConsumesSelfAttr(NSConsumesSelfAttr *A);
0857   bool VisitNSConsumesSelfAttr(NSConsumesSelfAttr *A) {
0858     return true; 
0859   }
0860   bool TraverseNSErrorDomainAttr(NSErrorDomainAttr *A);
0861   bool VisitNSErrorDomainAttr(NSErrorDomainAttr *A) {
0862     return true; 
0863   }
0864   bool TraverseNSReturnsAutoreleasedAttr(NSReturnsAutoreleasedAttr *A);
0865   bool VisitNSReturnsAutoreleasedAttr(NSReturnsAutoreleasedAttr *A) {
0866     return true; 
0867   }
0868   bool TraverseNSReturnsNotRetainedAttr(NSReturnsNotRetainedAttr *A);
0869   bool VisitNSReturnsNotRetainedAttr(NSReturnsNotRetainedAttr *A) {
0870     return true; 
0871   }
0872   bool TraverseNSReturnsRetainedAttr(NSReturnsRetainedAttr *A);
0873   bool VisitNSReturnsRetainedAttr(NSReturnsRetainedAttr *A) {
0874     return true; 
0875   }
0876   bool TraverseNVPTXKernelAttr(NVPTXKernelAttr *A);
0877   bool VisitNVPTXKernelAttr(NVPTXKernelAttr *A) {
0878     return true; 
0879   }
0880   bool TraverseNakedAttr(NakedAttr *A);
0881   bool VisitNakedAttr(NakedAttr *A) {
0882     return true; 
0883   }
0884   bool TraverseNoAliasAttr(NoAliasAttr *A);
0885   bool VisitNoAliasAttr(NoAliasAttr *A) {
0886     return true; 
0887   }
0888   bool TraverseNoBuiltinAttr(NoBuiltinAttr *A);
0889   bool VisitNoBuiltinAttr(NoBuiltinAttr *A) {
0890     return true; 
0891   }
0892   bool TraverseNoCommonAttr(NoCommonAttr *A);
0893   bool VisitNoCommonAttr(NoCommonAttr *A) {
0894     return true; 
0895   }
0896   bool TraverseNoConvergentAttr(NoConvergentAttr *A);
0897   bool VisitNoConvergentAttr(NoConvergentAttr *A) {
0898     return true; 
0899   }
0900   bool TraverseNoDebugAttr(NoDebugAttr *A);
0901   bool VisitNoDebugAttr(NoDebugAttr *A) {
0902     return true; 
0903   }
0904   bool TraverseNoDerefAttr(NoDerefAttr *A);
0905   bool VisitNoDerefAttr(NoDerefAttr *A) {
0906     return true; 
0907   }
0908   bool TraverseNoDestroyAttr(NoDestroyAttr *A);
0909   bool VisitNoDestroyAttr(NoDestroyAttr *A) {
0910     return true; 
0911   }
0912   bool TraverseNoDuplicateAttr(NoDuplicateAttr *A);
0913   bool VisitNoDuplicateAttr(NoDuplicateAttr *A) {
0914     return true; 
0915   }
0916   bool TraverseNoEscapeAttr(NoEscapeAttr *A);
0917   bool VisitNoEscapeAttr(NoEscapeAttr *A) {
0918     return true; 
0919   }
0920   bool TraverseNoInlineAttr(NoInlineAttr *A);
0921   bool VisitNoInlineAttr(NoInlineAttr *A) {
0922     return true; 
0923   }
0924   bool TraverseNoInstrumentFunctionAttr(NoInstrumentFunctionAttr *A);
0925   bool VisitNoInstrumentFunctionAttr(NoInstrumentFunctionAttr *A) {
0926     return true; 
0927   }
0928   bool TraverseNoMergeAttr(NoMergeAttr *A);
0929   bool VisitNoMergeAttr(NoMergeAttr *A) {
0930     return true; 
0931   }
0932   bool TraverseNoMicroMipsAttr(NoMicroMipsAttr *A);
0933   bool VisitNoMicroMipsAttr(NoMicroMipsAttr *A) {
0934     return true; 
0935   }
0936   bool TraverseNoMips16Attr(NoMips16Attr *A);
0937   bool VisitNoMips16Attr(NoMips16Attr *A) {
0938     return true; 
0939   }
0940   bool TraverseNoProfileFunctionAttr(NoProfileFunctionAttr *A);
0941   bool VisitNoProfileFunctionAttr(NoProfileFunctionAttr *A) {
0942     return true; 
0943   }
0944   bool TraverseNoRandomizeLayoutAttr(NoRandomizeLayoutAttr *A);
0945   bool VisitNoRandomizeLayoutAttr(NoRandomizeLayoutAttr *A) {
0946     return true; 
0947   }
0948   bool TraverseNoReturnAttr(NoReturnAttr *A);
0949   bool VisitNoReturnAttr(NoReturnAttr *A) {
0950     return true; 
0951   }
0952   bool TraverseNoSanitizeAttr(NoSanitizeAttr *A);
0953   bool VisitNoSanitizeAttr(NoSanitizeAttr *A) {
0954     return true; 
0955   }
0956   bool TraverseNoSpecializationsAttr(NoSpecializationsAttr *A);
0957   bool VisitNoSpecializationsAttr(NoSpecializationsAttr *A) {
0958     return true; 
0959   }
0960   bool TraverseNoSpeculativeLoadHardeningAttr(NoSpeculativeLoadHardeningAttr *A);
0961   bool VisitNoSpeculativeLoadHardeningAttr(NoSpeculativeLoadHardeningAttr *A) {
0962     return true; 
0963   }
0964   bool TraverseNoSplitStackAttr(NoSplitStackAttr *A);
0965   bool VisitNoSplitStackAttr(NoSplitStackAttr *A) {
0966     return true; 
0967   }
0968   bool TraverseNoStackProtectorAttr(NoStackProtectorAttr *A);
0969   bool VisitNoStackProtectorAttr(NoStackProtectorAttr *A) {
0970     return true; 
0971   }
0972   bool TraverseNoThreadSafetyAnalysisAttr(NoThreadSafetyAnalysisAttr *A);
0973   bool VisitNoThreadSafetyAnalysisAttr(NoThreadSafetyAnalysisAttr *A) {
0974     return true; 
0975   }
0976   bool TraverseNoThrowAttr(NoThrowAttr *A);
0977   bool VisitNoThrowAttr(NoThrowAttr *A) {
0978     return true; 
0979   }
0980   bool TraverseNoTrivialAutoVarInitAttr(NoTrivialAutoVarInitAttr *A);
0981   bool VisitNoTrivialAutoVarInitAttr(NoTrivialAutoVarInitAttr *A) {
0982     return true; 
0983   }
0984   bool TraverseNoUniqueAddressAttr(NoUniqueAddressAttr *A);
0985   bool VisitNoUniqueAddressAttr(NoUniqueAddressAttr *A) {
0986     return true; 
0987   }
0988   bool TraverseNoUwtableAttr(NoUwtableAttr *A);
0989   bool VisitNoUwtableAttr(NoUwtableAttr *A) {
0990     return true; 
0991   }
0992   bool TraverseNonAllocatingAttr(NonAllocatingAttr *A);
0993   bool VisitNonAllocatingAttr(NonAllocatingAttr *A) {
0994     return true; 
0995   }
0996   bool TraverseNonBlockingAttr(NonBlockingAttr *A);
0997   bool VisitNonBlockingAttr(NonBlockingAttr *A) {
0998     return true; 
0999   }
1000   bool TraverseNonNullAttr(NonNullAttr *A);
1001   bool VisitNonNullAttr(NonNullAttr *A) {
1002     return true; 
1003   }
1004   bool TraverseNotTailCalledAttr(NotTailCalledAttr *A);
1005   bool VisitNotTailCalledAttr(NotTailCalledAttr *A) {
1006     return true; 
1007   }
1008   bool TraverseOMPAllocateDeclAttr(OMPAllocateDeclAttr *A);
1009   bool VisitOMPAllocateDeclAttr(OMPAllocateDeclAttr *A) {
1010     return true; 
1011   }
1012   bool TraverseOMPAssumeAttr(OMPAssumeAttr *A);
1013   bool VisitOMPAssumeAttr(OMPAssumeAttr *A) {
1014     return true; 
1015   }
1016   bool TraverseOMPCaptureKindAttr(OMPCaptureKindAttr *A);
1017   bool VisitOMPCaptureKindAttr(OMPCaptureKindAttr *A) {
1018     return true; 
1019   }
1020   bool TraverseOMPCaptureNoInitAttr(OMPCaptureNoInitAttr *A);
1021   bool VisitOMPCaptureNoInitAttr(OMPCaptureNoInitAttr *A) {
1022     return true; 
1023   }
1024   bool TraverseOMPDeclareSimdDeclAttr(OMPDeclareSimdDeclAttr *A);
1025   bool VisitOMPDeclareSimdDeclAttr(OMPDeclareSimdDeclAttr *A) {
1026     return true; 
1027   }
1028   bool TraverseOMPDeclareTargetDeclAttr(OMPDeclareTargetDeclAttr *A);
1029   bool VisitOMPDeclareTargetDeclAttr(OMPDeclareTargetDeclAttr *A) {
1030     return true; 
1031   }
1032   bool TraverseOMPDeclareVariantAttr(OMPDeclareVariantAttr *A);
1033   bool VisitOMPDeclareVariantAttr(OMPDeclareVariantAttr *A) {
1034     return true; 
1035   }
1036   bool TraverseOMPReferencedVarAttr(OMPReferencedVarAttr *A);
1037   bool VisitOMPReferencedVarAttr(OMPReferencedVarAttr *A) {
1038     return true; 
1039   }
1040   bool TraverseOMPThreadPrivateDeclAttr(OMPThreadPrivateDeclAttr *A);
1041   bool VisitOMPThreadPrivateDeclAttr(OMPThreadPrivateDeclAttr *A) {
1042     return true; 
1043   }
1044   bool TraverseOSConsumedAttr(OSConsumedAttr *A);
1045   bool VisitOSConsumedAttr(OSConsumedAttr *A) {
1046     return true; 
1047   }
1048   bool TraverseOSConsumesThisAttr(OSConsumesThisAttr *A);
1049   bool VisitOSConsumesThisAttr(OSConsumesThisAttr *A) {
1050     return true; 
1051   }
1052   bool TraverseOSReturnsNotRetainedAttr(OSReturnsNotRetainedAttr *A);
1053   bool VisitOSReturnsNotRetainedAttr(OSReturnsNotRetainedAttr *A) {
1054     return true; 
1055   }
1056   bool TraverseOSReturnsRetainedAttr(OSReturnsRetainedAttr *A);
1057   bool VisitOSReturnsRetainedAttr(OSReturnsRetainedAttr *A) {
1058     return true; 
1059   }
1060   bool TraverseOSReturnsRetainedOnNonZeroAttr(OSReturnsRetainedOnNonZeroAttr *A);
1061   bool VisitOSReturnsRetainedOnNonZeroAttr(OSReturnsRetainedOnNonZeroAttr *A) {
1062     return true; 
1063   }
1064   bool TraverseOSReturnsRetainedOnZeroAttr(OSReturnsRetainedOnZeroAttr *A);
1065   bool VisitOSReturnsRetainedOnZeroAttr(OSReturnsRetainedOnZeroAttr *A) {
1066     return true; 
1067   }
1068   bool TraverseObjCBoxableAttr(ObjCBoxableAttr *A);
1069   bool VisitObjCBoxableAttr(ObjCBoxableAttr *A) {
1070     return true; 
1071   }
1072   bool TraverseObjCBridgeAttr(ObjCBridgeAttr *A);
1073   bool VisitObjCBridgeAttr(ObjCBridgeAttr *A) {
1074     return true; 
1075   }
1076   bool TraverseObjCBridgeMutableAttr(ObjCBridgeMutableAttr *A);
1077   bool VisitObjCBridgeMutableAttr(ObjCBridgeMutableAttr *A) {
1078     return true; 
1079   }
1080   bool TraverseObjCBridgeRelatedAttr(ObjCBridgeRelatedAttr *A);
1081   bool VisitObjCBridgeRelatedAttr(ObjCBridgeRelatedAttr *A) {
1082     return true; 
1083   }
1084   bool TraverseObjCClassStubAttr(ObjCClassStubAttr *A);
1085   bool VisitObjCClassStubAttr(ObjCClassStubAttr *A) {
1086     return true; 
1087   }
1088   bool TraverseObjCDesignatedInitializerAttr(ObjCDesignatedInitializerAttr *A);
1089   bool VisitObjCDesignatedInitializerAttr(ObjCDesignatedInitializerAttr *A) {
1090     return true; 
1091   }
1092   bool TraverseObjCDirectAttr(ObjCDirectAttr *A);
1093   bool VisitObjCDirectAttr(ObjCDirectAttr *A) {
1094     return true; 
1095   }
1096   bool TraverseObjCDirectMembersAttr(ObjCDirectMembersAttr *A);
1097   bool VisitObjCDirectMembersAttr(ObjCDirectMembersAttr *A) {
1098     return true; 
1099   }
1100   bool TraverseObjCExceptionAttr(ObjCExceptionAttr *A);
1101   bool VisitObjCExceptionAttr(ObjCExceptionAttr *A) {
1102     return true; 
1103   }
1104   bool TraverseObjCExplicitProtocolImplAttr(ObjCExplicitProtocolImplAttr *A);
1105   bool VisitObjCExplicitProtocolImplAttr(ObjCExplicitProtocolImplAttr *A) {
1106     return true; 
1107   }
1108   bool TraverseObjCExternallyRetainedAttr(ObjCExternallyRetainedAttr *A);
1109   bool VisitObjCExternallyRetainedAttr(ObjCExternallyRetainedAttr *A) {
1110     return true; 
1111   }
1112   bool TraverseObjCGCAttr(ObjCGCAttr *A);
1113   bool VisitObjCGCAttr(ObjCGCAttr *A) {
1114     return true; 
1115   }
1116   bool TraverseObjCIndependentClassAttr(ObjCIndependentClassAttr *A);
1117   bool VisitObjCIndependentClassAttr(ObjCIndependentClassAttr *A) {
1118     return true; 
1119   }
1120   bool TraverseObjCInertUnsafeUnretainedAttr(ObjCInertUnsafeUnretainedAttr *A);
1121   bool VisitObjCInertUnsafeUnretainedAttr(ObjCInertUnsafeUnretainedAttr *A) {
1122     return true; 
1123   }
1124   bool TraverseObjCKindOfAttr(ObjCKindOfAttr *A);
1125   bool VisitObjCKindOfAttr(ObjCKindOfAttr *A) {
1126     return true; 
1127   }
1128   bool TraverseObjCMethodFamilyAttr(ObjCMethodFamilyAttr *A);
1129   bool VisitObjCMethodFamilyAttr(ObjCMethodFamilyAttr *A) {
1130     return true; 
1131   }
1132   bool TraverseObjCNSObjectAttr(ObjCNSObjectAttr *A);
1133   bool VisitObjCNSObjectAttr(ObjCNSObjectAttr *A) {
1134     return true; 
1135   }
1136   bool TraverseObjCNonLazyClassAttr(ObjCNonLazyClassAttr *A);
1137   bool VisitObjCNonLazyClassAttr(ObjCNonLazyClassAttr *A) {
1138     return true; 
1139   }
1140   bool TraverseObjCNonRuntimeProtocolAttr(ObjCNonRuntimeProtocolAttr *A);
1141   bool VisitObjCNonRuntimeProtocolAttr(ObjCNonRuntimeProtocolAttr *A) {
1142     return true; 
1143   }
1144   bool TraverseObjCOwnershipAttr(ObjCOwnershipAttr *A);
1145   bool VisitObjCOwnershipAttr(ObjCOwnershipAttr *A) {
1146     return true; 
1147   }
1148   bool TraverseObjCPreciseLifetimeAttr(ObjCPreciseLifetimeAttr *A);
1149   bool VisitObjCPreciseLifetimeAttr(ObjCPreciseLifetimeAttr *A) {
1150     return true; 
1151   }
1152   bool TraverseObjCRequiresPropertyDefsAttr(ObjCRequiresPropertyDefsAttr *A);
1153   bool VisitObjCRequiresPropertyDefsAttr(ObjCRequiresPropertyDefsAttr *A) {
1154     return true; 
1155   }
1156   bool TraverseObjCRequiresSuperAttr(ObjCRequiresSuperAttr *A);
1157   bool VisitObjCRequiresSuperAttr(ObjCRequiresSuperAttr *A) {
1158     return true; 
1159   }
1160   bool TraverseObjCReturnsInnerPointerAttr(ObjCReturnsInnerPointerAttr *A);
1161   bool VisitObjCReturnsInnerPointerAttr(ObjCReturnsInnerPointerAttr *A) {
1162     return true; 
1163   }
1164   bool TraverseObjCRootClassAttr(ObjCRootClassAttr *A);
1165   bool VisitObjCRootClassAttr(ObjCRootClassAttr *A) {
1166     return true; 
1167   }
1168   bool TraverseObjCRuntimeNameAttr(ObjCRuntimeNameAttr *A);
1169   bool VisitObjCRuntimeNameAttr(ObjCRuntimeNameAttr *A) {
1170     return true; 
1171   }
1172   bool TraverseObjCRuntimeVisibleAttr(ObjCRuntimeVisibleAttr *A);
1173   bool VisitObjCRuntimeVisibleAttr(ObjCRuntimeVisibleAttr *A) {
1174     return true; 
1175   }
1176   bool TraverseObjCSubclassingRestrictedAttr(ObjCSubclassingRestrictedAttr *A);
1177   bool VisitObjCSubclassingRestrictedAttr(ObjCSubclassingRestrictedAttr *A) {
1178     return true; 
1179   }
1180   bool TraverseOpenCLAccessAttr(OpenCLAccessAttr *A);
1181   bool VisitOpenCLAccessAttr(OpenCLAccessAttr *A) {
1182     return true; 
1183   }
1184   bool TraverseOpenCLConstantAddressSpaceAttr(OpenCLConstantAddressSpaceAttr *A);
1185   bool VisitOpenCLConstantAddressSpaceAttr(OpenCLConstantAddressSpaceAttr *A) {
1186     return true; 
1187   }
1188   bool TraverseOpenCLGenericAddressSpaceAttr(OpenCLGenericAddressSpaceAttr *A);
1189   bool VisitOpenCLGenericAddressSpaceAttr(OpenCLGenericAddressSpaceAttr *A) {
1190     return true; 
1191   }
1192   bool TraverseOpenCLGlobalAddressSpaceAttr(OpenCLGlobalAddressSpaceAttr *A);
1193   bool VisitOpenCLGlobalAddressSpaceAttr(OpenCLGlobalAddressSpaceAttr *A) {
1194     return true; 
1195   }
1196   bool TraverseOpenCLGlobalDeviceAddressSpaceAttr(OpenCLGlobalDeviceAddressSpaceAttr *A);
1197   bool VisitOpenCLGlobalDeviceAddressSpaceAttr(OpenCLGlobalDeviceAddressSpaceAttr *A) {
1198     return true; 
1199   }
1200   bool TraverseOpenCLGlobalHostAddressSpaceAttr(OpenCLGlobalHostAddressSpaceAttr *A);
1201   bool VisitOpenCLGlobalHostAddressSpaceAttr(OpenCLGlobalHostAddressSpaceAttr *A) {
1202     return true; 
1203   }
1204   bool TraverseOpenCLIntelReqdSubGroupSizeAttr(OpenCLIntelReqdSubGroupSizeAttr *A);
1205   bool VisitOpenCLIntelReqdSubGroupSizeAttr(OpenCLIntelReqdSubGroupSizeAttr *A) {
1206     return true; 
1207   }
1208   bool TraverseOpenCLKernelAttr(OpenCLKernelAttr *A);
1209   bool VisitOpenCLKernelAttr(OpenCLKernelAttr *A) {
1210     return true; 
1211   }
1212   bool TraverseOpenCLLocalAddressSpaceAttr(OpenCLLocalAddressSpaceAttr *A);
1213   bool VisitOpenCLLocalAddressSpaceAttr(OpenCLLocalAddressSpaceAttr *A) {
1214     return true; 
1215   }
1216   bool TraverseOpenCLPrivateAddressSpaceAttr(OpenCLPrivateAddressSpaceAttr *A);
1217   bool VisitOpenCLPrivateAddressSpaceAttr(OpenCLPrivateAddressSpaceAttr *A) {
1218     return true; 
1219   }
1220   bool TraverseOpenCLUnrollHintAttr(OpenCLUnrollHintAttr *A);
1221   bool VisitOpenCLUnrollHintAttr(OpenCLUnrollHintAttr *A) {
1222     return true; 
1223   }
1224   bool TraverseOptimizeNoneAttr(OptimizeNoneAttr *A);
1225   bool VisitOptimizeNoneAttr(OptimizeNoneAttr *A) {
1226     return true; 
1227   }
1228   bool TraverseOverloadableAttr(OverloadableAttr *A);
1229   bool VisitOverloadableAttr(OverloadableAttr *A) {
1230     return true; 
1231   }
1232   bool TraverseOverrideAttr(OverrideAttr *A);
1233   bool VisitOverrideAttr(OverrideAttr *A) {
1234     return true; 
1235   }
1236   bool TraverseOwnerAttr(OwnerAttr *A);
1237   bool VisitOwnerAttr(OwnerAttr *A) {
1238     return true; 
1239   }
1240   bool TraverseOwnershipAttr(OwnershipAttr *A);
1241   bool VisitOwnershipAttr(OwnershipAttr *A) {
1242     return true; 
1243   }
1244   bool TraversePackedAttr(PackedAttr *A);
1245   bool VisitPackedAttr(PackedAttr *A) {
1246     return true; 
1247   }
1248   bool TraverseParamTypestateAttr(ParamTypestateAttr *A);
1249   bool VisitParamTypestateAttr(ParamTypestateAttr *A) {
1250     return true; 
1251   }
1252   bool TraversePascalAttr(PascalAttr *A);
1253   bool VisitPascalAttr(PascalAttr *A) {
1254     return true; 
1255   }
1256   bool TraversePassObjectSizeAttr(PassObjectSizeAttr *A);
1257   bool VisitPassObjectSizeAttr(PassObjectSizeAttr *A) {
1258     return true; 
1259   }
1260   bool TraversePatchableFunctionEntryAttr(PatchableFunctionEntryAttr *A);
1261   bool VisitPatchableFunctionEntryAttr(PatchableFunctionEntryAttr *A) {
1262     return true; 
1263   }
1264   bool TraversePcsAttr(PcsAttr *A);
1265   bool VisitPcsAttr(PcsAttr *A) {
1266     return true; 
1267   }
1268   bool TraversePointerAttr(PointerAttr *A);
1269   bool VisitPointerAttr(PointerAttr *A) {
1270     return true; 
1271   }
1272   bool TraversePragmaClangBSSSectionAttr(PragmaClangBSSSectionAttr *A);
1273   bool VisitPragmaClangBSSSectionAttr(PragmaClangBSSSectionAttr *A) {
1274     return true; 
1275   }
1276   bool TraversePragmaClangDataSectionAttr(PragmaClangDataSectionAttr *A);
1277   bool VisitPragmaClangDataSectionAttr(PragmaClangDataSectionAttr *A) {
1278     return true; 
1279   }
1280   bool TraversePragmaClangRelroSectionAttr(PragmaClangRelroSectionAttr *A);
1281   bool VisitPragmaClangRelroSectionAttr(PragmaClangRelroSectionAttr *A) {
1282     return true; 
1283   }
1284   bool TraversePragmaClangRodataSectionAttr(PragmaClangRodataSectionAttr *A);
1285   bool VisitPragmaClangRodataSectionAttr(PragmaClangRodataSectionAttr *A) {
1286     return true; 
1287   }
1288   bool TraversePragmaClangTextSectionAttr(PragmaClangTextSectionAttr *A);
1289   bool VisitPragmaClangTextSectionAttr(PragmaClangTextSectionAttr *A) {
1290     return true; 
1291   }
1292   bool TraversePreferredNameAttr(PreferredNameAttr *A);
1293   bool VisitPreferredNameAttr(PreferredNameAttr *A) {
1294     return true; 
1295   }
1296   bool TraversePreferredTypeAttr(PreferredTypeAttr *A);
1297   bool VisitPreferredTypeAttr(PreferredTypeAttr *A) {
1298     return true; 
1299   }
1300   bool TraversePreserveAllAttr(PreserveAllAttr *A);
1301   bool VisitPreserveAllAttr(PreserveAllAttr *A) {
1302     return true; 
1303   }
1304   bool TraversePreserveMostAttr(PreserveMostAttr *A);
1305   bool VisitPreserveMostAttr(PreserveMostAttr *A) {
1306     return true; 
1307   }
1308   bool TraversePreserveNoneAttr(PreserveNoneAttr *A);
1309   bool VisitPreserveNoneAttr(PreserveNoneAttr *A) {
1310     return true; 
1311   }
1312   bool TraversePtGuardedByAttr(PtGuardedByAttr *A);
1313   bool VisitPtGuardedByAttr(PtGuardedByAttr *A) {
1314     return true; 
1315   }
1316   bool TraversePtGuardedVarAttr(PtGuardedVarAttr *A);
1317   bool VisitPtGuardedVarAttr(PtGuardedVarAttr *A) {
1318     return true; 
1319   }
1320   bool TraversePtr32Attr(Ptr32Attr *A);
1321   bool VisitPtr32Attr(Ptr32Attr *A) {
1322     return true; 
1323   }
1324   bool TraversePtr64Attr(Ptr64Attr *A);
1325   bool VisitPtr64Attr(Ptr64Attr *A) {
1326     return true; 
1327   }
1328   bool TraversePureAttr(PureAttr *A);
1329   bool VisitPureAttr(PureAttr *A) {
1330     return true; 
1331   }
1332   bool TraverseRISCVInterruptAttr(RISCVInterruptAttr *A);
1333   bool VisitRISCVInterruptAttr(RISCVInterruptAttr *A) {
1334     return true; 
1335   }
1336   bool TraverseRISCVVectorCCAttr(RISCVVectorCCAttr *A);
1337   bool VisitRISCVVectorCCAttr(RISCVVectorCCAttr *A) {
1338     return true; 
1339   }
1340   bool TraverseRandomizeLayoutAttr(RandomizeLayoutAttr *A);
1341   bool VisitRandomizeLayoutAttr(RandomizeLayoutAttr *A) {
1342     return true; 
1343   }
1344   bool TraverseReadOnlyPlacementAttr(ReadOnlyPlacementAttr *A);
1345   bool VisitReadOnlyPlacementAttr(ReadOnlyPlacementAttr *A) {
1346     return true; 
1347   }
1348   bool TraverseRegCallAttr(RegCallAttr *A);
1349   bool VisitRegCallAttr(RegCallAttr *A) {
1350     return true; 
1351   }
1352   bool TraverseReinitializesAttr(ReinitializesAttr *A);
1353   bool VisitReinitializesAttr(ReinitializesAttr *A) {
1354     return true; 
1355   }
1356   bool TraverseReleaseCapabilityAttr(ReleaseCapabilityAttr *A);
1357   bool VisitReleaseCapabilityAttr(ReleaseCapabilityAttr *A) {
1358     return true; 
1359   }
1360   bool TraverseReleaseHandleAttr(ReleaseHandleAttr *A);
1361   bool VisitReleaseHandleAttr(ReleaseHandleAttr *A) {
1362     return true; 
1363   }
1364   bool TraverseReqdWorkGroupSizeAttr(ReqdWorkGroupSizeAttr *A);
1365   bool VisitReqdWorkGroupSizeAttr(ReqdWorkGroupSizeAttr *A) {
1366     return true; 
1367   }
1368   bool TraverseRequiresCapabilityAttr(RequiresCapabilityAttr *A);
1369   bool VisitRequiresCapabilityAttr(RequiresCapabilityAttr *A) {
1370     return true; 
1371   }
1372   bool TraverseRestrictAttr(RestrictAttr *A);
1373   bool VisitRestrictAttr(RestrictAttr *A) {
1374     return true; 
1375   }
1376   bool TraverseRetainAttr(RetainAttr *A);
1377   bool VisitRetainAttr(RetainAttr *A) {
1378     return true; 
1379   }
1380   bool TraverseReturnTypestateAttr(ReturnTypestateAttr *A);
1381   bool VisitReturnTypestateAttr(ReturnTypestateAttr *A) {
1382     return true; 
1383   }
1384   bool TraverseReturnsNonNullAttr(ReturnsNonNullAttr *A);
1385   bool VisitReturnsNonNullAttr(ReturnsNonNullAttr *A) {
1386     return true; 
1387   }
1388   bool TraverseReturnsTwiceAttr(ReturnsTwiceAttr *A);
1389   bool VisitReturnsTwiceAttr(ReturnsTwiceAttr *A) {
1390     return true; 
1391   }
1392   bool TraverseSPtrAttr(SPtrAttr *A);
1393   bool VisitSPtrAttr(SPtrAttr *A) {
1394     return true; 
1395   }
1396   bool TraverseSYCLKernelAttr(SYCLKernelAttr *A);
1397   bool VisitSYCLKernelAttr(SYCLKernelAttr *A) {
1398     return true; 
1399   }
1400   bool TraverseSYCLKernelEntryPointAttr(SYCLKernelEntryPointAttr *A);
1401   bool VisitSYCLKernelEntryPointAttr(SYCLKernelEntryPointAttr *A) {
1402     return true; 
1403   }
1404   bool TraverseSYCLSpecialClassAttr(SYCLSpecialClassAttr *A);
1405   bool VisitSYCLSpecialClassAttr(SYCLSpecialClassAttr *A) {
1406     return true; 
1407   }
1408   bool TraverseScopedLockableAttr(ScopedLockableAttr *A);
1409   bool VisitScopedLockableAttr(ScopedLockableAttr *A) {
1410     return true; 
1411   }
1412   bool TraverseSectionAttr(SectionAttr *A);
1413   bool VisitSectionAttr(SectionAttr *A) {
1414     return true; 
1415   }
1416   bool TraverseSelectAnyAttr(SelectAnyAttr *A);
1417   bool VisitSelectAnyAttr(SelectAnyAttr *A) {
1418     return true; 
1419   }
1420   bool TraverseSentinelAttr(SentinelAttr *A);
1421   bool VisitSentinelAttr(SentinelAttr *A) {
1422     return true; 
1423   }
1424   bool TraverseSetTypestateAttr(SetTypestateAttr *A);
1425   bool VisitSetTypestateAttr(SetTypestateAttr *A) {
1426     return true; 
1427   }
1428   bool TraverseSharedTrylockFunctionAttr(SharedTrylockFunctionAttr *A);
1429   bool VisitSharedTrylockFunctionAttr(SharedTrylockFunctionAttr *A) {
1430     return true; 
1431   }
1432   bool TraverseSizedByAttr(SizedByAttr *A);
1433   bool VisitSizedByAttr(SizedByAttr *A) {
1434     return true; 
1435   }
1436   bool TraverseSizedByOrNullAttr(SizedByOrNullAttr *A);
1437   bool VisitSizedByOrNullAttr(SizedByOrNullAttr *A) {
1438     return true; 
1439   }
1440   bool TraverseSpeculativeLoadHardeningAttr(SpeculativeLoadHardeningAttr *A);
1441   bool VisitSpeculativeLoadHardeningAttr(SpeculativeLoadHardeningAttr *A) {
1442     return true; 
1443   }
1444   bool TraverseStandaloneDebugAttr(StandaloneDebugAttr *A);
1445   bool VisitStandaloneDebugAttr(StandaloneDebugAttr *A) {
1446     return true; 
1447   }
1448   bool TraverseStdCallAttr(StdCallAttr *A);
1449   bool VisitStdCallAttr(StdCallAttr *A) {
1450     return true; 
1451   }
1452   bool TraverseStrictFPAttr(StrictFPAttr *A);
1453   bool VisitStrictFPAttr(StrictFPAttr *A) {
1454     return true; 
1455   }
1456   bool TraverseStrictGuardStackCheckAttr(StrictGuardStackCheckAttr *A);
1457   bool VisitStrictGuardStackCheckAttr(StrictGuardStackCheckAttr *A) {
1458     return true; 
1459   }
1460   bool TraverseSuppressAttr(SuppressAttr *A);
1461   bool VisitSuppressAttr(SuppressAttr *A) {
1462     return true; 
1463   }
1464   bool TraverseSwiftAsyncAttr(SwiftAsyncAttr *A);
1465   bool VisitSwiftAsyncAttr(SwiftAsyncAttr *A) {
1466     return true; 
1467   }
1468   bool TraverseSwiftAsyncCallAttr(SwiftAsyncCallAttr *A);
1469   bool VisitSwiftAsyncCallAttr(SwiftAsyncCallAttr *A) {
1470     return true; 
1471   }
1472   bool TraverseSwiftAsyncContextAttr(SwiftAsyncContextAttr *A);
1473   bool VisitSwiftAsyncContextAttr(SwiftAsyncContextAttr *A) {
1474     return true; 
1475   }
1476   bool TraverseSwiftAsyncErrorAttr(SwiftAsyncErrorAttr *A);
1477   bool VisitSwiftAsyncErrorAttr(SwiftAsyncErrorAttr *A) {
1478     return true; 
1479   }
1480   bool TraverseSwiftAsyncNameAttr(SwiftAsyncNameAttr *A);
1481   bool VisitSwiftAsyncNameAttr(SwiftAsyncNameAttr *A) {
1482     return true; 
1483   }
1484   bool TraverseSwiftAttrAttr(SwiftAttrAttr *A);
1485   bool VisitSwiftAttrAttr(SwiftAttrAttr *A) {
1486     return true; 
1487   }
1488   bool TraverseSwiftBridgeAttr(SwiftBridgeAttr *A);
1489   bool VisitSwiftBridgeAttr(SwiftBridgeAttr *A) {
1490     return true; 
1491   }
1492   bool TraverseSwiftBridgedTypedefAttr(SwiftBridgedTypedefAttr *A);
1493   bool VisitSwiftBridgedTypedefAttr(SwiftBridgedTypedefAttr *A) {
1494     return true; 
1495   }
1496   bool TraverseSwiftCallAttr(SwiftCallAttr *A);
1497   bool VisitSwiftCallAttr(SwiftCallAttr *A) {
1498     return true; 
1499   }
1500   bool TraverseSwiftContextAttr(SwiftContextAttr *A);
1501   bool VisitSwiftContextAttr(SwiftContextAttr *A) {
1502     return true; 
1503   }
1504   bool TraverseSwiftErrorAttr(SwiftErrorAttr *A);
1505   bool VisitSwiftErrorAttr(SwiftErrorAttr *A) {
1506     return true; 
1507   }
1508   bool TraverseSwiftErrorResultAttr(SwiftErrorResultAttr *A);
1509   bool VisitSwiftErrorResultAttr(SwiftErrorResultAttr *A) {
1510     return true; 
1511   }
1512   bool TraverseSwiftImportAsNonGenericAttr(SwiftImportAsNonGenericAttr *A);
1513   bool VisitSwiftImportAsNonGenericAttr(SwiftImportAsNonGenericAttr *A) {
1514     return true; 
1515   }
1516   bool TraverseSwiftImportPropertyAsAccessorsAttr(SwiftImportPropertyAsAccessorsAttr *A);
1517   bool VisitSwiftImportPropertyAsAccessorsAttr(SwiftImportPropertyAsAccessorsAttr *A) {
1518     return true; 
1519   }
1520   bool TraverseSwiftIndirectResultAttr(SwiftIndirectResultAttr *A);
1521   bool VisitSwiftIndirectResultAttr(SwiftIndirectResultAttr *A) {
1522     return true; 
1523   }
1524   bool TraverseSwiftNameAttr(SwiftNameAttr *A);
1525   bool VisitSwiftNameAttr(SwiftNameAttr *A) {
1526     return true; 
1527   }
1528   bool TraverseSwiftNewTypeAttr(SwiftNewTypeAttr *A);
1529   bool VisitSwiftNewTypeAttr(SwiftNewTypeAttr *A) {
1530     return true; 
1531   }
1532   bool TraverseSwiftObjCMembersAttr(SwiftObjCMembersAttr *A);
1533   bool VisitSwiftObjCMembersAttr(SwiftObjCMembersAttr *A) {
1534     return true; 
1535   }
1536   bool TraverseSwiftPrivateAttr(SwiftPrivateAttr *A);
1537   bool VisitSwiftPrivateAttr(SwiftPrivateAttr *A) {
1538     return true; 
1539   }
1540   bool TraverseSwiftVersionedAdditionAttr(SwiftVersionedAdditionAttr *A);
1541   bool VisitSwiftVersionedAdditionAttr(SwiftVersionedAdditionAttr *A) {
1542     return true; 
1543   }
1544   bool TraverseSwiftVersionedRemovalAttr(SwiftVersionedRemovalAttr *A);
1545   bool VisitSwiftVersionedRemovalAttr(SwiftVersionedRemovalAttr *A) {
1546     return true; 
1547   }
1548   bool TraverseSysVABIAttr(SysVABIAttr *A);
1549   bool VisitSysVABIAttr(SysVABIAttr *A) {
1550     return true; 
1551   }
1552   bool TraverseTLSModelAttr(TLSModelAttr *A);
1553   bool VisitTLSModelAttr(TLSModelAttr *A) {
1554     return true; 
1555   }
1556   bool TraverseTargetAttr(TargetAttr *A);
1557   bool VisitTargetAttr(TargetAttr *A) {
1558     return true; 
1559   }
1560   bool TraverseTargetClonesAttr(TargetClonesAttr *A);
1561   bool VisitTargetClonesAttr(TargetClonesAttr *A) {
1562     return true; 
1563   }
1564   bool TraverseTargetVersionAttr(TargetVersionAttr *A);
1565   bool VisitTargetVersionAttr(TargetVersionAttr *A) {
1566     return true; 
1567   }
1568   bool TraverseTestTypestateAttr(TestTypestateAttr *A);
1569   bool VisitTestTypestateAttr(TestTypestateAttr *A) {
1570     return true; 
1571   }
1572   bool TraverseThisCallAttr(ThisCallAttr *A);
1573   bool VisitThisCallAttr(ThisCallAttr *A) {
1574     return true; 
1575   }
1576   bool TraverseThreadAttr(ThreadAttr *A);
1577   bool VisitThreadAttr(ThreadAttr *A) {
1578     return true; 
1579   }
1580   bool TraverseTransparentUnionAttr(TransparentUnionAttr *A);
1581   bool VisitTransparentUnionAttr(TransparentUnionAttr *A) {
1582     return true; 
1583   }
1584   bool TraverseTrivialABIAttr(TrivialABIAttr *A);
1585   bool VisitTrivialABIAttr(TrivialABIAttr *A) {
1586     return true; 
1587   }
1588   bool TraverseTryAcquireCapabilityAttr(TryAcquireCapabilityAttr *A);
1589   bool VisitTryAcquireCapabilityAttr(TryAcquireCapabilityAttr *A) {
1590     return true; 
1591   }
1592   bool TraverseTypeNonNullAttr(TypeNonNullAttr *A);
1593   bool VisitTypeNonNullAttr(TypeNonNullAttr *A) {
1594     return true; 
1595   }
1596   bool TraverseTypeNullUnspecifiedAttr(TypeNullUnspecifiedAttr *A);
1597   bool VisitTypeNullUnspecifiedAttr(TypeNullUnspecifiedAttr *A) {
1598     return true; 
1599   }
1600   bool TraverseTypeNullableAttr(TypeNullableAttr *A);
1601   bool VisitTypeNullableAttr(TypeNullableAttr *A) {
1602     return true; 
1603   }
1604   bool TraverseTypeNullableResultAttr(TypeNullableResultAttr *A);
1605   bool VisitTypeNullableResultAttr(TypeNullableResultAttr *A) {
1606     return true; 
1607   }
1608   bool TraverseTypeTagForDatatypeAttr(TypeTagForDatatypeAttr *A);
1609   bool VisitTypeTagForDatatypeAttr(TypeTagForDatatypeAttr *A) {
1610     return true; 
1611   }
1612   bool TraverseTypeVisibilityAttr(TypeVisibilityAttr *A);
1613   bool VisitTypeVisibilityAttr(TypeVisibilityAttr *A) {
1614     return true; 
1615   }
1616   bool TraverseUPtrAttr(UPtrAttr *A);
1617   bool VisitUPtrAttr(UPtrAttr *A) {
1618     return true; 
1619   }
1620   bool TraverseUnavailableAttr(UnavailableAttr *A);
1621   bool VisitUnavailableAttr(UnavailableAttr *A) {
1622     return true; 
1623   }
1624   bool TraverseUninitializedAttr(UninitializedAttr *A);
1625   bool VisitUninitializedAttr(UninitializedAttr *A) {
1626     return true; 
1627   }
1628   bool TraverseUnlikelyAttr(UnlikelyAttr *A);
1629   bool VisitUnlikelyAttr(UnlikelyAttr *A) {
1630     return true; 
1631   }
1632   bool TraverseUnsafeBufferUsageAttr(UnsafeBufferUsageAttr *A);
1633   bool VisitUnsafeBufferUsageAttr(UnsafeBufferUsageAttr *A) {
1634     return true; 
1635   }
1636   bool TraverseUnusedAttr(UnusedAttr *A);
1637   bool VisitUnusedAttr(UnusedAttr *A) {
1638     return true; 
1639   }
1640   bool TraverseUseHandleAttr(UseHandleAttr *A);
1641   bool VisitUseHandleAttr(UseHandleAttr *A) {
1642     return true; 
1643   }
1644   bool TraverseUsedAttr(UsedAttr *A);
1645   bool VisitUsedAttr(UsedAttr *A) {
1646     return true; 
1647   }
1648   bool TraverseUsingIfExistsAttr(UsingIfExistsAttr *A);
1649   bool VisitUsingIfExistsAttr(UsingIfExistsAttr *A) {
1650     return true; 
1651   }
1652   bool TraverseUuidAttr(UuidAttr *A);
1653   bool VisitUuidAttr(UuidAttr *A) {
1654     return true; 
1655   }
1656   bool TraverseVTablePointerAuthenticationAttr(VTablePointerAuthenticationAttr *A);
1657   bool VisitVTablePointerAuthenticationAttr(VTablePointerAuthenticationAttr *A) {
1658     return true; 
1659   }
1660   bool TraverseVecReturnAttr(VecReturnAttr *A);
1661   bool VisitVecReturnAttr(VecReturnAttr *A) {
1662     return true; 
1663   }
1664   bool TraverseVecTypeHintAttr(VecTypeHintAttr *A);
1665   bool VisitVecTypeHintAttr(VecTypeHintAttr *A) {
1666     return true; 
1667   }
1668   bool TraverseVectorCallAttr(VectorCallAttr *A);
1669   bool VisitVectorCallAttr(VectorCallAttr *A) {
1670     return true; 
1671   }
1672   bool TraverseVisibilityAttr(VisibilityAttr *A);
1673   bool VisitVisibilityAttr(VisibilityAttr *A) {
1674     return true; 
1675   }
1676   bool TraverseWarnUnusedAttr(WarnUnusedAttr *A);
1677   bool VisitWarnUnusedAttr(WarnUnusedAttr *A) {
1678     return true; 
1679   }
1680   bool TraverseWarnUnusedResultAttr(WarnUnusedResultAttr *A);
1681   bool VisitWarnUnusedResultAttr(WarnUnusedResultAttr *A) {
1682     return true; 
1683   }
1684   bool TraverseWeakAttr(WeakAttr *A);
1685   bool VisitWeakAttr(WeakAttr *A) {
1686     return true; 
1687   }
1688   bool TraverseWeakImportAttr(WeakImportAttr *A);
1689   bool VisitWeakImportAttr(WeakImportAttr *A) {
1690     return true; 
1691   }
1692   bool TraverseWeakRefAttr(WeakRefAttr *A);
1693   bool VisitWeakRefAttr(WeakRefAttr *A) {
1694     return true; 
1695   }
1696   bool TraverseWebAssemblyExportNameAttr(WebAssemblyExportNameAttr *A);
1697   bool VisitWebAssemblyExportNameAttr(WebAssemblyExportNameAttr *A) {
1698     return true; 
1699   }
1700   bool TraverseWebAssemblyFuncrefAttr(WebAssemblyFuncrefAttr *A);
1701   bool VisitWebAssemblyFuncrefAttr(WebAssemblyFuncrefAttr *A) {
1702     return true; 
1703   }
1704   bool TraverseWebAssemblyImportModuleAttr(WebAssemblyImportModuleAttr *A);
1705   bool VisitWebAssemblyImportModuleAttr(WebAssemblyImportModuleAttr *A) {
1706     return true; 
1707   }
1708   bool TraverseWebAssemblyImportNameAttr(WebAssemblyImportNameAttr *A);
1709   bool VisitWebAssemblyImportNameAttr(WebAssemblyImportNameAttr *A) {
1710     return true; 
1711   }
1712   bool TraverseWorkGroupSizeHintAttr(WorkGroupSizeHintAttr *A);
1713   bool VisitWorkGroupSizeHintAttr(WorkGroupSizeHintAttr *A) {
1714     return true; 
1715   }
1716   bool TraverseX86ForceAlignArgPointerAttr(X86ForceAlignArgPointerAttr *A);
1717   bool VisitX86ForceAlignArgPointerAttr(X86ForceAlignArgPointerAttr *A) {
1718     return true; 
1719   }
1720   bool TraverseXRayInstrumentAttr(XRayInstrumentAttr *A);
1721   bool VisitXRayInstrumentAttr(XRayInstrumentAttr *A) {
1722     return true; 
1723   }
1724   bool TraverseXRayLogArgsAttr(XRayLogArgsAttr *A);
1725   bool VisitXRayLogArgsAttr(XRayLogArgsAttr *A) {
1726     return true; 
1727   }
1728   bool TraverseZeroCallUsedRegsAttr(ZeroCallUsedRegsAttr *A);
1729   bool VisitZeroCallUsedRegsAttr(ZeroCallUsedRegsAttr *A) {
1730     return true; 
1731   }
1732 
1733 #else // ATTR_VISITOR_DECLS_ONLY
1734 
1735 template <typename Derived>
1736 bool VISITORCLASS<Derived>::TraverseAArch64SVEPcsAttr(AArch64SVEPcsAttr *A) {
1737   if (!getDerived().VisitAttr(A))
1738     return false;
1739   if (!getDerived().VisitAArch64SVEPcsAttr(A))
1740     return false;
1741   return true;
1742 }
1743 
1744 template <typename Derived>
1745 bool VISITORCLASS<Derived>::TraverseAArch64VectorPcsAttr(AArch64VectorPcsAttr *A) {
1746   if (!getDerived().VisitAttr(A))
1747     return false;
1748   if (!getDerived().VisitAArch64VectorPcsAttr(A))
1749     return false;
1750   return true;
1751 }
1752 
1753 template <typename Derived>
1754 bool VISITORCLASS<Derived>::TraverseAMDGPUFlatWorkGroupSizeAttr(AMDGPUFlatWorkGroupSizeAttr *A) {
1755   if (!getDerived().VisitAttr(A))
1756     return false;
1757   if (!getDerived().VisitAMDGPUFlatWorkGroupSizeAttr(A))
1758     return false;
1759   if (!getDerived().TraverseStmt(A->getMin()))
1760     return false;
1761   if (!getDerived().TraverseStmt(A->getMax()))
1762     return false;
1763   return true;
1764 }
1765 
1766 template <typename Derived>
1767 bool VISITORCLASS<Derived>::TraverseAMDGPUKernelCallAttr(AMDGPUKernelCallAttr *A) {
1768   if (!getDerived().VisitAttr(A))
1769     return false;
1770   if (!getDerived().VisitAMDGPUKernelCallAttr(A))
1771     return false;
1772   return true;
1773 }
1774 
1775 template <typename Derived>
1776 bool VISITORCLASS<Derived>::TraverseAMDGPUMaxNumWorkGroupsAttr(AMDGPUMaxNumWorkGroupsAttr *A) {
1777   if (!getDerived().VisitAttr(A))
1778     return false;
1779   if (!getDerived().VisitAMDGPUMaxNumWorkGroupsAttr(A))
1780     return false;
1781   if (!getDerived().TraverseStmt(A->getMaxNumWorkGroupsX()))
1782     return false;
1783   if (!getDerived().TraverseStmt(A->getMaxNumWorkGroupsY()))
1784     return false;
1785   if (!getDerived().TraverseStmt(A->getMaxNumWorkGroupsZ()))
1786     return false;
1787   return true;
1788 }
1789 
1790 template <typename Derived>
1791 bool VISITORCLASS<Derived>::TraverseAMDGPUNumSGPRAttr(AMDGPUNumSGPRAttr *A) {
1792   if (!getDerived().VisitAttr(A))
1793     return false;
1794   if (!getDerived().VisitAMDGPUNumSGPRAttr(A))
1795     return false;
1796   return true;
1797 }
1798 
1799 template <typename Derived>
1800 bool VISITORCLASS<Derived>::TraverseAMDGPUNumVGPRAttr(AMDGPUNumVGPRAttr *A) {
1801   if (!getDerived().VisitAttr(A))
1802     return false;
1803   if (!getDerived().VisitAMDGPUNumVGPRAttr(A))
1804     return false;
1805   return true;
1806 }
1807 
1808 template <typename Derived>
1809 bool VISITORCLASS<Derived>::TraverseAMDGPUWavesPerEUAttr(AMDGPUWavesPerEUAttr *A) {
1810   if (!getDerived().VisitAttr(A))
1811     return false;
1812   if (!getDerived().VisitAMDGPUWavesPerEUAttr(A))
1813     return false;
1814   if (!getDerived().TraverseStmt(A->getMin()))
1815     return false;
1816   if (!getDerived().TraverseStmt(A->getMax()))
1817     return false;
1818   return true;
1819 }
1820 
1821 template <typename Derived>
1822 bool VISITORCLASS<Derived>::TraverseARMInterruptAttr(ARMInterruptAttr *A) {
1823   if (!getDerived().VisitAttr(A))
1824     return false;
1825   if (!getDerived().VisitARMInterruptAttr(A))
1826     return false;
1827   return true;
1828 }
1829 
1830 template <typename Derived>
1831 bool VISITORCLASS<Derived>::TraverseAVRInterruptAttr(AVRInterruptAttr *A) {
1832   if (!getDerived().VisitAttr(A))
1833     return false;
1834   if (!getDerived().VisitAVRInterruptAttr(A))
1835     return false;
1836   return true;
1837 }
1838 
1839 template <typename Derived>
1840 bool VISITORCLASS<Derived>::TraverseAVRSignalAttr(AVRSignalAttr *A) {
1841   if (!getDerived().VisitAttr(A))
1842     return false;
1843   if (!getDerived().VisitAVRSignalAttr(A))
1844     return false;
1845   return true;
1846 }
1847 
1848 template <typename Derived>
1849 bool VISITORCLASS<Derived>::TraverseAbiTagAttr(AbiTagAttr *A) {
1850   if (!getDerived().VisitAttr(A))
1851     return false;
1852   if (!getDerived().VisitAbiTagAttr(A))
1853     return false;
1854   return true;
1855 }
1856 
1857 template <typename Derived>
1858 bool VISITORCLASS<Derived>::TraverseAcquireCapabilityAttr(AcquireCapabilityAttr *A) {
1859   if (!getDerived().VisitAttr(A))
1860     return false;
1861   if (!getDerived().VisitAcquireCapabilityAttr(A))
1862     return false;
1863   {
1864     Expr * *I = A->args_begin();
1865     Expr * *E = A->args_end();
1866     for (; I != E; ++I) {
1867       if (!getDerived().TraverseStmt(*I))
1868         return false;
1869     }
1870   }
1871   return true;
1872 }
1873 
1874 template <typename Derived>
1875 bool VISITORCLASS<Derived>::TraverseAcquireHandleAttr(AcquireHandleAttr *A) {
1876   if (!getDerived().VisitAttr(A))
1877     return false;
1878   if (!getDerived().VisitAcquireHandleAttr(A))
1879     return false;
1880   return true;
1881 }
1882 
1883 template <typename Derived>
1884 bool VISITORCLASS<Derived>::TraverseAcquiredAfterAttr(AcquiredAfterAttr *A) {
1885   if (!getDerived().VisitAttr(A))
1886     return false;
1887   if (!getDerived().VisitAcquiredAfterAttr(A))
1888     return false;
1889   {
1890     Expr * *I = A->args_begin();
1891     Expr * *E = A->args_end();
1892     for (; I != E; ++I) {
1893       if (!getDerived().TraverseStmt(*I))
1894         return false;
1895     }
1896   }
1897   return true;
1898 }
1899 
1900 template <typename Derived>
1901 bool VISITORCLASS<Derived>::TraverseAcquiredBeforeAttr(AcquiredBeforeAttr *A) {
1902   if (!getDerived().VisitAttr(A))
1903     return false;
1904   if (!getDerived().VisitAcquiredBeforeAttr(A))
1905     return false;
1906   {
1907     Expr * *I = A->args_begin();
1908     Expr * *E = A->args_end();
1909     for (; I != E; ++I) {
1910       if (!getDerived().TraverseStmt(*I))
1911         return false;
1912     }
1913   }
1914   return true;
1915 }
1916 
1917 template <typename Derived>
1918 bool VISITORCLASS<Derived>::TraverseAddressSpaceAttr(AddressSpaceAttr *A) {
1919   if (!getDerived().VisitAttr(A))
1920     return false;
1921   if (!getDerived().VisitAddressSpaceAttr(A))
1922     return false;
1923   return true;
1924 }
1925 
1926 template <typename Derived>
1927 bool VISITORCLASS<Derived>::TraverseAliasAttr(AliasAttr *A) {
1928   if (!getDerived().VisitAttr(A))
1929     return false;
1930   if (!getDerived().VisitAliasAttr(A))
1931     return false;
1932   return true;
1933 }
1934 
1935 template <typename Derived>
1936 bool VISITORCLASS<Derived>::TraverseAlignMac68kAttr(AlignMac68kAttr *A) {
1937   if (!getDerived().VisitAttr(A))
1938     return false;
1939   if (!getDerived().VisitAlignMac68kAttr(A))
1940     return false;
1941   return true;
1942 }
1943 
1944 template <typename Derived>
1945 bool VISITORCLASS<Derived>::TraverseAlignNaturalAttr(AlignNaturalAttr *A) {
1946   if (!getDerived().VisitAttr(A))
1947     return false;
1948   if (!getDerived().VisitAlignNaturalAttr(A))
1949     return false;
1950   return true;
1951 }
1952 
1953 template <typename Derived>
1954 bool VISITORCLASS<Derived>::TraverseAlignValueAttr(AlignValueAttr *A) {
1955   if (!getDerived().VisitAttr(A))
1956     return false;
1957   if (!getDerived().VisitAlignValueAttr(A))
1958     return false;
1959   if (!getDerived().TraverseStmt(A->getAlignment()))
1960     return false;
1961   return true;
1962 }
1963 
1964 template <typename Derived>
1965 bool VISITORCLASS<Derived>::TraverseAlignedAttr(AlignedAttr *A) {
1966   if (!getDerived().VisitAttr(A))
1967     return false;
1968   if (!getDerived().VisitAlignedAttr(A))
1969     return false;
1970   if (A->isAlignmentExpr()) {
1971     if (!getDerived().TraverseStmt(A->getAlignmentExpr()))
1972       return false;
1973   } else if (auto *TSI = A->getAlignmentType()) {
1974     if (!getDerived().TraverseTypeLoc(TSI->getTypeLoc()))
1975       return false;
1976   }
1977   return true;
1978 }
1979 
1980 template <typename Derived>
1981 bool VISITORCLASS<Derived>::TraverseAllocAlignAttr(AllocAlignAttr *A) {
1982   if (!getDerived().VisitAttr(A))
1983     return false;
1984   if (!getDerived().VisitAllocAlignAttr(A))
1985     return false;
1986   return true;
1987 }
1988 
1989 template <typename Derived>
1990 bool VISITORCLASS<Derived>::TraverseAllocSizeAttr(AllocSizeAttr *A) {
1991   if (!getDerived().VisitAttr(A))
1992     return false;
1993   if (!getDerived().VisitAllocSizeAttr(A))
1994     return false;
1995   return true;
1996 }
1997 
1998 template <typename Derived>
1999 bool VISITORCLASS<Derived>::TraverseAllocatingAttr(AllocatingAttr *A) {
2000   if (!getDerived().VisitAttr(A))
2001     return false;
2002   if (!getDerived().VisitAllocatingAttr(A))
2003     return false;
2004   return true;
2005 }
2006 
2007 template <typename Derived>
2008 bool VISITORCLASS<Derived>::TraverseAlwaysDestroyAttr(AlwaysDestroyAttr *A) {
2009   if (!getDerived().VisitAttr(A))
2010     return false;
2011   if (!getDerived().VisitAlwaysDestroyAttr(A))
2012     return false;
2013   return true;
2014 }
2015 
2016 template <typename Derived>
2017 bool VISITORCLASS<Derived>::TraverseAlwaysInlineAttr(AlwaysInlineAttr *A) {
2018   if (!getDerived().VisitAttr(A))
2019     return false;
2020   if (!getDerived().VisitAlwaysInlineAttr(A))
2021     return false;
2022   return true;
2023 }
2024 
2025 template <typename Derived>
2026 bool VISITORCLASS<Derived>::TraverseAnalyzerNoReturnAttr(AnalyzerNoReturnAttr *A) {
2027   if (!getDerived().VisitAttr(A))
2028     return false;
2029   if (!getDerived().VisitAnalyzerNoReturnAttr(A))
2030     return false;
2031   return true;
2032 }
2033 
2034 template <typename Derived>
2035 bool VISITORCLASS<Derived>::TraverseAnnotateAttr(AnnotateAttr *A) {
2036   if (!getDerived().VisitAttr(A))
2037     return false;
2038   if (!getDerived().VisitAnnotateAttr(A))
2039     return false;
2040   {
2041     Expr * *I = A->args_begin();
2042     Expr * *E = A->args_end();
2043     for (; I != E; ++I) {
2044       if (!getDerived().TraverseStmt(*I))
2045         return false;
2046     }
2047   }
2048   {
2049     Expr * *I = A->delayedArgs_begin();
2050     Expr * *E = A->delayedArgs_end();
2051     for (; I != E; ++I) {
2052       if (!getDerived().TraverseStmt(*I))
2053         return false;
2054     }
2055   }
2056   return true;
2057 }
2058 
2059 template <typename Derived>
2060 bool VISITORCLASS<Derived>::TraverseAnnotateTypeAttr(AnnotateTypeAttr *A) {
2061   if (!getDerived().VisitAttr(A))
2062     return false;
2063   if (!getDerived().VisitAnnotateTypeAttr(A))
2064     return false;
2065   {
2066     Expr * *I = A->args_begin();
2067     Expr * *E = A->args_end();
2068     for (; I != E; ++I) {
2069       if (!getDerived().TraverseStmt(*I))
2070         return false;
2071     }
2072   }
2073   {
2074     Expr * *I = A->delayedArgs_begin();
2075     Expr * *E = A->delayedArgs_end();
2076     for (; I != E; ++I) {
2077       if (!getDerived().TraverseStmt(*I))
2078         return false;
2079     }
2080   }
2081   return true;
2082 }
2083 
2084 template <typename Derived>
2085 bool VISITORCLASS<Derived>::TraverseAnyX86InterruptAttr(AnyX86InterruptAttr *A) {
2086   if (!getDerived().VisitAttr(A))
2087     return false;
2088   if (!getDerived().VisitAnyX86InterruptAttr(A))
2089     return false;
2090   return true;
2091 }
2092 
2093 template <typename Derived>
2094 bool VISITORCLASS<Derived>::TraverseAnyX86NoCallerSavedRegistersAttr(AnyX86NoCallerSavedRegistersAttr *A) {
2095   if (!getDerived().VisitAttr(A))
2096     return false;
2097   if (!getDerived().VisitAnyX86NoCallerSavedRegistersAttr(A))
2098     return false;
2099   return true;
2100 }
2101 
2102 template <typename Derived>
2103 bool VISITORCLASS<Derived>::TraverseAnyX86NoCfCheckAttr(AnyX86NoCfCheckAttr *A) {
2104   if (!getDerived().VisitAttr(A))
2105     return false;
2106   if (!getDerived().VisitAnyX86NoCfCheckAttr(A))
2107     return false;
2108   return true;
2109 }
2110 
2111 template <typename Derived>
2112 bool VISITORCLASS<Derived>::TraverseArcWeakrefUnavailableAttr(ArcWeakrefUnavailableAttr *A) {
2113   if (!getDerived().VisitAttr(A))
2114     return false;
2115   if (!getDerived().VisitArcWeakrefUnavailableAttr(A))
2116     return false;
2117   return true;
2118 }
2119 
2120 template <typename Derived>
2121 bool VISITORCLASS<Derived>::TraverseArgumentWithTypeTagAttr(ArgumentWithTypeTagAttr *A) {
2122   if (!getDerived().VisitAttr(A))
2123     return false;
2124   if (!getDerived().VisitArgumentWithTypeTagAttr(A))
2125     return false;
2126   return true;
2127 }
2128 
2129 template <typename Derived>
2130 bool VISITORCLASS<Derived>::TraverseArmAgnosticAttr(ArmAgnosticAttr *A) {
2131   if (!getDerived().VisitAttr(A))
2132     return false;
2133   if (!getDerived().VisitArmAgnosticAttr(A))
2134     return false;
2135   return true;
2136 }
2137 
2138 template <typename Derived>
2139 bool VISITORCLASS<Derived>::TraverseArmBuiltinAliasAttr(ArmBuiltinAliasAttr *A) {
2140   if (!getDerived().VisitAttr(A))
2141     return false;
2142   if (!getDerived().VisitArmBuiltinAliasAttr(A))
2143     return false;
2144   return true;
2145 }
2146 
2147 template <typename Derived>
2148 bool VISITORCLASS<Derived>::TraverseArmInAttr(ArmInAttr *A) {
2149   if (!getDerived().VisitAttr(A))
2150     return false;
2151   if (!getDerived().VisitArmInAttr(A))
2152     return false;
2153   return true;
2154 }
2155 
2156 template <typename Derived>
2157 bool VISITORCLASS<Derived>::TraverseArmInOutAttr(ArmInOutAttr *A) {
2158   if (!getDerived().VisitAttr(A))
2159     return false;
2160   if (!getDerived().VisitArmInOutAttr(A))
2161     return false;
2162   return true;
2163 }
2164 
2165 template <typename Derived>
2166 bool VISITORCLASS<Derived>::TraverseArmLocallyStreamingAttr(ArmLocallyStreamingAttr *A) {
2167   if (!getDerived().VisitAttr(A))
2168     return false;
2169   if (!getDerived().VisitArmLocallyStreamingAttr(A))
2170     return false;
2171   return true;
2172 }
2173 
2174 template <typename Derived>
2175 bool VISITORCLASS<Derived>::TraverseArmMveStrictPolymorphismAttr(ArmMveStrictPolymorphismAttr *A) {
2176   if (!getDerived().VisitAttr(A))
2177     return false;
2178   if (!getDerived().VisitArmMveStrictPolymorphismAttr(A))
2179     return false;
2180   return true;
2181 }
2182 
2183 template <typename Derived>
2184 bool VISITORCLASS<Derived>::TraverseArmNewAttr(ArmNewAttr *A) {
2185   if (!getDerived().VisitAttr(A))
2186     return false;
2187   if (!getDerived().VisitArmNewAttr(A))
2188     return false;
2189   return true;
2190 }
2191 
2192 template <typename Derived>
2193 bool VISITORCLASS<Derived>::TraverseArmOutAttr(ArmOutAttr *A) {
2194   if (!getDerived().VisitAttr(A))
2195     return false;
2196   if (!getDerived().VisitArmOutAttr(A))
2197     return false;
2198   return true;
2199 }
2200 
2201 template <typename Derived>
2202 bool VISITORCLASS<Derived>::TraverseArmPreservesAttr(ArmPreservesAttr *A) {
2203   if (!getDerived().VisitAttr(A))
2204     return false;
2205   if (!getDerived().VisitArmPreservesAttr(A))
2206     return false;
2207   return true;
2208 }
2209 
2210 template <typename Derived>
2211 bool VISITORCLASS<Derived>::TraverseArmStreamingAttr(ArmStreamingAttr *A) {
2212   if (!getDerived().VisitAttr(A))
2213     return false;
2214   if (!getDerived().VisitArmStreamingAttr(A))
2215     return false;
2216   return true;
2217 }
2218 
2219 template <typename Derived>
2220 bool VISITORCLASS<Derived>::TraverseArmStreamingCompatibleAttr(ArmStreamingCompatibleAttr *A) {
2221   if (!getDerived().VisitAttr(A))
2222     return false;
2223   if (!getDerived().VisitArmStreamingCompatibleAttr(A))
2224     return false;
2225   return true;
2226 }
2227 
2228 template <typename Derived>
2229 bool VISITORCLASS<Derived>::TraverseArtificialAttr(ArtificialAttr *A) {
2230   if (!getDerived().VisitAttr(A))
2231     return false;
2232   if (!getDerived().VisitArtificialAttr(A))
2233     return false;
2234   return true;
2235 }
2236 
2237 template <typename Derived>
2238 bool VISITORCLASS<Derived>::TraverseAsmLabelAttr(AsmLabelAttr *A) {
2239   if (!getDerived().VisitAttr(A))
2240     return false;
2241   if (!getDerived().VisitAsmLabelAttr(A))
2242     return false;
2243   return true;
2244 }
2245 
2246 template <typename Derived>
2247 bool VISITORCLASS<Derived>::TraverseAssertCapabilityAttr(AssertCapabilityAttr *A) {
2248   if (!getDerived().VisitAttr(A))
2249     return false;
2250   if (!getDerived().VisitAssertCapabilityAttr(A))
2251     return false;
2252   {
2253     Expr * *I = A->args_begin();
2254     Expr * *E = A->args_end();
2255     for (; I != E; ++I) {
2256       if (!getDerived().TraverseStmt(*I))
2257         return false;
2258     }
2259   }
2260   return true;
2261 }
2262 
2263 template <typename Derived>
2264 bool VISITORCLASS<Derived>::TraverseAssertExclusiveLockAttr(AssertExclusiveLockAttr *A) {
2265   if (!getDerived().VisitAttr(A))
2266     return false;
2267   if (!getDerived().VisitAssertExclusiveLockAttr(A))
2268     return false;
2269   {
2270     Expr * *I = A->args_begin();
2271     Expr * *E = A->args_end();
2272     for (; I != E; ++I) {
2273       if (!getDerived().TraverseStmt(*I))
2274         return false;
2275     }
2276   }
2277   return true;
2278 }
2279 
2280 template <typename Derived>
2281 bool VISITORCLASS<Derived>::TraverseAssertSharedLockAttr(AssertSharedLockAttr *A) {
2282   if (!getDerived().VisitAttr(A))
2283     return false;
2284   if (!getDerived().VisitAssertSharedLockAttr(A))
2285     return false;
2286   {
2287     Expr * *I = A->args_begin();
2288     Expr * *E = A->args_end();
2289     for (; I != E; ++I) {
2290       if (!getDerived().TraverseStmt(*I))
2291         return false;
2292     }
2293   }
2294   return true;
2295 }
2296 
2297 template <typename Derived>
2298 bool VISITORCLASS<Derived>::TraverseAssumeAlignedAttr(AssumeAlignedAttr *A) {
2299   if (!getDerived().VisitAttr(A))
2300     return false;
2301   if (!getDerived().VisitAssumeAlignedAttr(A))
2302     return false;
2303   if (!getDerived().TraverseStmt(A->getAlignment()))
2304     return false;
2305   if (!getDerived().TraverseStmt(A->getOffset()))
2306     return false;
2307   return true;
2308 }
2309 
2310 template <typename Derived>
2311 bool VISITORCLASS<Derived>::TraverseAvailabilityAttr(AvailabilityAttr *A) {
2312   if (!getDerived().VisitAttr(A))
2313     return false;
2314   if (!getDerived().VisitAvailabilityAttr(A))
2315     return false;
2316   return true;
2317 }
2318 
2319 template <typename Derived>
2320 bool VISITORCLASS<Derived>::TraverseAvailableOnlyInDefaultEvalMethodAttr(AvailableOnlyInDefaultEvalMethodAttr *A) {
2321   if (!getDerived().VisitAttr(A))
2322     return false;
2323   if (!getDerived().VisitAvailableOnlyInDefaultEvalMethodAttr(A))
2324     return false;
2325   return true;
2326 }
2327 
2328 template <typename Derived>
2329 bool VISITORCLASS<Derived>::TraverseBPFFastCallAttr(BPFFastCallAttr *A) {
2330   if (!getDerived().VisitAttr(A))
2331     return false;
2332   if (!getDerived().VisitBPFFastCallAttr(A))
2333     return false;
2334   return true;
2335 }
2336 
2337 template <typename Derived>
2338 bool VISITORCLASS<Derived>::TraverseBPFPreserveAccessIndexAttr(BPFPreserveAccessIndexAttr *A) {
2339   if (!getDerived().VisitAttr(A))
2340     return false;
2341   if (!getDerived().VisitBPFPreserveAccessIndexAttr(A))
2342     return false;
2343   return true;
2344 }
2345 
2346 template <typename Derived>
2347 bool VISITORCLASS<Derived>::TraverseBPFPreserveStaticOffsetAttr(BPFPreserveStaticOffsetAttr *A) {
2348   if (!getDerived().VisitAttr(A))
2349     return false;
2350   if (!getDerived().VisitBPFPreserveStaticOffsetAttr(A))
2351     return false;
2352   return true;
2353 }
2354 
2355 template <typename Derived>
2356 bool VISITORCLASS<Derived>::TraverseBTFDeclTagAttr(BTFDeclTagAttr *A) {
2357   if (!getDerived().VisitAttr(A))
2358     return false;
2359   if (!getDerived().VisitBTFDeclTagAttr(A))
2360     return false;
2361   return true;
2362 }
2363 
2364 template <typename Derived>
2365 bool VISITORCLASS<Derived>::TraverseBTFTypeTagAttr(BTFTypeTagAttr *A) {
2366   if (!getDerived().VisitAttr(A))
2367     return false;
2368   if (!getDerived().VisitBTFTypeTagAttr(A))
2369     return false;
2370   return true;
2371 }
2372 
2373 template <typename Derived>
2374 bool VISITORCLASS<Derived>::TraverseBlockingAttr(BlockingAttr *A) {
2375   if (!getDerived().VisitAttr(A))
2376     return false;
2377   if (!getDerived().VisitBlockingAttr(A))
2378     return false;
2379   return true;
2380 }
2381 
2382 template <typename Derived>
2383 bool VISITORCLASS<Derived>::TraverseBlocksAttr(BlocksAttr *A) {
2384   if (!getDerived().VisitAttr(A))
2385     return false;
2386   if (!getDerived().VisitBlocksAttr(A))
2387     return false;
2388   return true;
2389 }
2390 
2391 template <typename Derived>
2392 bool VISITORCLASS<Derived>::TraverseBuiltinAttr(BuiltinAttr *A) {
2393   if (!getDerived().VisitAttr(A))
2394     return false;
2395   if (!getDerived().VisitBuiltinAttr(A))
2396     return false;
2397   return true;
2398 }
2399 
2400 template <typename Derived>
2401 bool VISITORCLASS<Derived>::TraverseBuiltinAliasAttr(BuiltinAliasAttr *A) {
2402   if (!getDerived().VisitAttr(A))
2403     return false;
2404   if (!getDerived().VisitBuiltinAliasAttr(A))
2405     return false;
2406   return true;
2407 }
2408 
2409 template <typename Derived>
2410 bool VISITORCLASS<Derived>::TraverseC11NoReturnAttr(C11NoReturnAttr *A) {
2411   if (!getDerived().VisitAttr(A))
2412     return false;
2413   if (!getDerived().VisitC11NoReturnAttr(A))
2414     return false;
2415   return true;
2416 }
2417 
2418 template <typename Derived>
2419 bool VISITORCLASS<Derived>::TraverseCDeclAttr(CDeclAttr *A) {
2420   if (!getDerived().VisitAttr(A))
2421     return false;
2422   if (!getDerived().VisitCDeclAttr(A))
2423     return false;
2424   return true;
2425 }
2426 
2427 template <typename Derived>
2428 bool VISITORCLASS<Derived>::TraverseCFAuditedTransferAttr(CFAuditedTransferAttr *A) {
2429   if (!getDerived().VisitAttr(A))
2430     return false;
2431   if (!getDerived().VisitCFAuditedTransferAttr(A))
2432     return false;
2433   return true;
2434 }
2435 
2436 template <typename Derived>
2437 bool VISITORCLASS<Derived>::TraverseCFConsumedAttr(CFConsumedAttr *A) {
2438   if (!getDerived().VisitAttr(A))
2439     return false;
2440   if (!getDerived().VisitCFConsumedAttr(A))
2441     return false;
2442   return true;
2443 }
2444 
2445 template <typename Derived>
2446 bool VISITORCLASS<Derived>::TraverseCFGuardAttr(CFGuardAttr *A) {
2447   if (!getDerived().VisitAttr(A))
2448     return false;
2449   if (!getDerived().VisitCFGuardAttr(A))
2450     return false;
2451   return true;
2452 }
2453 
2454 template <typename Derived>
2455 bool VISITORCLASS<Derived>::TraverseCFICanonicalJumpTableAttr(CFICanonicalJumpTableAttr *A) {
2456   if (!getDerived().VisitAttr(A))
2457     return false;
2458   if (!getDerived().VisitCFICanonicalJumpTableAttr(A))
2459     return false;
2460   return true;
2461 }
2462 
2463 template <typename Derived>
2464 bool VISITORCLASS<Derived>::TraverseCFReturnsNotRetainedAttr(CFReturnsNotRetainedAttr *A) {
2465   if (!getDerived().VisitAttr(A))
2466     return false;
2467   if (!getDerived().VisitCFReturnsNotRetainedAttr(A))
2468     return false;
2469   return true;
2470 }
2471 
2472 template <typename Derived>
2473 bool VISITORCLASS<Derived>::TraverseCFReturnsRetainedAttr(CFReturnsRetainedAttr *A) {
2474   if (!getDerived().VisitAttr(A))
2475     return false;
2476   if (!getDerived().VisitCFReturnsRetainedAttr(A))
2477     return false;
2478   return true;
2479 }
2480 
2481 template <typename Derived>
2482 bool VISITORCLASS<Derived>::TraverseCFUnknownTransferAttr(CFUnknownTransferAttr *A) {
2483   if (!getDerived().VisitAttr(A))
2484     return false;
2485   if (!getDerived().VisitCFUnknownTransferAttr(A))
2486     return false;
2487   return true;
2488 }
2489 
2490 template <typename Derived>
2491 bool VISITORCLASS<Derived>::TraverseCPUDispatchAttr(CPUDispatchAttr *A) {
2492   if (!getDerived().VisitAttr(A))
2493     return false;
2494   if (!getDerived().VisitCPUDispatchAttr(A))
2495     return false;
2496   return true;
2497 }
2498 
2499 template <typename Derived>
2500 bool VISITORCLASS<Derived>::TraverseCPUSpecificAttr(CPUSpecificAttr *A) {
2501   if (!getDerived().VisitAttr(A))
2502     return false;
2503   if (!getDerived().VisitCPUSpecificAttr(A))
2504     return false;
2505   return true;
2506 }
2507 
2508 template <typename Derived>
2509 bool VISITORCLASS<Derived>::TraverseCUDAConstantAttr(CUDAConstantAttr *A) {
2510   if (!getDerived().VisitAttr(A))
2511     return false;
2512   if (!getDerived().VisitCUDAConstantAttr(A))
2513     return false;
2514   return true;
2515 }
2516 
2517 template <typename Derived>
2518 bool VISITORCLASS<Derived>::TraverseCUDADeviceAttr(CUDADeviceAttr *A) {
2519   if (!getDerived().VisitAttr(A))
2520     return false;
2521   if (!getDerived().VisitCUDADeviceAttr(A))
2522     return false;
2523   return true;
2524 }
2525 
2526 template <typename Derived>
2527 bool VISITORCLASS<Derived>::TraverseCUDADeviceBuiltinSurfaceTypeAttr(CUDADeviceBuiltinSurfaceTypeAttr *A) {
2528   if (!getDerived().VisitAttr(A))
2529     return false;
2530   if (!getDerived().VisitCUDADeviceBuiltinSurfaceTypeAttr(A))
2531     return false;
2532   return true;
2533 }
2534 
2535 template <typename Derived>
2536 bool VISITORCLASS<Derived>::TraverseCUDADeviceBuiltinTextureTypeAttr(CUDADeviceBuiltinTextureTypeAttr *A) {
2537   if (!getDerived().VisitAttr(A))
2538     return false;
2539   if (!getDerived().VisitCUDADeviceBuiltinTextureTypeAttr(A))
2540     return false;
2541   return true;
2542 }
2543 
2544 template <typename Derived>
2545 bool VISITORCLASS<Derived>::TraverseCUDAGlobalAttr(CUDAGlobalAttr *A) {
2546   if (!getDerived().VisitAttr(A))
2547     return false;
2548   if (!getDerived().VisitCUDAGlobalAttr(A))
2549     return false;
2550   return true;
2551 }
2552 
2553 template <typename Derived>
2554 bool VISITORCLASS<Derived>::TraverseCUDAGridConstantAttr(CUDAGridConstantAttr *A) {
2555   if (!getDerived().VisitAttr(A))
2556     return false;
2557   if (!getDerived().VisitCUDAGridConstantAttr(A))
2558     return false;
2559   return true;
2560 }
2561 
2562 template <typename Derived>
2563 bool VISITORCLASS<Derived>::TraverseCUDAHostAttr(CUDAHostAttr *A) {
2564   if (!getDerived().VisitAttr(A))
2565     return false;
2566   if (!getDerived().VisitCUDAHostAttr(A))
2567     return false;
2568   return true;
2569 }
2570 
2571 template <typename Derived>
2572 bool VISITORCLASS<Derived>::TraverseCUDAInvalidTargetAttr(CUDAInvalidTargetAttr *A) {
2573   if (!getDerived().VisitAttr(A))
2574     return false;
2575   if (!getDerived().VisitCUDAInvalidTargetAttr(A))
2576     return false;
2577   return true;
2578 }
2579 
2580 template <typename Derived>
2581 bool VISITORCLASS<Derived>::TraverseCUDALaunchBoundsAttr(CUDALaunchBoundsAttr *A) {
2582   if (!getDerived().VisitAttr(A))
2583     return false;
2584   if (!getDerived().VisitCUDALaunchBoundsAttr(A))
2585     return false;
2586   if (!getDerived().TraverseStmt(A->getMaxThreads()))
2587     return false;
2588   if (!getDerived().TraverseStmt(A->getMinBlocks()))
2589     return false;
2590   if (!getDerived().TraverseStmt(A->getMaxBlocks()))
2591     return false;
2592   return true;
2593 }
2594 
2595 template <typename Derived>
2596 bool VISITORCLASS<Derived>::TraverseCUDASharedAttr(CUDASharedAttr *A) {
2597   if (!getDerived().VisitAttr(A))
2598     return false;
2599   if (!getDerived().VisitCUDASharedAttr(A))
2600     return false;
2601   return true;
2602 }
2603 
2604 template <typename Derived>
2605 bool VISITORCLASS<Derived>::TraverseCXX11NoReturnAttr(CXX11NoReturnAttr *A) {
2606   if (!getDerived().VisitAttr(A))
2607     return false;
2608   if (!getDerived().VisitCXX11NoReturnAttr(A))
2609     return false;
2610   return true;
2611 }
2612 
2613 template <typename Derived>
2614 bool VISITORCLASS<Derived>::TraverseCXXAssumeAttr(CXXAssumeAttr *A) {
2615   if (!getDerived().VisitAttr(A))
2616     return false;
2617   if (!getDerived().VisitCXXAssumeAttr(A))
2618     return false;
2619   if (!getDerived().TraverseStmt(A->getAssumption()))
2620     return false;
2621   return true;
2622 }
2623 
2624 template <typename Derived>
2625 bool VISITORCLASS<Derived>::TraverseCallableWhenAttr(CallableWhenAttr *A) {
2626   if (!getDerived().VisitAttr(A))
2627     return false;
2628   if (!getDerived().VisitCallableWhenAttr(A))
2629     return false;
2630   return true;
2631 }
2632 
2633 template <typename Derived>
2634 bool VISITORCLASS<Derived>::TraverseCallbackAttr(CallbackAttr *A) {
2635   if (!getDerived().VisitAttr(A))
2636     return false;
2637   if (!getDerived().VisitCallbackAttr(A))
2638     return false;
2639   return true;
2640 }
2641 
2642 template <typename Derived>
2643 bool VISITORCLASS<Derived>::TraverseCalledOnceAttr(CalledOnceAttr *A) {
2644   if (!getDerived().VisitAttr(A))
2645     return false;
2646   if (!getDerived().VisitCalledOnceAttr(A))
2647     return false;
2648   return true;
2649 }
2650 
2651 template <typename Derived>
2652 bool VISITORCLASS<Derived>::TraverseCapabilityAttr(CapabilityAttr *A) {
2653   if (!getDerived().VisitAttr(A))
2654     return false;
2655   if (!getDerived().VisitCapabilityAttr(A))
2656     return false;
2657   return true;
2658 }
2659 
2660 template <typename Derived>
2661 bool VISITORCLASS<Derived>::TraverseCapturedRecordAttr(CapturedRecordAttr *A) {
2662   if (!getDerived().VisitAttr(A))
2663     return false;
2664   if (!getDerived().VisitCapturedRecordAttr(A))
2665     return false;
2666   return true;
2667 }
2668 
2669 template <typename Derived>
2670 bool VISITORCLASS<Derived>::TraverseCarriesDependencyAttr(CarriesDependencyAttr *A) {
2671   if (!getDerived().VisitAttr(A))
2672     return false;
2673   if (!getDerived().VisitCarriesDependencyAttr(A))
2674     return false;
2675   return true;
2676 }
2677 
2678 template <typename Derived>
2679 bool VISITORCLASS<Derived>::TraverseCleanupAttr(CleanupAttr *A) {
2680   if (!getDerived().VisitAttr(A))
2681     return false;
2682   if (!getDerived().VisitCleanupAttr(A))
2683     return false;
2684   return true;
2685 }
2686 
2687 template <typename Derived>
2688 bool VISITORCLASS<Derived>::TraverseClspvLibclcBuiltinAttr(ClspvLibclcBuiltinAttr *A) {
2689   if (!getDerived().VisitAttr(A))
2690     return false;
2691   if (!getDerived().VisitClspvLibclcBuiltinAttr(A))
2692     return false;
2693   return true;
2694 }
2695 
2696 template <typename Derived>
2697 bool VISITORCLASS<Derived>::TraverseCmseNSCallAttr(CmseNSCallAttr *A) {
2698   if (!getDerived().VisitAttr(A))
2699     return false;
2700   if (!getDerived().VisitCmseNSCallAttr(A))
2701     return false;
2702   return true;
2703 }
2704 
2705 template <typename Derived>
2706 bool VISITORCLASS<Derived>::TraverseCmseNSEntryAttr(CmseNSEntryAttr *A) {
2707   if (!getDerived().VisitAttr(A))
2708     return false;
2709   if (!getDerived().VisitCmseNSEntryAttr(A))
2710     return false;
2711   return true;
2712 }
2713 
2714 template <typename Derived>
2715 bool VISITORCLASS<Derived>::TraverseCodeAlignAttr(CodeAlignAttr *A) {
2716   if (!getDerived().VisitAttr(A))
2717     return false;
2718   if (!getDerived().VisitCodeAlignAttr(A))
2719     return false;
2720   if (!getDerived().TraverseStmt(A->getAlignment()))
2721     return false;
2722   return true;
2723 }
2724 
2725 template <typename Derived>
2726 bool VISITORCLASS<Derived>::TraverseCodeModelAttr(CodeModelAttr *A) {
2727   if (!getDerived().VisitAttr(A))
2728     return false;
2729   if (!getDerived().VisitCodeModelAttr(A))
2730     return false;
2731   return true;
2732 }
2733 
2734 template <typename Derived>
2735 bool VISITORCLASS<Derived>::TraverseCodeSegAttr(CodeSegAttr *A) {
2736   if (!getDerived().VisitAttr(A))
2737     return false;
2738   if (!getDerived().VisitCodeSegAttr(A))
2739     return false;
2740   return true;
2741 }
2742 
2743 template <typename Derived>
2744 bool VISITORCLASS<Derived>::TraverseColdAttr(ColdAttr *A) {
2745   if (!getDerived().VisitAttr(A))
2746     return false;
2747   if (!getDerived().VisitColdAttr(A))
2748     return false;
2749   return true;
2750 }
2751 
2752 template <typename Derived>
2753 bool VISITORCLASS<Derived>::TraverseCommonAttr(CommonAttr *A) {
2754   if (!getDerived().VisitAttr(A))
2755     return false;
2756   if (!getDerived().VisitCommonAttr(A))
2757     return false;
2758   return true;
2759 }
2760 
2761 template <typename Derived>
2762 bool VISITORCLASS<Derived>::TraverseConstAttr(ConstAttr *A) {
2763   if (!getDerived().VisitAttr(A))
2764     return false;
2765   if (!getDerived().VisitConstAttr(A))
2766     return false;
2767   return true;
2768 }
2769 
2770 template <typename Derived>
2771 bool VISITORCLASS<Derived>::TraverseConstInitAttr(ConstInitAttr *A) {
2772   if (!getDerived().VisitAttr(A))
2773     return false;
2774   if (!getDerived().VisitConstInitAttr(A))
2775     return false;
2776   return true;
2777 }
2778 
2779 template <typename Derived>
2780 bool VISITORCLASS<Derived>::TraverseConstructorAttr(ConstructorAttr *A) {
2781   if (!getDerived().VisitAttr(A))
2782     return false;
2783   if (!getDerived().VisitConstructorAttr(A))
2784     return false;
2785   return true;
2786 }
2787 
2788 template <typename Derived>
2789 bool VISITORCLASS<Derived>::TraverseConsumableAttr(ConsumableAttr *A) {
2790   if (!getDerived().VisitAttr(A))
2791     return false;
2792   if (!getDerived().VisitConsumableAttr(A))
2793     return false;
2794   return true;
2795 }
2796 
2797 template <typename Derived>
2798 bool VISITORCLASS<Derived>::TraverseConsumableAutoCastAttr(ConsumableAutoCastAttr *A) {
2799   if (!getDerived().VisitAttr(A))
2800     return false;
2801   if (!getDerived().VisitConsumableAutoCastAttr(A))
2802     return false;
2803   return true;
2804 }
2805 
2806 template <typename Derived>
2807 bool VISITORCLASS<Derived>::TraverseConsumableSetOnReadAttr(ConsumableSetOnReadAttr *A) {
2808   if (!getDerived().VisitAttr(A))
2809     return false;
2810   if (!getDerived().VisitConsumableSetOnReadAttr(A))
2811     return false;
2812   return true;
2813 }
2814 
2815 template <typename Derived>
2816 bool VISITORCLASS<Derived>::TraverseConvergentAttr(ConvergentAttr *A) {
2817   if (!getDerived().VisitAttr(A))
2818     return false;
2819   if (!getDerived().VisitConvergentAttr(A))
2820     return false;
2821   return true;
2822 }
2823 
2824 template <typename Derived>
2825 bool VISITORCLASS<Derived>::TraverseCoroAwaitElidableAttr(CoroAwaitElidableAttr *A) {
2826   if (!getDerived().VisitAttr(A))
2827     return false;
2828   if (!getDerived().VisitCoroAwaitElidableAttr(A))
2829     return false;
2830   return true;
2831 }
2832 
2833 template <typename Derived>
2834 bool VISITORCLASS<Derived>::TraverseCoroAwaitElidableArgumentAttr(CoroAwaitElidableArgumentAttr *A) {
2835   if (!getDerived().VisitAttr(A))
2836     return false;
2837   if (!getDerived().VisitCoroAwaitElidableArgumentAttr(A))
2838     return false;
2839   return true;
2840 }
2841 
2842 template <typename Derived>
2843 bool VISITORCLASS<Derived>::TraverseCoroDisableLifetimeBoundAttr(CoroDisableLifetimeBoundAttr *A) {
2844   if (!getDerived().VisitAttr(A))
2845     return false;
2846   if (!getDerived().VisitCoroDisableLifetimeBoundAttr(A))
2847     return false;
2848   return true;
2849 }
2850 
2851 template <typename Derived>
2852 bool VISITORCLASS<Derived>::TraverseCoroLifetimeBoundAttr(CoroLifetimeBoundAttr *A) {
2853   if (!getDerived().VisitAttr(A))
2854     return false;
2855   if (!getDerived().VisitCoroLifetimeBoundAttr(A))
2856     return false;
2857   return true;
2858 }
2859 
2860 template <typename Derived>
2861 bool VISITORCLASS<Derived>::TraverseCoroOnlyDestroyWhenCompleteAttr(CoroOnlyDestroyWhenCompleteAttr *A) {
2862   if (!getDerived().VisitAttr(A))
2863     return false;
2864   if (!getDerived().VisitCoroOnlyDestroyWhenCompleteAttr(A))
2865     return false;
2866   return true;
2867 }
2868 
2869 template <typename Derived>
2870 bool VISITORCLASS<Derived>::TraverseCoroReturnTypeAttr(CoroReturnTypeAttr *A) {
2871   if (!getDerived().VisitAttr(A))
2872     return false;
2873   if (!getDerived().VisitCoroReturnTypeAttr(A))
2874     return false;
2875   return true;
2876 }
2877 
2878 template <typename Derived>
2879 bool VISITORCLASS<Derived>::TraverseCoroWrapperAttr(CoroWrapperAttr *A) {
2880   if (!getDerived().VisitAttr(A))
2881     return false;
2882   if (!getDerived().VisitCoroWrapperAttr(A))
2883     return false;
2884   return true;
2885 }
2886 
2887 template <typename Derived>
2888 bool VISITORCLASS<Derived>::TraverseCountedByAttr(CountedByAttr *A) {
2889   if (!getDerived().VisitAttr(A))
2890     return false;
2891   if (!getDerived().VisitCountedByAttr(A))
2892     return false;
2893   if (!getDerived().TraverseStmt(A->getCount()))
2894     return false;
2895   return true;
2896 }
2897 
2898 template <typename Derived>
2899 bool VISITORCLASS<Derived>::TraverseCountedByOrNullAttr(CountedByOrNullAttr *A) {
2900   if (!getDerived().VisitAttr(A))
2901     return false;
2902   if (!getDerived().VisitCountedByOrNullAttr(A))
2903     return false;
2904   if (!getDerived().TraverseStmt(A->getCount()))
2905     return false;
2906   return true;
2907 }
2908 
2909 template <typename Derived>
2910 bool VISITORCLASS<Derived>::TraverseDLLExportAttr(DLLExportAttr *A) {
2911   if (!getDerived().VisitAttr(A))
2912     return false;
2913   if (!getDerived().VisitDLLExportAttr(A))
2914     return false;
2915   return true;
2916 }
2917 
2918 template <typename Derived>
2919 bool VISITORCLASS<Derived>::TraverseDLLExportStaticLocalAttr(DLLExportStaticLocalAttr *A) {
2920   if (!getDerived().VisitAttr(A))
2921     return false;
2922   if (!getDerived().VisitDLLExportStaticLocalAttr(A))
2923     return false;
2924   return true;
2925 }
2926 
2927 template <typename Derived>
2928 bool VISITORCLASS<Derived>::TraverseDLLImportAttr(DLLImportAttr *A) {
2929   if (!getDerived().VisitAttr(A))
2930     return false;
2931   if (!getDerived().VisitDLLImportAttr(A))
2932     return false;
2933   return true;
2934 }
2935 
2936 template <typename Derived>
2937 bool VISITORCLASS<Derived>::TraverseDLLImportStaticLocalAttr(DLLImportStaticLocalAttr *A) {
2938   if (!getDerived().VisitAttr(A))
2939     return false;
2940   if (!getDerived().VisitDLLImportStaticLocalAttr(A))
2941     return false;
2942   return true;
2943 }
2944 
2945 template <typename Derived>
2946 bool VISITORCLASS<Derived>::TraverseDeprecatedAttr(DeprecatedAttr *A) {
2947   if (!getDerived().VisitAttr(A))
2948     return false;
2949   if (!getDerived().VisitDeprecatedAttr(A))
2950     return false;
2951   return true;
2952 }
2953 
2954 template <typename Derived>
2955 bool VISITORCLASS<Derived>::TraverseDestructorAttr(DestructorAttr *A) {
2956   if (!getDerived().VisitAttr(A))
2957     return false;
2958   if (!getDerived().VisitDestructorAttr(A))
2959     return false;
2960   return true;
2961 }
2962 
2963 template <typename Derived>
2964 bool VISITORCLASS<Derived>::TraverseDiagnoseAsBuiltinAttr(DiagnoseAsBuiltinAttr *A) {
2965   if (!getDerived().VisitAttr(A))
2966     return false;
2967   if (!getDerived().VisitDiagnoseAsBuiltinAttr(A))
2968     return false;
2969   return true;
2970 }
2971 
2972 template <typename Derived>
2973 bool VISITORCLASS<Derived>::TraverseDiagnoseIfAttr(DiagnoseIfAttr *A) {
2974   if (!getDerived().VisitAttr(A))
2975     return false;
2976   if (!getDerived().VisitDiagnoseIfAttr(A))
2977     return false;
2978   if (!getDerived().TraverseStmt(A->getCond()))
2979     return false;
2980   return true;
2981 }
2982 
2983 template <typename Derived>
2984 bool VISITORCLASS<Derived>::TraverseDisableSanitizerInstrumentationAttr(DisableSanitizerInstrumentationAttr *A) {
2985   if (!getDerived().VisitAttr(A))
2986     return false;
2987   if (!getDerived().VisitDisableSanitizerInstrumentationAttr(A))
2988     return false;
2989   return true;
2990 }
2991 
2992 template <typename Derived>
2993 bool VISITORCLASS<Derived>::TraverseDisableTailCallsAttr(DisableTailCallsAttr *A) {
2994   if (!getDerived().VisitAttr(A))
2995     return false;
2996   if (!getDerived().VisitDisableTailCallsAttr(A))
2997     return false;
2998   return true;
2999 }
3000 
3001 template <typename Derived>
3002 bool VISITORCLASS<Derived>::TraverseEmptyBasesAttr(EmptyBasesAttr *A) {
3003   if (!getDerived().VisitAttr(A))
3004     return false;
3005   if (!getDerived().VisitEmptyBasesAttr(A))
3006     return false;
3007   return true;
3008 }
3009 
3010 template <typename Derived>
3011 bool VISITORCLASS<Derived>::TraverseEnableIfAttr(EnableIfAttr *A) {
3012   if (!getDerived().VisitAttr(A))
3013     return false;
3014   if (!getDerived().VisitEnableIfAttr(A))
3015     return false;
3016   if (!getDerived().TraverseStmt(A->getCond()))
3017     return false;
3018   return true;
3019 }
3020 
3021 template <typename Derived>
3022 bool VISITORCLASS<Derived>::TraverseEnforceTCBAttr(EnforceTCBAttr *A) {
3023   if (!getDerived().VisitAttr(A))
3024     return false;
3025   if (!getDerived().VisitEnforceTCBAttr(A))
3026     return false;
3027   return true;
3028 }
3029 
3030 template <typename Derived>
3031 bool VISITORCLASS<Derived>::TraverseEnforceTCBLeafAttr(EnforceTCBLeafAttr *A) {
3032   if (!getDerived().VisitAttr(A))
3033     return false;
3034   if (!getDerived().VisitEnforceTCBLeafAttr(A))
3035     return false;
3036   return true;
3037 }
3038 
3039 template <typename Derived>
3040 bool VISITORCLASS<Derived>::TraverseEnumExtensibilityAttr(EnumExtensibilityAttr *A) {
3041   if (!getDerived().VisitAttr(A))
3042     return false;
3043   if (!getDerived().VisitEnumExtensibilityAttr(A))
3044     return false;
3045   return true;
3046 }
3047 
3048 template <typename Derived>
3049 bool VISITORCLASS<Derived>::TraverseErrorAttr(ErrorAttr *A) {
3050   if (!getDerived().VisitAttr(A))
3051     return false;
3052   if (!getDerived().VisitErrorAttr(A))
3053     return false;
3054   return true;
3055 }
3056 
3057 template <typename Derived>
3058 bool VISITORCLASS<Derived>::TraverseExcludeFromExplicitInstantiationAttr(ExcludeFromExplicitInstantiationAttr *A) {
3059   if (!getDerived().VisitAttr(A))
3060     return false;
3061   if (!getDerived().VisitExcludeFromExplicitInstantiationAttr(A))
3062     return false;
3063   return true;
3064 }
3065 
3066 template <typename Derived>
3067 bool VISITORCLASS<Derived>::TraverseExclusiveTrylockFunctionAttr(ExclusiveTrylockFunctionAttr *A) {
3068   if (!getDerived().VisitAttr(A))
3069     return false;
3070   if (!getDerived().VisitExclusiveTrylockFunctionAttr(A))
3071     return false;
3072   if (!getDerived().TraverseStmt(A->getSuccessValue()))
3073     return false;
3074   {
3075     Expr * *I = A->args_begin();
3076     Expr * *E = A->args_end();
3077     for (; I != E; ++I) {
3078       if (!getDerived().TraverseStmt(*I))
3079         return false;
3080     }
3081   }
3082   return true;
3083 }
3084 
3085 template <typename Derived>
3086 bool VISITORCLASS<Derived>::TraverseExplicitInitAttr(ExplicitInitAttr *A) {
3087   if (!getDerived().VisitAttr(A))
3088     return false;
3089   if (!getDerived().VisitExplicitInitAttr(A))
3090     return false;
3091   return true;
3092 }
3093 
3094 template <typename Derived>
3095 bool VISITORCLASS<Derived>::TraverseExternalSourceSymbolAttr(ExternalSourceSymbolAttr *A) {
3096   if (!getDerived().VisitAttr(A))
3097     return false;
3098   if (!getDerived().VisitExternalSourceSymbolAttr(A))
3099     return false;
3100   return true;
3101 }
3102 
3103 template <typename Derived>
3104 bool VISITORCLASS<Derived>::TraverseFallThroughAttr(FallThroughAttr *A) {
3105   if (!getDerived().VisitAttr(A))
3106     return false;
3107   if (!getDerived().VisitFallThroughAttr(A))
3108     return false;
3109   return true;
3110 }
3111 
3112 template <typename Derived>
3113 bool VISITORCLASS<Derived>::TraverseFastCallAttr(FastCallAttr *A) {
3114   if (!getDerived().VisitAttr(A))
3115     return false;
3116   if (!getDerived().VisitFastCallAttr(A))
3117     return false;
3118   return true;
3119 }
3120 
3121 template <typename Derived>
3122 bool VISITORCLASS<Derived>::TraverseFinalAttr(FinalAttr *A) {
3123   if (!getDerived().VisitAttr(A))
3124     return false;
3125   if (!getDerived().VisitFinalAttr(A))
3126     return false;
3127   return true;
3128 }
3129 
3130 template <typename Derived>
3131 bool VISITORCLASS<Derived>::TraverseFlagEnumAttr(FlagEnumAttr *A) {
3132   if (!getDerived().VisitAttr(A))
3133     return false;
3134   if (!getDerived().VisitFlagEnumAttr(A))
3135     return false;
3136   return true;
3137 }
3138 
3139 template <typename Derived>
3140 bool VISITORCLASS<Derived>::TraverseFlattenAttr(FlattenAttr *A) {
3141   if (!getDerived().VisitAttr(A))
3142     return false;
3143   if (!getDerived().VisitFlattenAttr(A))
3144     return false;
3145   return true;
3146 }
3147 
3148 template <typename Derived>
3149 bool VISITORCLASS<Derived>::TraverseFormatAttr(FormatAttr *A) {
3150   if (!getDerived().VisitAttr(A))
3151     return false;
3152   if (!getDerived().VisitFormatAttr(A))
3153     return false;
3154   return true;
3155 }
3156 
3157 template <typename Derived>
3158 bool VISITORCLASS<Derived>::TraverseFormatArgAttr(FormatArgAttr *A) {
3159   if (!getDerived().VisitAttr(A))
3160     return false;
3161   if (!getDerived().VisitFormatArgAttr(A))
3162     return false;
3163   return true;
3164 }
3165 
3166 template <typename Derived>
3167 bool VISITORCLASS<Derived>::TraverseFunctionReturnThunksAttr(FunctionReturnThunksAttr *A) {
3168   if (!getDerived().VisitAttr(A))
3169     return false;
3170   if (!getDerived().VisitFunctionReturnThunksAttr(A))
3171     return false;
3172   return true;
3173 }
3174 
3175 template <typename Derived>
3176 bool VISITORCLASS<Derived>::TraverseGNUInlineAttr(GNUInlineAttr *A) {
3177   if (!getDerived().VisitAttr(A))
3178     return false;
3179   if (!getDerived().VisitGNUInlineAttr(A))
3180     return false;
3181   return true;
3182 }
3183 
3184 template <typename Derived>
3185 bool VISITORCLASS<Derived>::TraverseGuardedByAttr(GuardedByAttr *A) {
3186   if (!getDerived().VisitAttr(A))
3187     return false;
3188   if (!getDerived().VisitGuardedByAttr(A))
3189     return false;
3190   if (!getDerived().TraverseStmt(A->getArg()))
3191     return false;
3192   return true;
3193 }
3194 
3195 template <typename Derived>
3196 bool VISITORCLASS<Derived>::TraverseGuardedVarAttr(GuardedVarAttr *A) {
3197   if (!getDerived().VisitAttr(A))
3198     return false;
3199   if (!getDerived().VisitGuardedVarAttr(A))
3200     return false;
3201   return true;
3202 }
3203 
3204 template <typename Derived>
3205 bool VISITORCLASS<Derived>::TraverseHIPManagedAttr(HIPManagedAttr *A) {
3206   if (!getDerived().VisitAttr(A))
3207     return false;
3208   if (!getDerived().VisitHIPManagedAttr(A))
3209     return false;
3210   return true;
3211 }
3212 
3213 template <typename Derived>
3214 bool VISITORCLASS<Derived>::TraverseHLSLContainedTypeAttr(HLSLContainedTypeAttr *A) {
3215   if (!getDerived().VisitAttr(A))
3216     return false;
3217   if (!getDerived().VisitHLSLContainedTypeAttr(A))
3218     return false;
3219   if (auto *TSI = A->getTypeLoc())
3220     if (!getDerived().TraverseTypeLoc(TSI->getTypeLoc()))
3221       return false;
3222   return true;
3223 }
3224 
3225 template <typename Derived>
3226 bool VISITORCLASS<Derived>::TraverseHLSLControlFlowHintAttr(HLSLControlFlowHintAttr *A) {
3227   if (!getDerived().VisitAttr(A))
3228     return false;
3229   if (!getDerived().VisitHLSLControlFlowHintAttr(A))
3230     return false;
3231   return true;
3232 }
3233 
3234 template <typename Derived>
3235 bool VISITORCLASS<Derived>::TraverseHLSLGroupSharedAddressSpaceAttr(HLSLGroupSharedAddressSpaceAttr *A) {
3236   if (!getDerived().VisitAttr(A))
3237     return false;
3238   if (!getDerived().VisitHLSLGroupSharedAddressSpaceAttr(A))
3239     return false;
3240   return true;
3241 }
3242 
3243 template <typename Derived>
3244 bool VISITORCLASS<Derived>::TraverseHLSLLoopHintAttr(HLSLLoopHintAttr *A) {
3245   if (!getDerived().VisitAttr(A))
3246     return false;
3247   if (!getDerived().VisitHLSLLoopHintAttr(A))
3248     return false;
3249   return true;
3250 }
3251 
3252 template <typename Derived>
3253 bool VISITORCLASS<Derived>::TraverseHLSLNumThreadsAttr(HLSLNumThreadsAttr *A) {
3254   if (!getDerived().VisitAttr(A))
3255     return false;
3256   if (!getDerived().VisitHLSLNumThreadsAttr(A))
3257     return false;
3258   return true;
3259 }
3260 
3261 template <typename Derived>
3262 bool VISITORCLASS<Derived>::TraverseHLSLPackOffsetAttr(HLSLPackOffsetAttr *A) {
3263   if (!getDerived().VisitAttr(A))
3264     return false;
3265   if (!getDerived().VisitHLSLPackOffsetAttr(A))
3266     return false;
3267   return true;
3268 }
3269 
3270 template <typename Derived>
3271 bool VISITORCLASS<Derived>::TraverseHLSLParamModifierAttr(HLSLParamModifierAttr *A) {
3272   if (!getDerived().VisitAttr(A))
3273     return false;
3274   if (!getDerived().VisitHLSLParamModifierAttr(A))
3275     return false;
3276   return true;
3277 }
3278 
3279 template <typename Derived>
3280 bool VISITORCLASS<Derived>::TraverseHLSLROVAttr(HLSLROVAttr *A) {
3281   if (!getDerived().VisitAttr(A))
3282     return false;
3283   if (!getDerived().VisitHLSLROVAttr(A))
3284     return false;
3285   return true;
3286 }
3287 
3288 template <typename Derived>
3289 bool VISITORCLASS<Derived>::TraverseHLSLRawBufferAttr(HLSLRawBufferAttr *A) {
3290   if (!getDerived().VisitAttr(A))
3291     return false;
3292   if (!getDerived().VisitHLSLRawBufferAttr(A))
3293     return false;
3294   return true;
3295 }
3296 
3297 template <typename Derived>
3298 bool VISITORCLASS<Derived>::TraverseHLSLResourceAttr(HLSLResourceAttr *A) {
3299   if (!getDerived().VisitAttr(A))
3300     return false;
3301   if (!getDerived().VisitHLSLResourceAttr(A))
3302     return false;
3303   return true;
3304 }
3305 
3306 template <typename Derived>
3307 bool VISITORCLASS<Derived>::TraverseHLSLResourceBindingAttr(HLSLResourceBindingAttr *A) {
3308   if (!getDerived().VisitAttr(A))
3309     return false;
3310   if (!getDerived().VisitHLSLResourceBindingAttr(A))
3311     return false;
3312   return true;
3313 }
3314 
3315 template <typename Derived>
3316 bool VISITORCLASS<Derived>::TraverseHLSLResourceClassAttr(HLSLResourceClassAttr *A) {
3317   if (!getDerived().VisitAttr(A))
3318     return false;
3319   if (!getDerived().VisitHLSLResourceClassAttr(A))
3320     return false;
3321   return true;
3322 }
3323 
3324 template <typename Derived>
3325 bool VISITORCLASS<Derived>::TraverseHLSLSV_DispatchThreadIDAttr(HLSLSV_DispatchThreadIDAttr *A) {
3326   if (!getDerived().VisitAttr(A))
3327     return false;
3328   if (!getDerived().VisitHLSLSV_DispatchThreadIDAttr(A))
3329     return false;
3330   return true;
3331 }
3332 
3333 template <typename Derived>
3334 bool VISITORCLASS<Derived>::TraverseHLSLSV_GroupIDAttr(HLSLSV_GroupIDAttr *A) {
3335   if (!getDerived().VisitAttr(A))
3336     return false;
3337   if (!getDerived().VisitHLSLSV_GroupIDAttr(A))
3338     return false;
3339   return true;
3340 }
3341 
3342 template <typename Derived>
3343 bool VISITORCLASS<Derived>::TraverseHLSLSV_GroupIndexAttr(HLSLSV_GroupIndexAttr *A) {
3344   if (!getDerived().VisitAttr(A))
3345     return false;
3346   if (!getDerived().VisitHLSLSV_GroupIndexAttr(A))
3347     return false;
3348   return true;
3349 }
3350 
3351 template <typename Derived>
3352 bool VISITORCLASS<Derived>::TraverseHLSLSV_GroupThreadIDAttr(HLSLSV_GroupThreadIDAttr *A) {
3353   if (!getDerived().VisitAttr(A))
3354     return false;
3355   if (!getDerived().VisitHLSLSV_GroupThreadIDAttr(A))
3356     return false;
3357   return true;
3358 }
3359 
3360 template <typename Derived>
3361 bool VISITORCLASS<Derived>::TraverseHLSLShaderAttr(HLSLShaderAttr *A) {
3362   if (!getDerived().VisitAttr(A))
3363     return false;
3364   if (!getDerived().VisitHLSLShaderAttr(A))
3365     return false;
3366   return true;
3367 }
3368 
3369 template <typename Derived>
3370 bool VISITORCLASS<Derived>::TraverseHLSLWaveSizeAttr(HLSLWaveSizeAttr *A) {
3371   if (!getDerived().VisitAttr(A))
3372     return false;
3373   if (!getDerived().VisitHLSLWaveSizeAttr(A))
3374     return false;
3375   return true;
3376 }
3377 
3378 template <typename Derived>
3379 bool VISITORCLASS<Derived>::TraverseHotAttr(HotAttr *A) {
3380   if (!getDerived().VisitAttr(A))
3381     return false;
3382   if (!getDerived().VisitHotAttr(A))
3383     return false;
3384   return true;
3385 }
3386 
3387 template <typename Derived>
3388 bool VISITORCLASS<Derived>::TraverseHybridPatchableAttr(HybridPatchableAttr *A) {
3389   if (!getDerived().VisitAttr(A))
3390     return false;
3391   if (!getDerived().VisitHybridPatchableAttr(A))
3392     return false;
3393   return true;
3394 }
3395 
3396 template <typename Derived>
3397 bool VISITORCLASS<Derived>::TraverseIBActionAttr(IBActionAttr *A) {
3398   if (!getDerived().VisitAttr(A))
3399     return false;
3400   if (!getDerived().VisitIBActionAttr(A))
3401     return false;
3402   return true;
3403 }
3404 
3405 template <typename Derived>
3406 bool VISITORCLASS<Derived>::TraverseIBOutletAttr(IBOutletAttr *A) {
3407   if (!getDerived().VisitAttr(A))
3408     return false;
3409   if (!getDerived().VisitIBOutletAttr(A))
3410     return false;
3411   return true;
3412 }
3413 
3414 template <typename Derived>
3415 bool VISITORCLASS<Derived>::TraverseIBOutletCollectionAttr(IBOutletCollectionAttr *A) {
3416   if (!getDerived().VisitAttr(A))
3417     return false;
3418   if (!getDerived().VisitIBOutletCollectionAttr(A))
3419     return false;
3420   if (auto *TSI = A->getInterfaceLoc())
3421     if (!getDerived().TraverseTypeLoc(TSI->getTypeLoc()))
3422       return false;
3423   return true;
3424 }
3425 
3426 template <typename Derived>
3427 bool VISITORCLASS<Derived>::TraverseIFuncAttr(IFuncAttr *A) {
3428   if (!getDerived().VisitAttr(A))
3429     return false;
3430   if (!getDerived().VisitIFuncAttr(A))
3431     return false;
3432   return true;
3433 }
3434 
3435 template <typename Derived>
3436 bool VISITORCLASS<Derived>::TraverseInitPriorityAttr(InitPriorityAttr *A) {
3437   if (!getDerived().VisitAttr(A))
3438     return false;
3439   if (!getDerived().VisitInitPriorityAttr(A))
3440     return false;
3441   return true;
3442 }
3443 
3444 template <typename Derived>
3445 bool VISITORCLASS<Derived>::TraverseInitSegAttr(InitSegAttr *A) {
3446   if (!getDerived().VisitAttr(A))
3447     return false;
3448   if (!getDerived().VisitInitSegAttr(A))
3449     return false;
3450   return true;
3451 }
3452 
3453 template <typename Derived>
3454 bool VISITORCLASS<Derived>::TraverseIntelOclBiccAttr(IntelOclBiccAttr *A) {
3455   if (!getDerived().VisitAttr(A))
3456     return false;
3457   if (!getDerived().VisitIntelOclBiccAttr(A))
3458     return false;
3459   return true;
3460 }
3461 
3462 template <typename Derived>
3463 bool VISITORCLASS<Derived>::TraverseInternalLinkageAttr(InternalLinkageAttr *A) {
3464   if (!getDerived().VisitAttr(A))
3465     return false;
3466   if (!getDerived().VisitInternalLinkageAttr(A))
3467     return false;
3468   return true;
3469 }
3470 
3471 template <typename Derived>
3472 bool VISITORCLASS<Derived>::TraverseLTOVisibilityPublicAttr(LTOVisibilityPublicAttr *A) {
3473   if (!getDerived().VisitAttr(A))
3474     return false;
3475   if (!getDerived().VisitLTOVisibilityPublicAttr(A))
3476     return false;
3477   return true;
3478 }
3479 
3480 template <typename Derived>
3481 bool VISITORCLASS<Derived>::TraverseLayoutVersionAttr(LayoutVersionAttr *A) {
3482   if (!getDerived().VisitAttr(A))
3483     return false;
3484   if (!getDerived().VisitLayoutVersionAttr(A))
3485     return false;
3486   return true;
3487 }
3488 
3489 template <typename Derived>
3490 bool VISITORCLASS<Derived>::TraverseLeafAttr(LeafAttr *A) {
3491   if (!getDerived().VisitAttr(A))
3492     return false;
3493   if (!getDerived().VisitLeafAttr(A))
3494     return false;
3495   return true;
3496 }
3497 
3498 template <typename Derived>
3499 bool VISITORCLASS<Derived>::TraverseLifetimeBoundAttr(LifetimeBoundAttr *A) {
3500   if (!getDerived().VisitAttr(A))
3501     return false;
3502   if (!getDerived().VisitLifetimeBoundAttr(A))
3503     return false;
3504   return true;
3505 }
3506 
3507 template <typename Derived>
3508 bool VISITORCLASS<Derived>::TraverseLifetimeCaptureByAttr(LifetimeCaptureByAttr *A) {
3509   if (!getDerived().VisitAttr(A))
3510     return false;
3511   if (!getDerived().VisitLifetimeCaptureByAttr(A))
3512     return false;
3513   return true;
3514 }
3515 
3516 template <typename Derived>
3517 bool VISITORCLASS<Derived>::TraverseLikelyAttr(LikelyAttr *A) {
3518   if (!getDerived().VisitAttr(A))
3519     return false;
3520   if (!getDerived().VisitLikelyAttr(A))
3521     return false;
3522   return true;
3523 }
3524 
3525 template <typename Derived>
3526 bool VISITORCLASS<Derived>::TraverseLoaderUninitializedAttr(LoaderUninitializedAttr *A) {
3527   if (!getDerived().VisitAttr(A))
3528     return false;
3529   if (!getDerived().VisitLoaderUninitializedAttr(A))
3530     return false;
3531   return true;
3532 }
3533 
3534 template <typename Derived>
3535 bool VISITORCLASS<Derived>::TraverseLockReturnedAttr(LockReturnedAttr *A) {
3536   if (!getDerived().VisitAttr(A))
3537     return false;
3538   if (!getDerived().VisitLockReturnedAttr(A))
3539     return false;
3540   if (!getDerived().TraverseStmt(A->getArg()))
3541     return false;
3542   return true;
3543 }
3544 
3545 template <typename Derived>
3546 bool VISITORCLASS<Derived>::TraverseLocksExcludedAttr(LocksExcludedAttr *A) {
3547   if (!getDerived().VisitAttr(A))
3548     return false;
3549   if (!getDerived().VisitLocksExcludedAttr(A))
3550     return false;
3551   {
3552     Expr * *I = A->args_begin();
3553     Expr * *E = A->args_end();
3554     for (; I != E; ++I) {
3555       if (!getDerived().TraverseStmt(*I))
3556         return false;
3557     }
3558   }
3559   return true;
3560 }
3561 
3562 template <typename Derived>
3563 bool VISITORCLASS<Derived>::TraverseLoopHintAttr(LoopHintAttr *A) {
3564   if (!getDerived().VisitAttr(A))
3565     return false;
3566   if (!getDerived().VisitLoopHintAttr(A))
3567     return false;
3568   if (!getDerived().TraverseStmt(A->getValue()))
3569     return false;
3570   return true;
3571 }
3572 
3573 template <typename Derived>
3574 bool VISITORCLASS<Derived>::TraverseM68kInterruptAttr(M68kInterruptAttr *A) {
3575   if (!getDerived().VisitAttr(A))
3576     return false;
3577   if (!getDerived().VisitM68kInterruptAttr(A))
3578     return false;
3579   return true;
3580 }
3581 
3582 template <typename Derived>
3583 bool VISITORCLASS<Derived>::TraverseM68kRTDAttr(M68kRTDAttr *A) {
3584   if (!getDerived().VisitAttr(A))
3585     return false;
3586   if (!getDerived().VisitM68kRTDAttr(A))
3587     return false;
3588   return true;
3589 }
3590 
3591 template <typename Derived>
3592 bool VISITORCLASS<Derived>::TraverseMIGServerRoutineAttr(MIGServerRoutineAttr *A) {
3593   if (!getDerived().VisitAttr(A))
3594     return false;
3595   if (!getDerived().VisitMIGServerRoutineAttr(A))
3596     return false;
3597   return true;
3598 }
3599 
3600 template <typename Derived>
3601 bool VISITORCLASS<Derived>::TraverseMSABIAttr(MSABIAttr *A) {
3602   if (!getDerived().VisitAttr(A))
3603     return false;
3604   if (!getDerived().VisitMSABIAttr(A))
3605     return false;
3606   return true;
3607 }
3608 
3609 template <typename Derived>
3610 bool VISITORCLASS<Derived>::TraverseMSAllocatorAttr(MSAllocatorAttr *A) {
3611   if (!getDerived().VisitAttr(A))
3612     return false;
3613   if (!getDerived().VisitMSAllocatorAttr(A))
3614     return false;
3615   return true;
3616 }
3617 
3618 template <typename Derived>
3619 bool VISITORCLASS<Derived>::TraverseMSConstexprAttr(MSConstexprAttr *A) {
3620   if (!getDerived().VisitAttr(A))
3621     return false;
3622   if (!getDerived().VisitMSConstexprAttr(A))
3623     return false;
3624   return true;
3625 }
3626 
3627 template <typename Derived>
3628 bool VISITORCLASS<Derived>::TraverseMSInheritanceAttr(MSInheritanceAttr *A) {
3629   if (!getDerived().VisitAttr(A))
3630     return false;
3631   if (!getDerived().VisitMSInheritanceAttr(A))
3632     return false;
3633   return true;
3634 }
3635 
3636 template <typename Derived>
3637 bool VISITORCLASS<Derived>::TraverseMSNoVTableAttr(MSNoVTableAttr *A) {
3638   if (!getDerived().VisitAttr(A))
3639     return false;
3640   if (!getDerived().VisitMSNoVTableAttr(A))
3641     return false;
3642   return true;
3643 }
3644 
3645 template <typename Derived>
3646 bool VISITORCLASS<Derived>::TraverseMSP430InterruptAttr(MSP430InterruptAttr *A) {
3647   if (!getDerived().VisitAttr(A))
3648     return false;
3649   if (!getDerived().VisitMSP430InterruptAttr(A))
3650     return false;
3651   return true;
3652 }
3653 
3654 template <typename Derived>
3655 bool VISITORCLASS<Derived>::TraverseMSStructAttr(MSStructAttr *A) {
3656   if (!getDerived().VisitAttr(A))
3657     return false;
3658   if (!getDerived().VisitMSStructAttr(A))
3659     return false;
3660   return true;
3661 }
3662 
3663 template <typename Derived>
3664 bool VISITORCLASS<Derived>::TraverseMSVtorDispAttr(MSVtorDispAttr *A) {
3665   if (!getDerived().VisitAttr(A))
3666     return false;
3667   if (!getDerived().VisitMSVtorDispAttr(A))
3668     return false;
3669   return true;
3670 }
3671 
3672 template <typename Derived>
3673 bool VISITORCLASS<Derived>::TraverseMaxFieldAlignmentAttr(MaxFieldAlignmentAttr *A) {
3674   if (!getDerived().VisitAttr(A))
3675     return false;
3676   if (!getDerived().VisitMaxFieldAlignmentAttr(A))
3677     return false;
3678   return true;
3679 }
3680 
3681 template <typename Derived>
3682 bool VISITORCLASS<Derived>::TraverseMayAliasAttr(MayAliasAttr *A) {
3683   if (!getDerived().VisitAttr(A))
3684     return false;
3685   if (!getDerived().VisitMayAliasAttr(A))
3686     return false;
3687   return true;
3688 }
3689 
3690 template <typename Derived>
3691 bool VISITORCLASS<Derived>::TraverseMaybeUndefAttr(MaybeUndefAttr *A) {
3692   if (!getDerived().VisitAttr(A))
3693     return false;
3694   if (!getDerived().VisitMaybeUndefAttr(A))
3695     return false;
3696   return true;
3697 }
3698 
3699 template <typename Derived>
3700 bool VISITORCLASS<Derived>::TraverseMicroMipsAttr(MicroMipsAttr *A) {
3701   if (!getDerived().VisitAttr(A))
3702     return false;
3703   if (!getDerived().VisitMicroMipsAttr(A))
3704     return false;
3705   return true;
3706 }
3707 
3708 template <typename Derived>
3709 bool VISITORCLASS<Derived>::TraverseMinSizeAttr(MinSizeAttr *A) {
3710   if (!getDerived().VisitAttr(A))
3711     return false;
3712   if (!getDerived().VisitMinSizeAttr(A))
3713     return false;
3714   return true;
3715 }
3716 
3717 template <typename Derived>
3718 bool VISITORCLASS<Derived>::TraverseMinVectorWidthAttr(MinVectorWidthAttr *A) {
3719   if (!getDerived().VisitAttr(A))
3720     return false;
3721   if (!getDerived().VisitMinVectorWidthAttr(A))
3722     return false;
3723   return true;
3724 }
3725 
3726 template <typename Derived>
3727 bool VISITORCLASS<Derived>::TraverseMips16Attr(Mips16Attr *A) {
3728   if (!getDerived().VisitAttr(A))
3729     return false;
3730   if (!getDerived().VisitMips16Attr(A))
3731     return false;
3732   return true;
3733 }
3734 
3735 template <typename Derived>
3736 bool VISITORCLASS<Derived>::TraverseMipsInterruptAttr(MipsInterruptAttr *A) {
3737   if (!getDerived().VisitAttr(A))
3738     return false;
3739   if (!getDerived().VisitMipsInterruptAttr(A))
3740     return false;
3741   return true;
3742 }
3743 
3744 template <typename Derived>
3745 bool VISITORCLASS<Derived>::TraverseMipsLongCallAttr(MipsLongCallAttr *A) {
3746   if (!getDerived().VisitAttr(A))
3747     return false;
3748   if (!getDerived().VisitMipsLongCallAttr(A))
3749     return false;
3750   return true;
3751 }
3752 
3753 template <typename Derived>
3754 bool VISITORCLASS<Derived>::TraverseMipsShortCallAttr(MipsShortCallAttr *A) {
3755   if (!getDerived().VisitAttr(A))
3756     return false;
3757   if (!getDerived().VisitMipsShortCallAttr(A))
3758     return false;
3759   return true;
3760 }
3761 
3762 template <typename Derived>
3763 bool VISITORCLASS<Derived>::TraverseModeAttr(ModeAttr *A) {
3764   if (!getDerived().VisitAttr(A))
3765     return false;
3766   if (!getDerived().VisitModeAttr(A))
3767     return false;
3768   return true;
3769 }
3770 
3771 template <typename Derived>
3772 bool VISITORCLASS<Derived>::TraverseMustTailAttr(MustTailAttr *A) {
3773   if (!getDerived().VisitAttr(A))
3774     return false;
3775   if (!getDerived().VisitMustTailAttr(A))
3776     return false;
3777   return true;
3778 }
3779 
3780 template <typename Derived>
3781 bool VISITORCLASS<Derived>::TraverseNSConsumedAttr(NSConsumedAttr *A) {
3782   if (!getDerived().VisitAttr(A))
3783     return false;
3784   if (!getDerived().VisitNSConsumedAttr(A))
3785     return false;
3786   return true;
3787 }
3788 
3789 template <typename Derived>
3790 bool VISITORCLASS<Derived>::TraverseNSConsumesSelfAttr(NSConsumesSelfAttr *A) {
3791   if (!getDerived().VisitAttr(A))
3792     return false;
3793   if (!getDerived().VisitNSConsumesSelfAttr(A))
3794     return false;
3795   return true;
3796 }
3797 
3798 template <typename Derived>
3799 bool VISITORCLASS<Derived>::TraverseNSErrorDomainAttr(NSErrorDomainAttr *A) {
3800   if (!getDerived().VisitAttr(A))
3801     return false;
3802   if (!getDerived().VisitNSErrorDomainAttr(A))
3803     return false;
3804   return true;
3805 }
3806 
3807 template <typename Derived>
3808 bool VISITORCLASS<Derived>::TraverseNSReturnsAutoreleasedAttr(NSReturnsAutoreleasedAttr *A) {
3809   if (!getDerived().VisitAttr(A))
3810     return false;
3811   if (!getDerived().VisitNSReturnsAutoreleasedAttr(A))
3812     return false;
3813   return true;
3814 }
3815 
3816 template <typename Derived>
3817 bool VISITORCLASS<Derived>::TraverseNSReturnsNotRetainedAttr(NSReturnsNotRetainedAttr *A) {
3818   if (!getDerived().VisitAttr(A))
3819     return false;
3820   if (!getDerived().VisitNSReturnsNotRetainedAttr(A))
3821     return false;
3822   return true;
3823 }
3824 
3825 template <typename Derived>
3826 bool VISITORCLASS<Derived>::TraverseNSReturnsRetainedAttr(NSReturnsRetainedAttr *A) {
3827   if (!getDerived().VisitAttr(A))
3828     return false;
3829   if (!getDerived().VisitNSReturnsRetainedAttr(A))
3830     return false;
3831   return true;
3832 }
3833 
3834 template <typename Derived>
3835 bool VISITORCLASS<Derived>::TraverseNVPTXKernelAttr(NVPTXKernelAttr *A) {
3836   if (!getDerived().VisitAttr(A))
3837     return false;
3838   if (!getDerived().VisitNVPTXKernelAttr(A))
3839     return false;
3840   return true;
3841 }
3842 
3843 template <typename Derived>
3844 bool VISITORCLASS<Derived>::TraverseNakedAttr(NakedAttr *A) {
3845   if (!getDerived().VisitAttr(A))
3846     return false;
3847   if (!getDerived().VisitNakedAttr(A))
3848     return false;
3849   return true;
3850 }
3851 
3852 template <typename Derived>
3853 bool VISITORCLASS<Derived>::TraverseNoAliasAttr(NoAliasAttr *A) {
3854   if (!getDerived().VisitAttr(A))
3855     return false;
3856   if (!getDerived().VisitNoAliasAttr(A))
3857     return false;
3858   return true;
3859 }
3860 
3861 template <typename Derived>
3862 bool VISITORCLASS<Derived>::TraverseNoBuiltinAttr(NoBuiltinAttr *A) {
3863   if (!getDerived().VisitAttr(A))
3864     return false;
3865   if (!getDerived().VisitNoBuiltinAttr(A))
3866     return false;
3867   return true;
3868 }
3869 
3870 template <typename Derived>
3871 bool VISITORCLASS<Derived>::TraverseNoCommonAttr(NoCommonAttr *A) {
3872   if (!getDerived().VisitAttr(A))
3873     return false;
3874   if (!getDerived().VisitNoCommonAttr(A))
3875     return false;
3876   return true;
3877 }
3878 
3879 template <typename Derived>
3880 bool VISITORCLASS<Derived>::TraverseNoConvergentAttr(NoConvergentAttr *A) {
3881   if (!getDerived().VisitAttr(A))
3882     return false;
3883   if (!getDerived().VisitNoConvergentAttr(A))
3884     return false;
3885   return true;
3886 }
3887 
3888 template <typename Derived>
3889 bool VISITORCLASS<Derived>::TraverseNoDebugAttr(NoDebugAttr *A) {
3890   if (!getDerived().VisitAttr(A))
3891     return false;
3892   if (!getDerived().VisitNoDebugAttr(A))
3893     return false;
3894   return true;
3895 }
3896 
3897 template <typename Derived>
3898 bool VISITORCLASS<Derived>::TraverseNoDerefAttr(NoDerefAttr *A) {
3899   if (!getDerived().VisitAttr(A))
3900     return false;
3901   if (!getDerived().VisitNoDerefAttr(A))
3902     return false;
3903   return true;
3904 }
3905 
3906 template <typename Derived>
3907 bool VISITORCLASS<Derived>::TraverseNoDestroyAttr(NoDestroyAttr *A) {
3908   if (!getDerived().VisitAttr(A))
3909     return false;
3910   if (!getDerived().VisitNoDestroyAttr(A))
3911     return false;
3912   return true;
3913 }
3914 
3915 template <typename Derived>
3916 bool VISITORCLASS<Derived>::TraverseNoDuplicateAttr(NoDuplicateAttr *A) {
3917   if (!getDerived().VisitAttr(A))
3918     return false;
3919   if (!getDerived().VisitNoDuplicateAttr(A))
3920     return false;
3921   return true;
3922 }
3923 
3924 template <typename Derived>
3925 bool VISITORCLASS<Derived>::TraverseNoEscapeAttr(NoEscapeAttr *A) {
3926   if (!getDerived().VisitAttr(A))
3927     return false;
3928   if (!getDerived().VisitNoEscapeAttr(A))
3929     return false;
3930   return true;
3931 }
3932 
3933 template <typename Derived>
3934 bool VISITORCLASS<Derived>::TraverseNoInlineAttr(NoInlineAttr *A) {
3935   if (!getDerived().VisitAttr(A))
3936     return false;
3937   if (!getDerived().VisitNoInlineAttr(A))
3938     return false;
3939   return true;
3940 }
3941 
3942 template <typename Derived>
3943 bool VISITORCLASS<Derived>::TraverseNoInstrumentFunctionAttr(NoInstrumentFunctionAttr *A) {
3944   if (!getDerived().VisitAttr(A))
3945     return false;
3946   if (!getDerived().VisitNoInstrumentFunctionAttr(A))
3947     return false;
3948   return true;
3949 }
3950 
3951 template <typename Derived>
3952 bool VISITORCLASS<Derived>::TraverseNoMergeAttr(NoMergeAttr *A) {
3953   if (!getDerived().VisitAttr(A))
3954     return false;
3955   if (!getDerived().VisitNoMergeAttr(A))
3956     return false;
3957   return true;
3958 }
3959 
3960 template <typename Derived>
3961 bool VISITORCLASS<Derived>::TraverseNoMicroMipsAttr(NoMicroMipsAttr *A) {
3962   if (!getDerived().VisitAttr(A))
3963     return false;
3964   if (!getDerived().VisitNoMicroMipsAttr(A))
3965     return false;
3966   return true;
3967 }
3968 
3969 template <typename Derived>
3970 bool VISITORCLASS<Derived>::TraverseNoMips16Attr(NoMips16Attr *A) {
3971   if (!getDerived().VisitAttr(A))
3972     return false;
3973   if (!getDerived().VisitNoMips16Attr(A))
3974     return false;
3975   return true;
3976 }
3977 
3978 template <typename Derived>
3979 bool VISITORCLASS<Derived>::TraverseNoProfileFunctionAttr(NoProfileFunctionAttr *A) {
3980   if (!getDerived().VisitAttr(A))
3981     return false;
3982   if (!getDerived().VisitNoProfileFunctionAttr(A))
3983     return false;
3984   return true;
3985 }
3986 
3987 template <typename Derived>
3988 bool VISITORCLASS<Derived>::TraverseNoRandomizeLayoutAttr(NoRandomizeLayoutAttr *A) {
3989   if (!getDerived().VisitAttr(A))
3990     return false;
3991   if (!getDerived().VisitNoRandomizeLayoutAttr(A))
3992     return false;
3993   return true;
3994 }
3995 
3996 template <typename Derived>
3997 bool VISITORCLASS<Derived>::TraverseNoReturnAttr(NoReturnAttr *A) {
3998   if (!getDerived().VisitAttr(A))
3999     return false;
4000   if (!getDerived().VisitNoReturnAttr(A))
4001     return false;
4002   return true;
4003 }
4004 
4005 template <typename Derived>
4006 bool VISITORCLASS<Derived>::TraverseNoSanitizeAttr(NoSanitizeAttr *A) {
4007   if (!getDerived().VisitAttr(A))
4008     return false;
4009   if (!getDerived().VisitNoSanitizeAttr(A))
4010     return false;
4011   return true;
4012 }
4013 
4014 template <typename Derived>
4015 bool VISITORCLASS<Derived>::TraverseNoSpecializationsAttr(NoSpecializationsAttr *A) {
4016   if (!getDerived().VisitAttr(A))
4017     return false;
4018   if (!getDerived().VisitNoSpecializationsAttr(A))
4019     return false;
4020   return true;
4021 }
4022 
4023 template <typename Derived>
4024 bool VISITORCLASS<Derived>::TraverseNoSpeculativeLoadHardeningAttr(NoSpeculativeLoadHardeningAttr *A) {
4025   if (!getDerived().VisitAttr(A))
4026     return false;
4027   if (!getDerived().VisitNoSpeculativeLoadHardeningAttr(A))
4028     return false;
4029   return true;
4030 }
4031 
4032 template <typename Derived>
4033 bool VISITORCLASS<Derived>::TraverseNoSplitStackAttr(NoSplitStackAttr *A) {
4034   if (!getDerived().VisitAttr(A))
4035     return false;
4036   if (!getDerived().VisitNoSplitStackAttr(A))
4037     return false;
4038   return true;
4039 }
4040 
4041 template <typename Derived>
4042 bool VISITORCLASS<Derived>::TraverseNoStackProtectorAttr(NoStackProtectorAttr *A) {
4043   if (!getDerived().VisitAttr(A))
4044     return false;
4045   if (!getDerived().VisitNoStackProtectorAttr(A))
4046     return false;
4047   return true;
4048 }
4049 
4050 template <typename Derived>
4051 bool VISITORCLASS<Derived>::TraverseNoThreadSafetyAnalysisAttr(NoThreadSafetyAnalysisAttr *A) {
4052   if (!getDerived().VisitAttr(A))
4053     return false;
4054   if (!getDerived().VisitNoThreadSafetyAnalysisAttr(A))
4055     return false;
4056   return true;
4057 }
4058 
4059 template <typename Derived>
4060 bool VISITORCLASS<Derived>::TraverseNoThrowAttr(NoThrowAttr *A) {
4061   if (!getDerived().VisitAttr(A))
4062     return false;
4063   if (!getDerived().VisitNoThrowAttr(A))
4064     return false;
4065   return true;
4066 }
4067 
4068 template <typename Derived>
4069 bool VISITORCLASS<Derived>::TraverseNoTrivialAutoVarInitAttr(NoTrivialAutoVarInitAttr *A) {
4070   if (!getDerived().VisitAttr(A))
4071     return false;
4072   if (!getDerived().VisitNoTrivialAutoVarInitAttr(A))
4073     return false;
4074   return true;
4075 }
4076 
4077 template <typename Derived>
4078 bool VISITORCLASS<Derived>::TraverseNoUniqueAddressAttr(NoUniqueAddressAttr *A) {
4079   if (!getDerived().VisitAttr(A))
4080     return false;
4081   if (!getDerived().VisitNoUniqueAddressAttr(A))
4082     return false;
4083   return true;
4084 }
4085 
4086 template <typename Derived>
4087 bool VISITORCLASS<Derived>::TraverseNoUwtableAttr(NoUwtableAttr *A) {
4088   if (!getDerived().VisitAttr(A))
4089     return false;
4090   if (!getDerived().VisitNoUwtableAttr(A))
4091     return false;
4092   return true;
4093 }
4094 
4095 template <typename Derived>
4096 bool VISITORCLASS<Derived>::TraverseNonAllocatingAttr(NonAllocatingAttr *A) {
4097   if (!getDerived().VisitAttr(A))
4098     return false;
4099   if (!getDerived().VisitNonAllocatingAttr(A))
4100     return false;
4101   if (!getDerived().TraverseStmt(A->getCond()))
4102     return false;
4103   return true;
4104 }
4105 
4106 template <typename Derived>
4107 bool VISITORCLASS<Derived>::TraverseNonBlockingAttr(NonBlockingAttr *A) {
4108   if (!getDerived().VisitAttr(A))
4109     return false;
4110   if (!getDerived().VisitNonBlockingAttr(A))
4111     return false;
4112   if (!getDerived().TraverseStmt(A->getCond()))
4113     return false;
4114   return true;
4115 }
4116 
4117 template <typename Derived>
4118 bool VISITORCLASS<Derived>::TraverseNonNullAttr(NonNullAttr *A) {
4119   if (!getDerived().VisitAttr(A))
4120     return false;
4121   if (!getDerived().VisitNonNullAttr(A))
4122     return false;
4123   return true;
4124 }
4125 
4126 template <typename Derived>
4127 bool VISITORCLASS<Derived>::TraverseNotTailCalledAttr(NotTailCalledAttr *A) {
4128   if (!getDerived().VisitAttr(A))
4129     return false;
4130   if (!getDerived().VisitNotTailCalledAttr(A))
4131     return false;
4132   return true;
4133 }
4134 
4135 template <typename Derived>
4136 bool VISITORCLASS<Derived>::TraverseOMPAllocateDeclAttr(OMPAllocateDeclAttr *A) {
4137   if (!getDerived().VisitAttr(A))
4138     return false;
4139   if (!getDerived().VisitOMPAllocateDeclAttr(A))
4140     return false;
4141   if (!getDerived().TraverseStmt(A->getAllocator()))
4142     return false;
4143   if (!getDerived().TraverseStmt(A->getAlignment()))
4144     return false;
4145   return true;
4146 }
4147 
4148 template <typename Derived>
4149 bool VISITORCLASS<Derived>::TraverseOMPAssumeAttr(OMPAssumeAttr *A) {
4150   if (!getDerived().VisitAttr(A))
4151     return false;
4152   if (!getDerived().VisitOMPAssumeAttr(A))
4153     return false;
4154   return true;
4155 }
4156 
4157 template <typename Derived>
4158 bool VISITORCLASS<Derived>::TraverseOMPCaptureKindAttr(OMPCaptureKindAttr *A) {
4159   if (!getDerived().VisitAttr(A))
4160     return false;
4161   if (!getDerived().VisitOMPCaptureKindAttr(A))
4162     return false;
4163   return true;
4164 }
4165 
4166 template <typename Derived>
4167 bool VISITORCLASS<Derived>::TraverseOMPCaptureNoInitAttr(OMPCaptureNoInitAttr *A) {
4168   if (!getDerived().VisitAttr(A))
4169     return false;
4170   if (!getDerived().VisitOMPCaptureNoInitAttr(A))
4171     return false;
4172   return true;
4173 }
4174 
4175 template <typename Derived>
4176 bool VISITORCLASS<Derived>::TraverseOMPDeclareSimdDeclAttr(OMPDeclareSimdDeclAttr *A) {
4177   if (!getDerived().VisitAttr(A))
4178     return false;
4179   if (!getDerived().VisitOMPDeclareSimdDeclAttr(A))
4180     return false;
4181   if (!getDerived().TraverseStmt(A->getSimdlen()))
4182     return false;
4183   {
4184     Expr * *I = A->uniforms_begin();
4185     Expr * *E = A->uniforms_end();
4186     for (; I != E; ++I) {
4187       if (!getDerived().TraverseStmt(*I))
4188         return false;
4189     }
4190   }
4191   {
4192     Expr * *I = A->aligneds_begin();
4193     Expr * *E = A->aligneds_end();
4194     for (; I != E; ++I) {
4195       if (!getDerived().TraverseStmt(*I))
4196         return false;
4197     }
4198   }
4199   {
4200     Expr * *I = A->alignments_begin();
4201     Expr * *E = A->alignments_end();
4202     for (; I != E; ++I) {
4203       if (!getDerived().TraverseStmt(*I))
4204         return false;
4205     }
4206   }
4207   {
4208     Expr * *I = A->linears_begin();
4209     Expr * *E = A->linears_end();
4210     for (; I != E; ++I) {
4211       if (!getDerived().TraverseStmt(*I))
4212         return false;
4213     }
4214   }
4215   {
4216     Expr * *I = A->steps_begin();
4217     Expr * *E = A->steps_end();
4218     for (; I != E; ++I) {
4219       if (!getDerived().TraverseStmt(*I))
4220         return false;
4221     }
4222   }
4223   return true;
4224 }
4225 
4226 template <typename Derived>
4227 bool VISITORCLASS<Derived>::TraverseOMPDeclareTargetDeclAttr(OMPDeclareTargetDeclAttr *A) {
4228   if (!getDerived().VisitAttr(A))
4229     return false;
4230   if (!getDerived().VisitOMPDeclareTargetDeclAttr(A))
4231     return false;
4232   if (!getDerived().TraverseStmt(A->getIndirectExpr()))
4233     return false;
4234   return true;
4235 }
4236 
4237 template <typename Derived>
4238 bool VISITORCLASS<Derived>::TraverseOMPDeclareVariantAttr(OMPDeclareVariantAttr *A) {
4239   if (!getDerived().VisitAttr(A))
4240     return false;
4241   if (!getDerived().VisitOMPDeclareVariantAttr(A))
4242     return false;
4243   if (!getDerived().TraverseStmt(A->getVariantFuncRef()))
4244     return false;
4245   {
4246     Expr * *I = A->adjustArgsNothing_begin();
4247     Expr * *E = A->adjustArgsNothing_end();
4248     for (; I != E; ++I) {
4249       if (!getDerived().TraverseStmt(*I))
4250         return false;
4251     }
4252   }
4253   {
4254     Expr * *I = A->adjustArgsNeedDevicePtr_begin();
4255     Expr * *E = A->adjustArgsNeedDevicePtr_end();
4256     for (; I != E; ++I) {
4257       if (!getDerived().TraverseStmt(*I))
4258         return false;
4259     }
4260   }
4261   return true;
4262 }
4263 
4264 template <typename Derived>
4265 bool VISITORCLASS<Derived>::TraverseOMPReferencedVarAttr(OMPReferencedVarAttr *A) {
4266   if (!getDerived().VisitAttr(A))
4267     return false;
4268   if (!getDerived().VisitOMPReferencedVarAttr(A))
4269     return false;
4270   if (!getDerived().TraverseStmt(A->getRef()))
4271     return false;
4272   return true;
4273 }
4274 
4275 template <typename Derived>
4276 bool VISITORCLASS<Derived>::TraverseOMPThreadPrivateDeclAttr(OMPThreadPrivateDeclAttr *A) {
4277   if (!getDerived().VisitAttr(A))
4278     return false;
4279   if (!getDerived().VisitOMPThreadPrivateDeclAttr(A))
4280     return false;
4281   return true;
4282 }
4283 
4284 template <typename Derived>
4285 bool VISITORCLASS<Derived>::TraverseOSConsumedAttr(OSConsumedAttr *A) {
4286   if (!getDerived().VisitAttr(A))
4287     return false;
4288   if (!getDerived().VisitOSConsumedAttr(A))
4289     return false;
4290   return true;
4291 }
4292 
4293 template <typename Derived>
4294 bool VISITORCLASS<Derived>::TraverseOSConsumesThisAttr(OSConsumesThisAttr *A) {
4295   if (!getDerived().VisitAttr(A))
4296     return false;
4297   if (!getDerived().VisitOSConsumesThisAttr(A))
4298     return false;
4299   return true;
4300 }
4301 
4302 template <typename Derived>
4303 bool VISITORCLASS<Derived>::TraverseOSReturnsNotRetainedAttr(OSReturnsNotRetainedAttr *A) {
4304   if (!getDerived().VisitAttr(A))
4305     return false;
4306   if (!getDerived().VisitOSReturnsNotRetainedAttr(A))
4307     return false;
4308   return true;
4309 }
4310 
4311 template <typename Derived>
4312 bool VISITORCLASS<Derived>::TraverseOSReturnsRetainedAttr(OSReturnsRetainedAttr *A) {
4313   if (!getDerived().VisitAttr(A))
4314     return false;
4315   if (!getDerived().VisitOSReturnsRetainedAttr(A))
4316     return false;
4317   return true;
4318 }
4319 
4320 template <typename Derived>
4321 bool VISITORCLASS<Derived>::TraverseOSReturnsRetainedOnNonZeroAttr(OSReturnsRetainedOnNonZeroAttr *A) {
4322   if (!getDerived().VisitAttr(A))
4323     return false;
4324   if (!getDerived().VisitOSReturnsRetainedOnNonZeroAttr(A))
4325     return false;
4326   return true;
4327 }
4328 
4329 template <typename Derived>
4330 bool VISITORCLASS<Derived>::TraverseOSReturnsRetainedOnZeroAttr(OSReturnsRetainedOnZeroAttr *A) {
4331   if (!getDerived().VisitAttr(A))
4332     return false;
4333   if (!getDerived().VisitOSReturnsRetainedOnZeroAttr(A))
4334     return false;
4335   return true;
4336 }
4337 
4338 template <typename Derived>
4339 bool VISITORCLASS<Derived>::TraverseObjCBoxableAttr(ObjCBoxableAttr *A) {
4340   if (!getDerived().VisitAttr(A))
4341     return false;
4342   if (!getDerived().VisitObjCBoxableAttr(A))
4343     return false;
4344   return true;
4345 }
4346 
4347 template <typename Derived>
4348 bool VISITORCLASS<Derived>::TraverseObjCBridgeAttr(ObjCBridgeAttr *A) {
4349   if (!getDerived().VisitAttr(A))
4350     return false;
4351   if (!getDerived().VisitObjCBridgeAttr(A))
4352     return false;
4353   return true;
4354 }
4355 
4356 template <typename Derived>
4357 bool VISITORCLASS<Derived>::TraverseObjCBridgeMutableAttr(ObjCBridgeMutableAttr *A) {
4358   if (!getDerived().VisitAttr(A))
4359     return false;
4360   if (!getDerived().VisitObjCBridgeMutableAttr(A))
4361     return false;
4362   return true;
4363 }
4364 
4365 template <typename Derived>
4366 bool VISITORCLASS<Derived>::TraverseObjCBridgeRelatedAttr(ObjCBridgeRelatedAttr *A) {
4367   if (!getDerived().VisitAttr(A))
4368     return false;
4369   if (!getDerived().VisitObjCBridgeRelatedAttr(A))
4370     return false;
4371   return true;
4372 }
4373 
4374 template <typename Derived>
4375 bool VISITORCLASS<Derived>::TraverseObjCClassStubAttr(ObjCClassStubAttr *A) {
4376   if (!getDerived().VisitAttr(A))
4377     return false;
4378   if (!getDerived().VisitObjCClassStubAttr(A))
4379     return false;
4380   return true;
4381 }
4382 
4383 template <typename Derived>
4384 bool VISITORCLASS<Derived>::TraverseObjCDesignatedInitializerAttr(ObjCDesignatedInitializerAttr *A) {
4385   if (!getDerived().VisitAttr(A))
4386     return false;
4387   if (!getDerived().VisitObjCDesignatedInitializerAttr(A))
4388     return false;
4389   return true;
4390 }
4391 
4392 template <typename Derived>
4393 bool VISITORCLASS<Derived>::TraverseObjCDirectAttr(ObjCDirectAttr *A) {
4394   if (!getDerived().VisitAttr(A))
4395     return false;
4396   if (!getDerived().VisitObjCDirectAttr(A))
4397     return false;
4398   return true;
4399 }
4400 
4401 template <typename Derived>
4402 bool VISITORCLASS<Derived>::TraverseObjCDirectMembersAttr(ObjCDirectMembersAttr *A) {
4403   if (!getDerived().VisitAttr(A))
4404     return false;
4405   if (!getDerived().VisitObjCDirectMembersAttr(A))
4406     return false;
4407   return true;
4408 }
4409 
4410 template <typename Derived>
4411 bool VISITORCLASS<Derived>::TraverseObjCExceptionAttr(ObjCExceptionAttr *A) {
4412   if (!getDerived().VisitAttr(A))
4413     return false;
4414   if (!getDerived().VisitObjCExceptionAttr(A))
4415     return false;
4416   return true;
4417 }
4418 
4419 template <typename Derived>
4420 bool VISITORCLASS<Derived>::TraverseObjCExplicitProtocolImplAttr(ObjCExplicitProtocolImplAttr *A) {
4421   if (!getDerived().VisitAttr(A))
4422     return false;
4423   if (!getDerived().VisitObjCExplicitProtocolImplAttr(A))
4424     return false;
4425   return true;
4426 }
4427 
4428 template <typename Derived>
4429 bool VISITORCLASS<Derived>::TraverseObjCExternallyRetainedAttr(ObjCExternallyRetainedAttr *A) {
4430   if (!getDerived().VisitAttr(A))
4431     return false;
4432   if (!getDerived().VisitObjCExternallyRetainedAttr(A))
4433     return false;
4434   return true;
4435 }
4436 
4437 template <typename Derived>
4438 bool VISITORCLASS<Derived>::TraverseObjCGCAttr(ObjCGCAttr *A) {
4439   if (!getDerived().VisitAttr(A))
4440     return false;
4441   if (!getDerived().VisitObjCGCAttr(A))
4442     return false;
4443   return true;
4444 }
4445 
4446 template <typename Derived>
4447 bool VISITORCLASS<Derived>::TraverseObjCIndependentClassAttr(ObjCIndependentClassAttr *A) {
4448   if (!getDerived().VisitAttr(A))
4449     return false;
4450   if (!getDerived().VisitObjCIndependentClassAttr(A))
4451     return false;
4452   return true;
4453 }
4454 
4455 template <typename Derived>
4456 bool VISITORCLASS<Derived>::TraverseObjCInertUnsafeUnretainedAttr(ObjCInertUnsafeUnretainedAttr *A) {
4457   if (!getDerived().VisitAttr(A))
4458     return false;
4459   if (!getDerived().VisitObjCInertUnsafeUnretainedAttr(A))
4460     return false;
4461   return true;
4462 }
4463 
4464 template <typename Derived>
4465 bool VISITORCLASS<Derived>::TraverseObjCKindOfAttr(ObjCKindOfAttr *A) {
4466   if (!getDerived().VisitAttr(A))
4467     return false;
4468   if (!getDerived().VisitObjCKindOfAttr(A))
4469     return false;
4470   return true;
4471 }
4472 
4473 template <typename Derived>
4474 bool VISITORCLASS<Derived>::TraverseObjCMethodFamilyAttr(ObjCMethodFamilyAttr *A) {
4475   if (!getDerived().VisitAttr(A))
4476     return false;
4477   if (!getDerived().VisitObjCMethodFamilyAttr(A))
4478     return false;
4479   return true;
4480 }
4481 
4482 template <typename Derived>
4483 bool VISITORCLASS<Derived>::TraverseObjCNSObjectAttr(ObjCNSObjectAttr *A) {
4484   if (!getDerived().VisitAttr(A))
4485     return false;
4486   if (!getDerived().VisitObjCNSObjectAttr(A))
4487     return false;
4488   return true;
4489 }
4490 
4491 template <typename Derived>
4492 bool VISITORCLASS<Derived>::TraverseObjCNonLazyClassAttr(ObjCNonLazyClassAttr *A) {
4493   if (!getDerived().VisitAttr(A))
4494     return false;
4495   if (!getDerived().VisitObjCNonLazyClassAttr(A))
4496     return false;
4497   return true;
4498 }
4499 
4500 template <typename Derived>
4501 bool VISITORCLASS<Derived>::TraverseObjCNonRuntimeProtocolAttr(ObjCNonRuntimeProtocolAttr *A) {
4502   if (!getDerived().VisitAttr(A))
4503     return false;
4504   if (!getDerived().VisitObjCNonRuntimeProtocolAttr(A))
4505     return false;
4506   return true;
4507 }
4508 
4509 template <typename Derived>
4510 bool VISITORCLASS<Derived>::TraverseObjCOwnershipAttr(ObjCOwnershipAttr *A) {
4511   if (!getDerived().VisitAttr(A))
4512     return false;
4513   if (!getDerived().VisitObjCOwnershipAttr(A))
4514     return false;
4515   return true;
4516 }
4517 
4518 template <typename Derived>
4519 bool VISITORCLASS<Derived>::TraverseObjCPreciseLifetimeAttr(ObjCPreciseLifetimeAttr *A) {
4520   if (!getDerived().VisitAttr(A))
4521     return false;
4522   if (!getDerived().VisitObjCPreciseLifetimeAttr(A))
4523     return false;
4524   return true;
4525 }
4526 
4527 template <typename Derived>
4528 bool VISITORCLASS<Derived>::TraverseObjCRequiresPropertyDefsAttr(ObjCRequiresPropertyDefsAttr *A) {
4529   if (!getDerived().VisitAttr(A))
4530     return false;
4531   if (!getDerived().VisitObjCRequiresPropertyDefsAttr(A))
4532     return false;
4533   return true;
4534 }
4535 
4536 template <typename Derived>
4537 bool VISITORCLASS<Derived>::TraverseObjCRequiresSuperAttr(ObjCRequiresSuperAttr *A) {
4538   if (!getDerived().VisitAttr(A))
4539     return false;
4540   if (!getDerived().VisitObjCRequiresSuperAttr(A))
4541     return false;
4542   return true;
4543 }
4544 
4545 template <typename Derived>
4546 bool VISITORCLASS<Derived>::TraverseObjCReturnsInnerPointerAttr(ObjCReturnsInnerPointerAttr *A) {
4547   if (!getDerived().VisitAttr(A))
4548     return false;
4549   if (!getDerived().VisitObjCReturnsInnerPointerAttr(A))
4550     return false;
4551   return true;
4552 }
4553 
4554 template <typename Derived>
4555 bool VISITORCLASS<Derived>::TraverseObjCRootClassAttr(ObjCRootClassAttr *A) {
4556   if (!getDerived().VisitAttr(A))
4557     return false;
4558   if (!getDerived().VisitObjCRootClassAttr(A))
4559     return false;
4560   return true;
4561 }
4562 
4563 template <typename Derived>
4564 bool VISITORCLASS<Derived>::TraverseObjCRuntimeNameAttr(ObjCRuntimeNameAttr *A) {
4565   if (!getDerived().VisitAttr(A))
4566     return false;
4567   if (!getDerived().VisitObjCRuntimeNameAttr(A))
4568     return false;
4569   return true;
4570 }
4571 
4572 template <typename Derived>
4573 bool VISITORCLASS<Derived>::TraverseObjCRuntimeVisibleAttr(ObjCRuntimeVisibleAttr *A) {
4574   if (!getDerived().VisitAttr(A))
4575     return false;
4576   if (!getDerived().VisitObjCRuntimeVisibleAttr(A))
4577     return false;
4578   return true;
4579 }
4580 
4581 template <typename Derived>
4582 bool VISITORCLASS<Derived>::TraverseObjCSubclassingRestrictedAttr(ObjCSubclassingRestrictedAttr *A) {
4583   if (!getDerived().VisitAttr(A))
4584     return false;
4585   if (!getDerived().VisitObjCSubclassingRestrictedAttr(A))
4586     return false;
4587   return true;
4588 }
4589 
4590 template <typename Derived>
4591 bool VISITORCLASS<Derived>::TraverseOpenCLAccessAttr(OpenCLAccessAttr *A) {
4592   if (!getDerived().VisitAttr(A))
4593     return false;
4594   if (!getDerived().VisitOpenCLAccessAttr(A))
4595     return false;
4596   return true;
4597 }
4598 
4599 template <typename Derived>
4600 bool VISITORCLASS<Derived>::TraverseOpenCLConstantAddressSpaceAttr(OpenCLConstantAddressSpaceAttr *A) {
4601   if (!getDerived().VisitAttr(A))
4602     return false;
4603   if (!getDerived().VisitOpenCLConstantAddressSpaceAttr(A))
4604     return false;
4605   return true;
4606 }
4607 
4608 template <typename Derived>
4609 bool VISITORCLASS<Derived>::TraverseOpenCLGenericAddressSpaceAttr(OpenCLGenericAddressSpaceAttr *A) {
4610   if (!getDerived().VisitAttr(A))
4611     return false;
4612   if (!getDerived().VisitOpenCLGenericAddressSpaceAttr(A))
4613     return false;
4614   return true;
4615 }
4616 
4617 template <typename Derived>
4618 bool VISITORCLASS<Derived>::TraverseOpenCLGlobalAddressSpaceAttr(OpenCLGlobalAddressSpaceAttr *A) {
4619   if (!getDerived().VisitAttr(A))
4620     return false;
4621   if (!getDerived().VisitOpenCLGlobalAddressSpaceAttr(A))
4622     return false;
4623   return true;
4624 }
4625 
4626 template <typename Derived>
4627 bool VISITORCLASS<Derived>::TraverseOpenCLGlobalDeviceAddressSpaceAttr(OpenCLGlobalDeviceAddressSpaceAttr *A) {
4628   if (!getDerived().VisitAttr(A))
4629     return false;
4630   if (!getDerived().VisitOpenCLGlobalDeviceAddressSpaceAttr(A))
4631     return false;
4632   return true;
4633 }
4634 
4635 template <typename Derived>
4636 bool VISITORCLASS<Derived>::TraverseOpenCLGlobalHostAddressSpaceAttr(OpenCLGlobalHostAddressSpaceAttr *A) {
4637   if (!getDerived().VisitAttr(A))
4638     return false;
4639   if (!getDerived().VisitOpenCLGlobalHostAddressSpaceAttr(A))
4640     return false;
4641   return true;
4642 }
4643 
4644 template <typename Derived>
4645 bool VISITORCLASS<Derived>::TraverseOpenCLIntelReqdSubGroupSizeAttr(OpenCLIntelReqdSubGroupSizeAttr *A) {
4646   if (!getDerived().VisitAttr(A))
4647     return false;
4648   if (!getDerived().VisitOpenCLIntelReqdSubGroupSizeAttr(A))
4649     return false;
4650   return true;
4651 }
4652 
4653 template <typename Derived>
4654 bool VISITORCLASS<Derived>::TraverseOpenCLKernelAttr(OpenCLKernelAttr *A) {
4655   if (!getDerived().VisitAttr(A))
4656     return false;
4657   if (!getDerived().VisitOpenCLKernelAttr(A))
4658     return false;
4659   return true;
4660 }
4661 
4662 template <typename Derived>
4663 bool VISITORCLASS<Derived>::TraverseOpenCLLocalAddressSpaceAttr(OpenCLLocalAddressSpaceAttr *A) {
4664   if (!getDerived().VisitAttr(A))
4665     return false;
4666   if (!getDerived().VisitOpenCLLocalAddressSpaceAttr(A))
4667     return false;
4668   return true;
4669 }
4670 
4671 template <typename Derived>
4672 bool VISITORCLASS<Derived>::TraverseOpenCLPrivateAddressSpaceAttr(OpenCLPrivateAddressSpaceAttr *A) {
4673   if (!getDerived().VisitAttr(A))
4674     return false;
4675   if (!getDerived().VisitOpenCLPrivateAddressSpaceAttr(A))
4676     return false;
4677   return true;
4678 }
4679 
4680 template <typename Derived>
4681 bool VISITORCLASS<Derived>::TraverseOpenCLUnrollHintAttr(OpenCLUnrollHintAttr *A) {
4682   if (!getDerived().VisitAttr(A))
4683     return false;
4684   if (!getDerived().VisitOpenCLUnrollHintAttr(A))
4685     return false;
4686   return true;
4687 }
4688 
4689 template <typename Derived>
4690 bool VISITORCLASS<Derived>::TraverseOptimizeNoneAttr(OptimizeNoneAttr *A) {
4691   if (!getDerived().VisitAttr(A))
4692     return false;
4693   if (!getDerived().VisitOptimizeNoneAttr(A))
4694     return false;
4695   return true;
4696 }
4697 
4698 template <typename Derived>
4699 bool VISITORCLASS<Derived>::TraverseOverloadableAttr(OverloadableAttr *A) {
4700   if (!getDerived().VisitAttr(A))
4701     return false;
4702   if (!getDerived().VisitOverloadableAttr(A))
4703     return false;
4704   return true;
4705 }
4706 
4707 template <typename Derived>
4708 bool VISITORCLASS<Derived>::TraverseOverrideAttr(OverrideAttr *A) {
4709   if (!getDerived().VisitAttr(A))
4710     return false;
4711   if (!getDerived().VisitOverrideAttr(A))
4712     return false;
4713   return true;
4714 }
4715 
4716 template <typename Derived>
4717 bool VISITORCLASS<Derived>::TraverseOwnerAttr(OwnerAttr *A) {
4718   if (!getDerived().VisitAttr(A))
4719     return false;
4720   if (!getDerived().VisitOwnerAttr(A))
4721     return false;
4722   if (auto *TSI = A->getDerefTypeLoc())
4723     if (!getDerived().TraverseTypeLoc(TSI->getTypeLoc()))
4724       return false;
4725   return true;
4726 }
4727 
4728 template <typename Derived>
4729 bool VISITORCLASS<Derived>::TraverseOwnershipAttr(OwnershipAttr *A) {
4730   if (!getDerived().VisitAttr(A))
4731     return false;
4732   if (!getDerived().VisitOwnershipAttr(A))
4733     return false;
4734   return true;
4735 }
4736 
4737 template <typename Derived>
4738 bool VISITORCLASS<Derived>::TraversePackedAttr(PackedAttr *A) {
4739   if (!getDerived().VisitAttr(A))
4740     return false;
4741   if (!getDerived().VisitPackedAttr(A))
4742     return false;
4743   return true;
4744 }
4745 
4746 template <typename Derived>
4747 bool VISITORCLASS<Derived>::TraverseParamTypestateAttr(ParamTypestateAttr *A) {
4748   if (!getDerived().VisitAttr(A))
4749     return false;
4750   if (!getDerived().VisitParamTypestateAttr(A))
4751     return false;
4752   return true;
4753 }
4754 
4755 template <typename Derived>
4756 bool VISITORCLASS<Derived>::TraversePascalAttr(PascalAttr *A) {
4757   if (!getDerived().VisitAttr(A))
4758     return false;
4759   if (!getDerived().VisitPascalAttr(A))
4760     return false;
4761   return true;
4762 }
4763 
4764 template <typename Derived>
4765 bool VISITORCLASS<Derived>::TraversePassObjectSizeAttr(PassObjectSizeAttr *A) {
4766   if (!getDerived().VisitAttr(A))
4767     return false;
4768   if (!getDerived().VisitPassObjectSizeAttr(A))
4769     return false;
4770   return true;
4771 }
4772 
4773 template <typename Derived>
4774 bool VISITORCLASS<Derived>::TraversePatchableFunctionEntryAttr(PatchableFunctionEntryAttr *A) {
4775   if (!getDerived().VisitAttr(A))
4776     return false;
4777   if (!getDerived().VisitPatchableFunctionEntryAttr(A))
4778     return false;
4779   return true;
4780 }
4781 
4782 template <typename Derived>
4783 bool VISITORCLASS<Derived>::TraversePcsAttr(PcsAttr *A) {
4784   if (!getDerived().VisitAttr(A))
4785     return false;
4786   if (!getDerived().VisitPcsAttr(A))
4787     return false;
4788   return true;
4789 }
4790 
4791 template <typename Derived>
4792 bool VISITORCLASS<Derived>::TraversePointerAttr(PointerAttr *A) {
4793   if (!getDerived().VisitAttr(A))
4794     return false;
4795   if (!getDerived().VisitPointerAttr(A))
4796     return false;
4797   if (auto *TSI = A->getDerefTypeLoc())
4798     if (!getDerived().TraverseTypeLoc(TSI->getTypeLoc()))
4799       return false;
4800   return true;
4801 }
4802 
4803 template <typename Derived>
4804 bool VISITORCLASS<Derived>::TraversePragmaClangBSSSectionAttr(PragmaClangBSSSectionAttr *A) {
4805   if (!getDerived().VisitAttr(A))
4806     return false;
4807   if (!getDerived().VisitPragmaClangBSSSectionAttr(A))
4808     return false;
4809   return true;
4810 }
4811 
4812 template <typename Derived>
4813 bool VISITORCLASS<Derived>::TraversePragmaClangDataSectionAttr(PragmaClangDataSectionAttr *A) {
4814   if (!getDerived().VisitAttr(A))
4815     return false;
4816   if (!getDerived().VisitPragmaClangDataSectionAttr(A))
4817     return false;
4818   return true;
4819 }
4820 
4821 template <typename Derived>
4822 bool VISITORCLASS<Derived>::TraversePragmaClangRelroSectionAttr(PragmaClangRelroSectionAttr *A) {
4823   if (!getDerived().VisitAttr(A))
4824     return false;
4825   if (!getDerived().VisitPragmaClangRelroSectionAttr(A))
4826     return false;
4827   return true;
4828 }
4829 
4830 template <typename Derived>
4831 bool VISITORCLASS<Derived>::TraversePragmaClangRodataSectionAttr(PragmaClangRodataSectionAttr *A) {
4832   if (!getDerived().VisitAttr(A))
4833     return false;
4834   if (!getDerived().VisitPragmaClangRodataSectionAttr(A))
4835     return false;
4836   return true;
4837 }
4838 
4839 template <typename Derived>
4840 bool VISITORCLASS<Derived>::TraversePragmaClangTextSectionAttr(PragmaClangTextSectionAttr *A) {
4841   if (!getDerived().VisitAttr(A))
4842     return false;
4843   if (!getDerived().VisitPragmaClangTextSectionAttr(A))
4844     return false;
4845   return true;
4846 }
4847 
4848 template <typename Derived>
4849 bool VISITORCLASS<Derived>::TraversePreferredNameAttr(PreferredNameAttr *A) {
4850   if (!getDerived().VisitAttr(A))
4851     return false;
4852   if (!getDerived().VisitPreferredNameAttr(A))
4853     return false;
4854   if (auto *TSI = A->getTypedefTypeLoc())
4855     if (!getDerived().TraverseTypeLoc(TSI->getTypeLoc()))
4856       return false;
4857   return true;
4858 }
4859 
4860 template <typename Derived>
4861 bool VISITORCLASS<Derived>::TraversePreferredTypeAttr(PreferredTypeAttr *A) {
4862   if (!getDerived().VisitAttr(A))
4863     return false;
4864   if (!getDerived().VisitPreferredTypeAttr(A))
4865     return false;
4866   if (auto *TSI = A->getTypeLoc())
4867     if (!getDerived().TraverseTypeLoc(TSI->getTypeLoc()))
4868       return false;
4869   return true;
4870 }
4871 
4872 template <typename Derived>
4873 bool VISITORCLASS<Derived>::TraversePreserveAllAttr(PreserveAllAttr *A) {
4874   if (!getDerived().VisitAttr(A))
4875     return false;
4876   if (!getDerived().VisitPreserveAllAttr(A))
4877     return false;
4878   return true;
4879 }
4880 
4881 template <typename Derived>
4882 bool VISITORCLASS<Derived>::TraversePreserveMostAttr(PreserveMostAttr *A) {
4883   if (!getDerived().VisitAttr(A))
4884     return false;
4885   if (!getDerived().VisitPreserveMostAttr(A))
4886     return false;
4887   return true;
4888 }
4889 
4890 template <typename Derived>
4891 bool VISITORCLASS<Derived>::TraversePreserveNoneAttr(PreserveNoneAttr *A) {
4892   if (!getDerived().VisitAttr(A))
4893     return false;
4894   if (!getDerived().VisitPreserveNoneAttr(A))
4895     return false;
4896   return true;
4897 }
4898 
4899 template <typename Derived>
4900 bool VISITORCLASS<Derived>::TraversePtGuardedByAttr(PtGuardedByAttr *A) {
4901   if (!getDerived().VisitAttr(A))
4902     return false;
4903   if (!getDerived().VisitPtGuardedByAttr(A))
4904     return false;
4905   if (!getDerived().TraverseStmt(A->getArg()))
4906     return false;
4907   return true;
4908 }
4909 
4910 template <typename Derived>
4911 bool VISITORCLASS<Derived>::TraversePtGuardedVarAttr(PtGuardedVarAttr *A) {
4912   if (!getDerived().VisitAttr(A))
4913     return false;
4914   if (!getDerived().VisitPtGuardedVarAttr(A))
4915     return false;
4916   return true;
4917 }
4918 
4919 template <typename Derived>
4920 bool VISITORCLASS<Derived>::TraversePtr32Attr(Ptr32Attr *A) {
4921   if (!getDerived().VisitAttr(A))
4922     return false;
4923   if (!getDerived().VisitPtr32Attr(A))
4924     return false;
4925   return true;
4926 }
4927 
4928 template <typename Derived>
4929 bool VISITORCLASS<Derived>::TraversePtr64Attr(Ptr64Attr *A) {
4930   if (!getDerived().VisitAttr(A))
4931     return false;
4932   if (!getDerived().VisitPtr64Attr(A))
4933     return false;
4934   return true;
4935 }
4936 
4937 template <typename Derived>
4938 bool VISITORCLASS<Derived>::TraversePureAttr(PureAttr *A) {
4939   if (!getDerived().VisitAttr(A))
4940     return false;
4941   if (!getDerived().VisitPureAttr(A))
4942     return false;
4943   return true;
4944 }
4945 
4946 template <typename Derived>
4947 bool VISITORCLASS<Derived>::TraverseRISCVInterruptAttr(RISCVInterruptAttr *A) {
4948   if (!getDerived().VisitAttr(A))
4949     return false;
4950   if (!getDerived().VisitRISCVInterruptAttr(A))
4951     return false;
4952   return true;
4953 }
4954 
4955 template <typename Derived>
4956 bool VISITORCLASS<Derived>::TraverseRISCVVectorCCAttr(RISCVVectorCCAttr *A) {
4957   if (!getDerived().VisitAttr(A))
4958     return false;
4959   if (!getDerived().VisitRISCVVectorCCAttr(A))
4960     return false;
4961   return true;
4962 }
4963 
4964 template <typename Derived>
4965 bool VISITORCLASS<Derived>::TraverseRandomizeLayoutAttr(RandomizeLayoutAttr *A) {
4966   if (!getDerived().VisitAttr(A))
4967     return false;
4968   if (!getDerived().VisitRandomizeLayoutAttr(A))
4969     return false;
4970   return true;
4971 }
4972 
4973 template <typename Derived>
4974 bool VISITORCLASS<Derived>::TraverseReadOnlyPlacementAttr(ReadOnlyPlacementAttr *A) {
4975   if (!getDerived().VisitAttr(A))
4976     return false;
4977   if (!getDerived().VisitReadOnlyPlacementAttr(A))
4978     return false;
4979   return true;
4980 }
4981 
4982 template <typename Derived>
4983 bool VISITORCLASS<Derived>::TraverseRegCallAttr(RegCallAttr *A) {
4984   if (!getDerived().VisitAttr(A))
4985     return false;
4986   if (!getDerived().VisitRegCallAttr(A))
4987     return false;
4988   return true;
4989 }
4990 
4991 template <typename Derived>
4992 bool VISITORCLASS<Derived>::TraverseReinitializesAttr(ReinitializesAttr *A) {
4993   if (!getDerived().VisitAttr(A))
4994     return false;
4995   if (!getDerived().VisitReinitializesAttr(A))
4996     return false;
4997   return true;
4998 }
4999 
5000 template <typename Derived>
5001 bool VISITORCLASS<Derived>::TraverseReleaseCapabilityAttr(ReleaseCapabilityAttr *A) {
5002   if (!getDerived().VisitAttr(A))
5003     return false;
5004   if (!getDerived().VisitReleaseCapabilityAttr(A))
5005     return false;
5006   {
5007     Expr * *I = A->args_begin();
5008     Expr * *E = A->args_end();
5009     for (; I != E; ++I) {
5010       if (!getDerived().TraverseStmt(*I))
5011         return false;
5012     }
5013   }
5014   return true;
5015 }
5016 
5017 template <typename Derived>
5018 bool VISITORCLASS<Derived>::TraverseReleaseHandleAttr(ReleaseHandleAttr *A) {
5019   if (!getDerived().VisitAttr(A))
5020     return false;
5021   if (!getDerived().VisitReleaseHandleAttr(A))
5022     return false;
5023   return true;
5024 }
5025 
5026 template <typename Derived>
5027 bool VISITORCLASS<Derived>::TraverseReqdWorkGroupSizeAttr(ReqdWorkGroupSizeAttr *A) {
5028   if (!getDerived().VisitAttr(A))
5029     return false;
5030   if (!getDerived().VisitReqdWorkGroupSizeAttr(A))
5031     return false;
5032   return true;
5033 }
5034 
5035 template <typename Derived>
5036 bool VISITORCLASS<Derived>::TraverseRequiresCapabilityAttr(RequiresCapabilityAttr *A) {
5037   if (!getDerived().VisitAttr(A))
5038     return false;
5039   if (!getDerived().VisitRequiresCapabilityAttr(A))
5040     return false;
5041   {
5042     Expr * *I = A->args_begin();
5043     Expr * *E = A->args_end();
5044     for (; I != E; ++I) {
5045       if (!getDerived().TraverseStmt(*I))
5046         return false;
5047     }
5048   }
5049   return true;
5050 }
5051 
5052 template <typename Derived>
5053 bool VISITORCLASS<Derived>::TraverseRestrictAttr(RestrictAttr *A) {
5054   if (!getDerived().VisitAttr(A))
5055     return false;
5056   if (!getDerived().VisitRestrictAttr(A))
5057     return false;
5058   return true;
5059 }
5060 
5061 template <typename Derived>
5062 bool VISITORCLASS<Derived>::TraverseRetainAttr(RetainAttr *A) {
5063   if (!getDerived().VisitAttr(A))
5064     return false;
5065   if (!getDerived().VisitRetainAttr(A))
5066     return false;
5067   return true;
5068 }
5069 
5070 template <typename Derived>
5071 bool VISITORCLASS<Derived>::TraverseReturnTypestateAttr(ReturnTypestateAttr *A) {
5072   if (!getDerived().VisitAttr(A))
5073     return false;
5074   if (!getDerived().VisitReturnTypestateAttr(A))
5075     return false;
5076   return true;
5077 }
5078 
5079 template <typename Derived>
5080 bool VISITORCLASS<Derived>::TraverseReturnsNonNullAttr(ReturnsNonNullAttr *A) {
5081   if (!getDerived().VisitAttr(A))
5082     return false;
5083   if (!getDerived().VisitReturnsNonNullAttr(A))
5084     return false;
5085   return true;
5086 }
5087 
5088 template <typename Derived>
5089 bool VISITORCLASS<Derived>::TraverseReturnsTwiceAttr(ReturnsTwiceAttr *A) {
5090   if (!getDerived().VisitAttr(A))
5091     return false;
5092   if (!getDerived().VisitReturnsTwiceAttr(A))
5093     return false;
5094   return true;
5095 }
5096 
5097 template <typename Derived>
5098 bool VISITORCLASS<Derived>::TraverseSPtrAttr(SPtrAttr *A) {
5099   if (!getDerived().VisitAttr(A))
5100     return false;
5101   if (!getDerived().VisitSPtrAttr(A))
5102     return false;
5103   return true;
5104 }
5105 
5106 template <typename Derived>
5107 bool VISITORCLASS<Derived>::TraverseSYCLKernelAttr(SYCLKernelAttr *A) {
5108   if (!getDerived().VisitAttr(A))
5109     return false;
5110   if (!getDerived().VisitSYCLKernelAttr(A))
5111     return false;
5112   return true;
5113 }
5114 
5115 template <typename Derived>
5116 bool VISITORCLASS<Derived>::TraverseSYCLKernelEntryPointAttr(SYCLKernelEntryPointAttr *A) {
5117   if (!getDerived().VisitAttr(A))
5118     return false;
5119   if (!getDerived().VisitSYCLKernelEntryPointAttr(A))
5120     return false;
5121   if (auto *TSI = A->getKernelNameLoc())
5122     if (!getDerived().TraverseTypeLoc(TSI->getTypeLoc()))
5123       return false;
5124   return true;
5125 }
5126 
5127 template <typename Derived>
5128 bool VISITORCLASS<Derived>::TraverseSYCLSpecialClassAttr(SYCLSpecialClassAttr *A) {
5129   if (!getDerived().VisitAttr(A))
5130     return false;
5131   if (!getDerived().VisitSYCLSpecialClassAttr(A))
5132     return false;
5133   return true;
5134 }
5135 
5136 template <typename Derived>
5137 bool VISITORCLASS<Derived>::TraverseScopedLockableAttr(ScopedLockableAttr *A) {
5138   if (!getDerived().VisitAttr(A))
5139     return false;
5140   if (!getDerived().VisitScopedLockableAttr(A))
5141     return false;
5142   return true;
5143 }
5144 
5145 template <typename Derived>
5146 bool VISITORCLASS<Derived>::TraverseSectionAttr(SectionAttr *A) {
5147   if (!getDerived().VisitAttr(A))
5148     return false;
5149   if (!getDerived().VisitSectionAttr(A))
5150     return false;
5151   return true;
5152 }
5153 
5154 template <typename Derived>
5155 bool VISITORCLASS<Derived>::TraverseSelectAnyAttr(SelectAnyAttr *A) {
5156   if (!getDerived().VisitAttr(A))
5157     return false;
5158   if (!getDerived().VisitSelectAnyAttr(A))
5159     return false;
5160   return true;
5161 }
5162 
5163 template <typename Derived>
5164 bool VISITORCLASS<Derived>::TraverseSentinelAttr(SentinelAttr *A) {
5165   if (!getDerived().VisitAttr(A))
5166     return false;
5167   if (!getDerived().VisitSentinelAttr(A))
5168     return false;
5169   return true;
5170 }
5171 
5172 template <typename Derived>
5173 bool VISITORCLASS<Derived>::TraverseSetTypestateAttr(SetTypestateAttr *A) {
5174   if (!getDerived().VisitAttr(A))
5175     return false;
5176   if (!getDerived().VisitSetTypestateAttr(A))
5177     return false;
5178   return true;
5179 }
5180 
5181 template <typename Derived>
5182 bool VISITORCLASS<Derived>::TraverseSharedTrylockFunctionAttr(SharedTrylockFunctionAttr *A) {
5183   if (!getDerived().VisitAttr(A))
5184     return false;
5185   if (!getDerived().VisitSharedTrylockFunctionAttr(A))
5186     return false;
5187   if (!getDerived().TraverseStmt(A->getSuccessValue()))
5188     return false;
5189   {
5190     Expr * *I = A->args_begin();
5191     Expr * *E = A->args_end();
5192     for (; I != E; ++I) {
5193       if (!getDerived().TraverseStmt(*I))
5194         return false;
5195     }
5196   }
5197   return true;
5198 }
5199 
5200 template <typename Derived>
5201 bool VISITORCLASS<Derived>::TraverseSizedByAttr(SizedByAttr *A) {
5202   if (!getDerived().VisitAttr(A))
5203     return false;
5204   if (!getDerived().VisitSizedByAttr(A))
5205     return false;
5206   if (!getDerived().TraverseStmt(A->getSize()))
5207     return false;
5208   return true;
5209 }
5210 
5211 template <typename Derived>
5212 bool VISITORCLASS<Derived>::TraverseSizedByOrNullAttr(SizedByOrNullAttr *A) {
5213   if (!getDerived().VisitAttr(A))
5214     return false;
5215   if (!getDerived().VisitSizedByOrNullAttr(A))
5216     return false;
5217   if (!getDerived().TraverseStmt(A->getSize()))
5218     return false;
5219   return true;
5220 }
5221 
5222 template <typename Derived>
5223 bool VISITORCLASS<Derived>::TraverseSpeculativeLoadHardeningAttr(SpeculativeLoadHardeningAttr *A) {
5224   if (!getDerived().VisitAttr(A))
5225     return false;
5226   if (!getDerived().VisitSpeculativeLoadHardeningAttr(A))
5227     return false;
5228   return true;
5229 }
5230 
5231 template <typename Derived>
5232 bool VISITORCLASS<Derived>::TraverseStandaloneDebugAttr(StandaloneDebugAttr *A) {
5233   if (!getDerived().VisitAttr(A))
5234     return false;
5235   if (!getDerived().VisitStandaloneDebugAttr(A))
5236     return false;
5237   return true;
5238 }
5239 
5240 template <typename Derived>
5241 bool VISITORCLASS<Derived>::TraverseStdCallAttr(StdCallAttr *A) {
5242   if (!getDerived().VisitAttr(A))
5243     return false;
5244   if (!getDerived().VisitStdCallAttr(A))
5245     return false;
5246   return true;
5247 }
5248 
5249 template <typename Derived>
5250 bool VISITORCLASS<Derived>::TraverseStrictFPAttr(StrictFPAttr *A) {
5251   if (!getDerived().VisitAttr(A))
5252     return false;
5253   if (!getDerived().VisitStrictFPAttr(A))
5254     return false;
5255   return true;
5256 }
5257 
5258 template <typename Derived>
5259 bool VISITORCLASS<Derived>::TraverseStrictGuardStackCheckAttr(StrictGuardStackCheckAttr *A) {
5260   if (!getDerived().VisitAttr(A))
5261     return false;
5262   if (!getDerived().VisitStrictGuardStackCheckAttr(A))
5263     return false;
5264   return true;
5265 }
5266 
5267 template <typename Derived>
5268 bool VISITORCLASS<Derived>::TraverseSuppressAttr(SuppressAttr *A) {
5269   if (!getDerived().VisitAttr(A))
5270     return false;
5271   if (!getDerived().VisitSuppressAttr(A))
5272     return false;
5273   return true;
5274 }
5275 
5276 template <typename Derived>
5277 bool VISITORCLASS<Derived>::TraverseSwiftAsyncAttr(SwiftAsyncAttr *A) {
5278   if (!getDerived().VisitAttr(A))
5279     return false;
5280   if (!getDerived().VisitSwiftAsyncAttr(A))
5281     return false;
5282   return true;
5283 }
5284 
5285 template <typename Derived>
5286 bool VISITORCLASS<Derived>::TraverseSwiftAsyncCallAttr(SwiftAsyncCallAttr *A) {
5287   if (!getDerived().VisitAttr(A))
5288     return false;
5289   if (!getDerived().VisitSwiftAsyncCallAttr(A))
5290     return false;
5291   return true;
5292 }
5293 
5294 template <typename Derived>
5295 bool VISITORCLASS<Derived>::TraverseSwiftAsyncContextAttr(SwiftAsyncContextAttr *A) {
5296   if (!getDerived().VisitAttr(A))
5297     return false;
5298   if (!getDerived().VisitSwiftAsyncContextAttr(A))
5299     return false;
5300   return true;
5301 }
5302 
5303 template <typename Derived>
5304 bool VISITORCLASS<Derived>::TraverseSwiftAsyncErrorAttr(SwiftAsyncErrorAttr *A) {
5305   if (!getDerived().VisitAttr(A))
5306     return false;
5307   if (!getDerived().VisitSwiftAsyncErrorAttr(A))
5308     return false;
5309   return true;
5310 }
5311 
5312 template <typename Derived>
5313 bool VISITORCLASS<Derived>::TraverseSwiftAsyncNameAttr(SwiftAsyncNameAttr *A) {
5314   if (!getDerived().VisitAttr(A))
5315     return false;
5316   if (!getDerived().VisitSwiftAsyncNameAttr(A))
5317     return false;
5318   return true;
5319 }
5320 
5321 template <typename Derived>
5322 bool VISITORCLASS<Derived>::TraverseSwiftAttrAttr(SwiftAttrAttr *A) {
5323   if (!getDerived().VisitAttr(A))
5324     return false;
5325   if (!getDerived().VisitSwiftAttrAttr(A))
5326     return false;
5327   return true;
5328 }
5329 
5330 template <typename Derived>
5331 bool VISITORCLASS<Derived>::TraverseSwiftBridgeAttr(SwiftBridgeAttr *A) {
5332   if (!getDerived().VisitAttr(A))
5333     return false;
5334   if (!getDerived().VisitSwiftBridgeAttr(A))
5335     return false;
5336   return true;
5337 }
5338 
5339 template <typename Derived>
5340 bool VISITORCLASS<Derived>::TraverseSwiftBridgedTypedefAttr(SwiftBridgedTypedefAttr *A) {
5341   if (!getDerived().VisitAttr(A))
5342     return false;
5343   if (!getDerived().VisitSwiftBridgedTypedefAttr(A))
5344     return false;
5345   return true;
5346 }
5347 
5348 template <typename Derived>
5349 bool VISITORCLASS<Derived>::TraverseSwiftCallAttr(SwiftCallAttr *A) {
5350   if (!getDerived().VisitAttr(A))
5351     return false;
5352   if (!getDerived().VisitSwiftCallAttr(A))
5353     return false;
5354   return true;
5355 }
5356 
5357 template <typename Derived>
5358 bool VISITORCLASS<Derived>::TraverseSwiftContextAttr(SwiftContextAttr *A) {
5359   if (!getDerived().VisitAttr(A))
5360     return false;
5361   if (!getDerived().VisitSwiftContextAttr(A))
5362     return false;
5363   return true;
5364 }
5365 
5366 template <typename Derived>
5367 bool VISITORCLASS<Derived>::TraverseSwiftErrorAttr(SwiftErrorAttr *A) {
5368   if (!getDerived().VisitAttr(A))
5369     return false;
5370   if (!getDerived().VisitSwiftErrorAttr(A))
5371     return false;
5372   return true;
5373 }
5374 
5375 template <typename Derived>
5376 bool VISITORCLASS<Derived>::TraverseSwiftErrorResultAttr(SwiftErrorResultAttr *A) {
5377   if (!getDerived().VisitAttr(A))
5378     return false;
5379   if (!getDerived().VisitSwiftErrorResultAttr(A))
5380     return false;
5381   return true;
5382 }
5383 
5384 template <typename Derived>
5385 bool VISITORCLASS<Derived>::TraverseSwiftImportAsNonGenericAttr(SwiftImportAsNonGenericAttr *A) {
5386   if (!getDerived().VisitAttr(A))
5387     return false;
5388   if (!getDerived().VisitSwiftImportAsNonGenericAttr(A))
5389     return false;
5390   return true;
5391 }
5392 
5393 template <typename Derived>
5394 bool VISITORCLASS<Derived>::TraverseSwiftImportPropertyAsAccessorsAttr(SwiftImportPropertyAsAccessorsAttr *A) {
5395   if (!getDerived().VisitAttr(A))
5396     return false;
5397   if (!getDerived().VisitSwiftImportPropertyAsAccessorsAttr(A))
5398     return false;
5399   return true;
5400 }
5401 
5402 template <typename Derived>
5403 bool VISITORCLASS<Derived>::TraverseSwiftIndirectResultAttr(SwiftIndirectResultAttr *A) {
5404   if (!getDerived().VisitAttr(A))
5405     return false;
5406   if (!getDerived().VisitSwiftIndirectResultAttr(A))
5407     return false;
5408   return true;
5409 }
5410 
5411 template <typename Derived>
5412 bool VISITORCLASS<Derived>::TraverseSwiftNameAttr(SwiftNameAttr *A) {
5413   if (!getDerived().VisitAttr(A))
5414     return false;
5415   if (!getDerived().VisitSwiftNameAttr(A))
5416     return false;
5417   return true;
5418 }
5419 
5420 template <typename Derived>
5421 bool VISITORCLASS<Derived>::TraverseSwiftNewTypeAttr(SwiftNewTypeAttr *A) {
5422   if (!getDerived().VisitAttr(A))
5423     return false;
5424   if (!getDerived().VisitSwiftNewTypeAttr(A))
5425     return false;
5426   return true;
5427 }
5428 
5429 template <typename Derived>
5430 bool VISITORCLASS<Derived>::TraverseSwiftObjCMembersAttr(SwiftObjCMembersAttr *A) {
5431   if (!getDerived().VisitAttr(A))
5432     return false;
5433   if (!getDerived().VisitSwiftObjCMembersAttr(A))
5434     return false;
5435   return true;
5436 }
5437 
5438 template <typename Derived>
5439 bool VISITORCLASS<Derived>::TraverseSwiftPrivateAttr(SwiftPrivateAttr *A) {
5440   if (!getDerived().VisitAttr(A))
5441     return false;
5442   if (!getDerived().VisitSwiftPrivateAttr(A))
5443     return false;
5444   return true;
5445 }
5446 
5447 template <typename Derived>
5448 bool VISITORCLASS<Derived>::TraverseSwiftVersionedAdditionAttr(SwiftVersionedAdditionAttr *A) {
5449   if (!getDerived().VisitAttr(A))
5450     return false;
5451   if (!getDerived().VisitSwiftVersionedAdditionAttr(A))
5452     return false;
5453   return true;
5454 }
5455 
5456 template <typename Derived>
5457 bool VISITORCLASS<Derived>::TraverseSwiftVersionedRemovalAttr(SwiftVersionedRemovalAttr *A) {
5458   if (!getDerived().VisitAttr(A))
5459     return false;
5460   if (!getDerived().VisitSwiftVersionedRemovalAttr(A))
5461     return false;
5462   return true;
5463 }
5464 
5465 template <typename Derived>
5466 bool VISITORCLASS<Derived>::TraverseSysVABIAttr(SysVABIAttr *A) {
5467   if (!getDerived().VisitAttr(A))
5468     return false;
5469   if (!getDerived().VisitSysVABIAttr(A))
5470     return false;
5471   return true;
5472 }
5473 
5474 template <typename Derived>
5475 bool VISITORCLASS<Derived>::TraverseTLSModelAttr(TLSModelAttr *A) {
5476   if (!getDerived().VisitAttr(A))
5477     return false;
5478   if (!getDerived().VisitTLSModelAttr(A))
5479     return false;
5480   return true;
5481 }
5482 
5483 template <typename Derived>
5484 bool VISITORCLASS<Derived>::TraverseTargetAttr(TargetAttr *A) {
5485   if (!getDerived().VisitAttr(A))
5486     return false;
5487   if (!getDerived().VisitTargetAttr(A))
5488     return false;
5489   return true;
5490 }
5491 
5492 template <typename Derived>
5493 bool VISITORCLASS<Derived>::TraverseTargetClonesAttr(TargetClonesAttr *A) {
5494   if (!getDerived().VisitAttr(A))
5495     return false;
5496   if (!getDerived().VisitTargetClonesAttr(A))
5497     return false;
5498   return true;
5499 }
5500 
5501 template <typename Derived>
5502 bool VISITORCLASS<Derived>::TraverseTargetVersionAttr(TargetVersionAttr *A) {
5503   if (!getDerived().VisitAttr(A))
5504     return false;
5505   if (!getDerived().VisitTargetVersionAttr(A))
5506     return false;
5507   return true;
5508 }
5509 
5510 template <typename Derived>
5511 bool VISITORCLASS<Derived>::TraverseTestTypestateAttr(TestTypestateAttr *A) {
5512   if (!getDerived().VisitAttr(A))
5513     return false;
5514   if (!getDerived().VisitTestTypestateAttr(A))
5515     return false;
5516   return true;
5517 }
5518 
5519 template <typename Derived>
5520 bool VISITORCLASS<Derived>::TraverseThisCallAttr(ThisCallAttr *A) {
5521   if (!getDerived().VisitAttr(A))
5522     return false;
5523   if (!getDerived().VisitThisCallAttr(A))
5524     return false;
5525   return true;
5526 }
5527 
5528 template <typename Derived>
5529 bool VISITORCLASS<Derived>::TraverseThreadAttr(ThreadAttr *A) {
5530   if (!getDerived().VisitAttr(A))
5531     return false;
5532   if (!getDerived().VisitThreadAttr(A))
5533     return false;
5534   return true;
5535 }
5536 
5537 template <typename Derived>
5538 bool VISITORCLASS<Derived>::TraverseTransparentUnionAttr(TransparentUnionAttr *A) {
5539   if (!getDerived().VisitAttr(A))
5540     return false;
5541   if (!getDerived().VisitTransparentUnionAttr(A))
5542     return false;
5543   return true;
5544 }
5545 
5546 template <typename Derived>
5547 bool VISITORCLASS<Derived>::TraverseTrivialABIAttr(TrivialABIAttr *A) {
5548   if (!getDerived().VisitAttr(A))
5549     return false;
5550   if (!getDerived().VisitTrivialABIAttr(A))
5551     return false;
5552   return true;
5553 }
5554 
5555 template <typename Derived>
5556 bool VISITORCLASS<Derived>::TraverseTryAcquireCapabilityAttr(TryAcquireCapabilityAttr *A) {
5557   if (!getDerived().VisitAttr(A))
5558     return false;
5559   if (!getDerived().VisitTryAcquireCapabilityAttr(A))
5560     return false;
5561   if (!getDerived().TraverseStmt(A->getSuccessValue()))
5562     return false;
5563   {
5564     Expr * *I = A->args_begin();
5565     Expr * *E = A->args_end();
5566     for (; I != E; ++I) {
5567       if (!getDerived().TraverseStmt(*I))
5568         return false;
5569     }
5570   }
5571   return true;
5572 }
5573 
5574 template <typename Derived>
5575 bool VISITORCLASS<Derived>::TraverseTypeNonNullAttr(TypeNonNullAttr *A) {
5576   if (!getDerived().VisitAttr(A))
5577     return false;
5578   if (!getDerived().VisitTypeNonNullAttr(A))
5579     return false;
5580   return true;
5581 }
5582 
5583 template <typename Derived>
5584 bool VISITORCLASS<Derived>::TraverseTypeNullUnspecifiedAttr(TypeNullUnspecifiedAttr *A) {
5585   if (!getDerived().VisitAttr(A))
5586     return false;
5587   if (!getDerived().VisitTypeNullUnspecifiedAttr(A))
5588     return false;
5589   return true;
5590 }
5591 
5592 template <typename Derived>
5593 bool VISITORCLASS<Derived>::TraverseTypeNullableAttr(TypeNullableAttr *A) {
5594   if (!getDerived().VisitAttr(A))
5595     return false;
5596   if (!getDerived().VisitTypeNullableAttr(A))
5597     return false;
5598   return true;
5599 }
5600 
5601 template <typename Derived>
5602 bool VISITORCLASS<Derived>::TraverseTypeNullableResultAttr(TypeNullableResultAttr *A) {
5603   if (!getDerived().VisitAttr(A))
5604     return false;
5605   if (!getDerived().VisitTypeNullableResultAttr(A))
5606     return false;
5607   return true;
5608 }
5609 
5610 template <typename Derived>
5611 bool VISITORCLASS<Derived>::TraverseTypeTagForDatatypeAttr(TypeTagForDatatypeAttr *A) {
5612   if (!getDerived().VisitAttr(A))
5613     return false;
5614   if (!getDerived().VisitTypeTagForDatatypeAttr(A))
5615     return false;
5616   if (auto *TSI = A->getMatchingCTypeLoc())
5617     if (!getDerived().TraverseTypeLoc(TSI->getTypeLoc()))
5618       return false;
5619   return true;
5620 }
5621 
5622 template <typename Derived>
5623 bool VISITORCLASS<Derived>::TraverseTypeVisibilityAttr(TypeVisibilityAttr *A) {
5624   if (!getDerived().VisitAttr(A))
5625     return false;
5626   if (!getDerived().VisitTypeVisibilityAttr(A))
5627     return false;
5628   return true;
5629 }
5630 
5631 template <typename Derived>
5632 bool VISITORCLASS<Derived>::TraverseUPtrAttr(UPtrAttr *A) {
5633   if (!getDerived().VisitAttr(A))
5634     return false;
5635   if (!getDerived().VisitUPtrAttr(A))
5636     return false;
5637   return true;
5638 }
5639 
5640 template <typename Derived>
5641 bool VISITORCLASS<Derived>::TraverseUnavailableAttr(UnavailableAttr *A) {
5642   if (!getDerived().VisitAttr(A))
5643     return false;
5644   if (!getDerived().VisitUnavailableAttr(A))
5645     return false;
5646   return true;
5647 }
5648 
5649 template <typename Derived>
5650 bool VISITORCLASS<Derived>::TraverseUninitializedAttr(UninitializedAttr *A) {
5651   if (!getDerived().VisitAttr(A))
5652     return false;
5653   if (!getDerived().VisitUninitializedAttr(A))
5654     return false;
5655   return true;
5656 }
5657 
5658 template <typename Derived>
5659 bool VISITORCLASS<Derived>::TraverseUnlikelyAttr(UnlikelyAttr *A) {
5660   if (!getDerived().VisitAttr(A))
5661     return false;
5662   if (!getDerived().VisitUnlikelyAttr(A))
5663     return false;
5664   return true;
5665 }
5666 
5667 template <typename Derived>
5668 bool VISITORCLASS<Derived>::TraverseUnsafeBufferUsageAttr(UnsafeBufferUsageAttr *A) {
5669   if (!getDerived().VisitAttr(A))
5670     return false;
5671   if (!getDerived().VisitUnsafeBufferUsageAttr(A))
5672     return false;
5673   return true;
5674 }
5675 
5676 template <typename Derived>
5677 bool VISITORCLASS<Derived>::TraverseUnusedAttr(UnusedAttr *A) {
5678   if (!getDerived().VisitAttr(A))
5679     return false;
5680   if (!getDerived().VisitUnusedAttr(A))
5681     return false;
5682   return true;
5683 }
5684 
5685 template <typename Derived>
5686 bool VISITORCLASS<Derived>::TraverseUseHandleAttr(UseHandleAttr *A) {
5687   if (!getDerived().VisitAttr(A))
5688     return false;
5689   if (!getDerived().VisitUseHandleAttr(A))
5690     return false;
5691   return true;
5692 }
5693 
5694 template <typename Derived>
5695 bool VISITORCLASS<Derived>::TraverseUsedAttr(UsedAttr *A) {
5696   if (!getDerived().VisitAttr(A))
5697     return false;
5698   if (!getDerived().VisitUsedAttr(A))
5699     return false;
5700   return true;
5701 }
5702 
5703 template <typename Derived>
5704 bool VISITORCLASS<Derived>::TraverseUsingIfExistsAttr(UsingIfExistsAttr *A) {
5705   if (!getDerived().VisitAttr(A))
5706     return false;
5707   if (!getDerived().VisitUsingIfExistsAttr(A))
5708     return false;
5709   return true;
5710 }
5711 
5712 template <typename Derived>
5713 bool VISITORCLASS<Derived>::TraverseUuidAttr(UuidAttr *A) {
5714   if (!getDerived().VisitAttr(A))
5715     return false;
5716   if (!getDerived().VisitUuidAttr(A))
5717     return false;
5718   return true;
5719 }
5720 
5721 template <typename Derived>
5722 bool VISITORCLASS<Derived>::TraverseVTablePointerAuthenticationAttr(VTablePointerAuthenticationAttr *A) {
5723   if (!getDerived().VisitAttr(A))
5724     return false;
5725   if (!getDerived().VisitVTablePointerAuthenticationAttr(A))
5726     return false;
5727   return true;
5728 }
5729 
5730 template <typename Derived>
5731 bool VISITORCLASS<Derived>::TraverseVecReturnAttr(VecReturnAttr *A) {
5732   if (!getDerived().VisitAttr(A))
5733     return false;
5734   if (!getDerived().VisitVecReturnAttr(A))
5735     return false;
5736   return true;
5737 }
5738 
5739 template <typename Derived>
5740 bool VISITORCLASS<Derived>::TraverseVecTypeHintAttr(VecTypeHintAttr *A) {
5741   if (!getDerived().VisitAttr(A))
5742     return false;
5743   if (!getDerived().VisitVecTypeHintAttr(A))
5744     return false;
5745   if (auto *TSI = A->getTypeHintLoc())
5746     if (!getDerived().TraverseTypeLoc(TSI->getTypeLoc()))
5747       return false;
5748   return true;
5749 }
5750 
5751 template <typename Derived>
5752 bool VISITORCLASS<Derived>::TraverseVectorCallAttr(VectorCallAttr *A) {
5753   if (!getDerived().VisitAttr(A))
5754     return false;
5755   if (!getDerived().VisitVectorCallAttr(A))
5756     return false;
5757   return true;
5758 }
5759 
5760 template <typename Derived>
5761 bool VISITORCLASS<Derived>::TraverseVisibilityAttr(VisibilityAttr *A) {
5762   if (!getDerived().VisitAttr(A))
5763     return false;
5764   if (!getDerived().VisitVisibilityAttr(A))
5765     return false;
5766   return true;
5767 }
5768 
5769 template <typename Derived>
5770 bool VISITORCLASS<Derived>::TraverseWarnUnusedAttr(WarnUnusedAttr *A) {
5771   if (!getDerived().VisitAttr(A))
5772     return false;
5773   if (!getDerived().VisitWarnUnusedAttr(A))
5774     return false;
5775   return true;
5776 }
5777 
5778 template <typename Derived>
5779 bool VISITORCLASS<Derived>::TraverseWarnUnusedResultAttr(WarnUnusedResultAttr *A) {
5780   if (!getDerived().VisitAttr(A))
5781     return false;
5782   if (!getDerived().VisitWarnUnusedResultAttr(A))
5783     return false;
5784   return true;
5785 }
5786 
5787 template <typename Derived>
5788 bool VISITORCLASS<Derived>::TraverseWeakAttr(WeakAttr *A) {
5789   if (!getDerived().VisitAttr(A))
5790     return false;
5791   if (!getDerived().VisitWeakAttr(A))
5792     return false;
5793   return true;
5794 }
5795 
5796 template <typename Derived>
5797 bool VISITORCLASS<Derived>::TraverseWeakImportAttr(WeakImportAttr *A) {
5798   if (!getDerived().VisitAttr(A))
5799     return false;
5800   if (!getDerived().VisitWeakImportAttr(A))
5801     return false;
5802   return true;
5803 }
5804 
5805 template <typename Derived>
5806 bool VISITORCLASS<Derived>::TraverseWeakRefAttr(WeakRefAttr *A) {
5807   if (!getDerived().VisitAttr(A))
5808     return false;
5809   if (!getDerived().VisitWeakRefAttr(A))
5810     return false;
5811   return true;
5812 }
5813 
5814 template <typename Derived>
5815 bool VISITORCLASS<Derived>::TraverseWebAssemblyExportNameAttr(WebAssemblyExportNameAttr *A) {
5816   if (!getDerived().VisitAttr(A))
5817     return false;
5818   if (!getDerived().VisitWebAssemblyExportNameAttr(A))
5819     return false;
5820   return true;
5821 }
5822 
5823 template <typename Derived>
5824 bool VISITORCLASS<Derived>::TraverseWebAssemblyFuncrefAttr(WebAssemblyFuncrefAttr *A) {
5825   if (!getDerived().VisitAttr(A))
5826     return false;
5827   if (!getDerived().VisitWebAssemblyFuncrefAttr(A))
5828     return false;
5829   return true;
5830 }
5831 
5832 template <typename Derived>
5833 bool VISITORCLASS<Derived>::TraverseWebAssemblyImportModuleAttr(WebAssemblyImportModuleAttr *A) {
5834   if (!getDerived().VisitAttr(A))
5835     return false;
5836   if (!getDerived().VisitWebAssemblyImportModuleAttr(A))
5837     return false;
5838   return true;
5839 }
5840 
5841 template <typename Derived>
5842 bool VISITORCLASS<Derived>::TraverseWebAssemblyImportNameAttr(WebAssemblyImportNameAttr *A) {
5843   if (!getDerived().VisitAttr(A))
5844     return false;
5845   if (!getDerived().VisitWebAssemblyImportNameAttr(A))
5846     return false;
5847   return true;
5848 }
5849 
5850 template <typename Derived>
5851 bool VISITORCLASS<Derived>::TraverseWorkGroupSizeHintAttr(WorkGroupSizeHintAttr *A) {
5852   if (!getDerived().VisitAttr(A))
5853     return false;
5854   if (!getDerived().VisitWorkGroupSizeHintAttr(A))
5855     return false;
5856   return true;
5857 }
5858 
5859 template <typename Derived>
5860 bool VISITORCLASS<Derived>::TraverseX86ForceAlignArgPointerAttr(X86ForceAlignArgPointerAttr *A) {
5861   if (!getDerived().VisitAttr(A))
5862     return false;
5863   if (!getDerived().VisitX86ForceAlignArgPointerAttr(A))
5864     return false;
5865   return true;
5866 }
5867 
5868 template <typename Derived>
5869 bool VISITORCLASS<Derived>::TraverseXRayInstrumentAttr(XRayInstrumentAttr *A) {
5870   if (!getDerived().VisitAttr(A))
5871     return false;
5872   if (!getDerived().VisitXRayInstrumentAttr(A))
5873     return false;
5874   return true;
5875 }
5876 
5877 template <typename Derived>
5878 bool VISITORCLASS<Derived>::TraverseXRayLogArgsAttr(XRayLogArgsAttr *A) {
5879   if (!getDerived().VisitAttr(A))
5880     return false;
5881   if (!getDerived().VisitXRayLogArgsAttr(A))
5882     return false;
5883   return true;
5884 }
5885 
5886 template <typename Derived>
5887 bool VISITORCLASS<Derived>::TraverseZeroCallUsedRegsAttr(ZeroCallUsedRegsAttr *A) {
5888   if (!getDerived().VisitAttr(A))
5889     return false;
5890   if (!getDerived().VisitZeroCallUsedRegsAttr(A))
5891     return false;
5892   return true;
5893 }
5894 
5895 template <typename Derived>
5896 bool VISITORCLASS<Derived>::TraverseAttr(Attr *A) {
5897   if (!A)
5898     return true;
5899 
5900   switch (A->getKind()) {
5901     case attr::AArch64SVEPcs:
5902       return getDerived().TraverseAArch64SVEPcsAttr(cast<AArch64SVEPcsAttr>(A));
5903     case attr::AArch64VectorPcs:
5904       return getDerived().TraverseAArch64VectorPcsAttr(cast<AArch64VectorPcsAttr>(A));
5905     case attr::AMDGPUFlatWorkGroupSize:
5906       return getDerived().TraverseAMDGPUFlatWorkGroupSizeAttr(cast<AMDGPUFlatWorkGroupSizeAttr>(A));
5907     case attr::AMDGPUKernelCall:
5908       return getDerived().TraverseAMDGPUKernelCallAttr(cast<AMDGPUKernelCallAttr>(A));
5909     case attr::AMDGPUMaxNumWorkGroups:
5910       return getDerived().TraverseAMDGPUMaxNumWorkGroupsAttr(cast<AMDGPUMaxNumWorkGroupsAttr>(A));
5911     case attr::AMDGPUNumSGPR:
5912       return getDerived().TraverseAMDGPUNumSGPRAttr(cast<AMDGPUNumSGPRAttr>(A));
5913     case attr::AMDGPUNumVGPR:
5914       return getDerived().TraverseAMDGPUNumVGPRAttr(cast<AMDGPUNumVGPRAttr>(A));
5915     case attr::AMDGPUWavesPerEU:
5916       return getDerived().TraverseAMDGPUWavesPerEUAttr(cast<AMDGPUWavesPerEUAttr>(A));
5917     case attr::ARMInterrupt:
5918       return getDerived().TraverseARMInterruptAttr(cast<ARMInterruptAttr>(A));
5919     case attr::AVRInterrupt:
5920       return getDerived().TraverseAVRInterruptAttr(cast<AVRInterruptAttr>(A));
5921     case attr::AVRSignal:
5922       return getDerived().TraverseAVRSignalAttr(cast<AVRSignalAttr>(A));
5923     case attr::AbiTag:
5924       return getDerived().TraverseAbiTagAttr(cast<AbiTagAttr>(A));
5925     case attr::AcquireCapability:
5926       return getDerived().TraverseAcquireCapabilityAttr(cast<AcquireCapabilityAttr>(A));
5927     case attr::AcquireHandle:
5928       return getDerived().TraverseAcquireHandleAttr(cast<AcquireHandleAttr>(A));
5929     case attr::AcquiredAfter:
5930       return getDerived().TraverseAcquiredAfterAttr(cast<AcquiredAfterAttr>(A));
5931     case attr::AcquiredBefore:
5932       return getDerived().TraverseAcquiredBeforeAttr(cast<AcquiredBeforeAttr>(A));
5933     case attr::AddressSpace:
5934       return getDerived().TraverseAddressSpaceAttr(cast<AddressSpaceAttr>(A));
5935     case attr::Alias:
5936       return getDerived().TraverseAliasAttr(cast<AliasAttr>(A));
5937     case attr::AlignMac68k:
5938       return getDerived().TraverseAlignMac68kAttr(cast<AlignMac68kAttr>(A));
5939     case attr::AlignNatural:
5940       return getDerived().TraverseAlignNaturalAttr(cast<AlignNaturalAttr>(A));
5941     case attr::AlignValue:
5942       return getDerived().TraverseAlignValueAttr(cast<AlignValueAttr>(A));
5943     case attr::Aligned:
5944       return getDerived().TraverseAlignedAttr(cast<AlignedAttr>(A));
5945     case attr::AllocAlign:
5946       return getDerived().TraverseAllocAlignAttr(cast<AllocAlignAttr>(A));
5947     case attr::AllocSize:
5948       return getDerived().TraverseAllocSizeAttr(cast<AllocSizeAttr>(A));
5949     case attr::Allocating:
5950       return getDerived().TraverseAllocatingAttr(cast<AllocatingAttr>(A));
5951     case attr::AlwaysDestroy:
5952       return getDerived().TraverseAlwaysDestroyAttr(cast<AlwaysDestroyAttr>(A));
5953     case attr::AlwaysInline:
5954       return getDerived().TraverseAlwaysInlineAttr(cast<AlwaysInlineAttr>(A));
5955     case attr::AnalyzerNoReturn:
5956       return getDerived().TraverseAnalyzerNoReturnAttr(cast<AnalyzerNoReturnAttr>(A));
5957     case attr::Annotate:
5958       return getDerived().TraverseAnnotateAttr(cast<AnnotateAttr>(A));
5959     case attr::AnnotateType:
5960       return getDerived().TraverseAnnotateTypeAttr(cast<AnnotateTypeAttr>(A));
5961     case attr::AnyX86Interrupt:
5962       return getDerived().TraverseAnyX86InterruptAttr(cast<AnyX86InterruptAttr>(A));
5963     case attr::AnyX86NoCallerSavedRegisters:
5964       return getDerived().TraverseAnyX86NoCallerSavedRegistersAttr(cast<AnyX86NoCallerSavedRegistersAttr>(A));
5965     case attr::AnyX86NoCfCheck:
5966       return getDerived().TraverseAnyX86NoCfCheckAttr(cast<AnyX86NoCfCheckAttr>(A));
5967     case attr::ArcWeakrefUnavailable:
5968       return getDerived().TraverseArcWeakrefUnavailableAttr(cast<ArcWeakrefUnavailableAttr>(A));
5969     case attr::ArgumentWithTypeTag:
5970       return getDerived().TraverseArgumentWithTypeTagAttr(cast<ArgumentWithTypeTagAttr>(A));
5971     case attr::ArmAgnostic:
5972       return getDerived().TraverseArmAgnosticAttr(cast<ArmAgnosticAttr>(A));
5973     case attr::ArmBuiltinAlias:
5974       return getDerived().TraverseArmBuiltinAliasAttr(cast<ArmBuiltinAliasAttr>(A));
5975     case attr::ArmIn:
5976       return getDerived().TraverseArmInAttr(cast<ArmInAttr>(A));
5977     case attr::ArmInOut:
5978       return getDerived().TraverseArmInOutAttr(cast<ArmInOutAttr>(A));
5979     case attr::ArmLocallyStreaming:
5980       return getDerived().TraverseArmLocallyStreamingAttr(cast<ArmLocallyStreamingAttr>(A));
5981     case attr::ArmMveStrictPolymorphism:
5982       return getDerived().TraverseArmMveStrictPolymorphismAttr(cast<ArmMveStrictPolymorphismAttr>(A));
5983     case attr::ArmNew:
5984       return getDerived().TraverseArmNewAttr(cast<ArmNewAttr>(A));
5985     case attr::ArmOut:
5986       return getDerived().TraverseArmOutAttr(cast<ArmOutAttr>(A));
5987     case attr::ArmPreserves:
5988       return getDerived().TraverseArmPreservesAttr(cast<ArmPreservesAttr>(A));
5989     case attr::ArmStreaming:
5990       return getDerived().TraverseArmStreamingAttr(cast<ArmStreamingAttr>(A));
5991     case attr::ArmStreamingCompatible:
5992       return getDerived().TraverseArmStreamingCompatibleAttr(cast<ArmStreamingCompatibleAttr>(A));
5993     case attr::Artificial:
5994       return getDerived().TraverseArtificialAttr(cast<ArtificialAttr>(A));
5995     case attr::AsmLabel:
5996       return getDerived().TraverseAsmLabelAttr(cast<AsmLabelAttr>(A));
5997     case attr::AssertCapability:
5998       return getDerived().TraverseAssertCapabilityAttr(cast<AssertCapabilityAttr>(A));
5999     case attr::AssertExclusiveLock:
6000       return getDerived().TraverseAssertExclusiveLockAttr(cast<AssertExclusiveLockAttr>(A));
6001     case attr::AssertSharedLock:
6002       return getDerived().TraverseAssertSharedLockAttr(cast<AssertSharedLockAttr>(A));
6003     case attr::AssumeAligned:
6004       return getDerived().TraverseAssumeAlignedAttr(cast<AssumeAlignedAttr>(A));
6005     case attr::Availability:
6006       return getDerived().TraverseAvailabilityAttr(cast<AvailabilityAttr>(A));
6007     case attr::AvailableOnlyInDefaultEvalMethod:
6008       return getDerived().TraverseAvailableOnlyInDefaultEvalMethodAttr(cast<AvailableOnlyInDefaultEvalMethodAttr>(A));
6009     case attr::BPFFastCall:
6010       return getDerived().TraverseBPFFastCallAttr(cast<BPFFastCallAttr>(A));
6011     case attr::BPFPreserveAccessIndex:
6012       return getDerived().TraverseBPFPreserveAccessIndexAttr(cast<BPFPreserveAccessIndexAttr>(A));
6013     case attr::BPFPreserveStaticOffset:
6014       return getDerived().TraverseBPFPreserveStaticOffsetAttr(cast<BPFPreserveStaticOffsetAttr>(A));
6015     case attr::BTFDeclTag:
6016       return getDerived().TraverseBTFDeclTagAttr(cast<BTFDeclTagAttr>(A));
6017     case attr::BTFTypeTag:
6018       return getDerived().TraverseBTFTypeTagAttr(cast<BTFTypeTagAttr>(A));
6019     case attr::Blocking:
6020       return getDerived().TraverseBlockingAttr(cast<BlockingAttr>(A));
6021     case attr::Blocks:
6022       return getDerived().TraverseBlocksAttr(cast<BlocksAttr>(A));
6023     case attr::Builtin:
6024       return getDerived().TraverseBuiltinAttr(cast<BuiltinAttr>(A));
6025     case attr::BuiltinAlias:
6026       return getDerived().TraverseBuiltinAliasAttr(cast<BuiltinAliasAttr>(A));
6027     case attr::C11NoReturn:
6028       return getDerived().TraverseC11NoReturnAttr(cast<C11NoReturnAttr>(A));
6029     case attr::CDecl:
6030       return getDerived().TraverseCDeclAttr(cast<CDeclAttr>(A));
6031     case attr::CFAuditedTransfer:
6032       return getDerived().TraverseCFAuditedTransferAttr(cast<CFAuditedTransferAttr>(A));
6033     case attr::CFConsumed:
6034       return getDerived().TraverseCFConsumedAttr(cast<CFConsumedAttr>(A));
6035     case attr::CFGuard:
6036       return getDerived().TraverseCFGuardAttr(cast<CFGuardAttr>(A));
6037     case attr::CFICanonicalJumpTable:
6038       return getDerived().TraverseCFICanonicalJumpTableAttr(cast<CFICanonicalJumpTableAttr>(A));
6039     case attr::CFReturnsNotRetained:
6040       return getDerived().TraverseCFReturnsNotRetainedAttr(cast<CFReturnsNotRetainedAttr>(A));
6041     case attr::CFReturnsRetained:
6042       return getDerived().TraverseCFReturnsRetainedAttr(cast<CFReturnsRetainedAttr>(A));
6043     case attr::CFUnknownTransfer:
6044       return getDerived().TraverseCFUnknownTransferAttr(cast<CFUnknownTransferAttr>(A));
6045     case attr::CPUDispatch:
6046       return getDerived().TraverseCPUDispatchAttr(cast<CPUDispatchAttr>(A));
6047     case attr::CPUSpecific:
6048       return getDerived().TraverseCPUSpecificAttr(cast<CPUSpecificAttr>(A));
6049     case attr::CUDAConstant:
6050       return getDerived().TraverseCUDAConstantAttr(cast<CUDAConstantAttr>(A));
6051     case attr::CUDADevice:
6052       return getDerived().TraverseCUDADeviceAttr(cast<CUDADeviceAttr>(A));
6053     case attr::CUDADeviceBuiltinSurfaceType:
6054       return getDerived().TraverseCUDADeviceBuiltinSurfaceTypeAttr(cast<CUDADeviceBuiltinSurfaceTypeAttr>(A));
6055     case attr::CUDADeviceBuiltinTextureType:
6056       return getDerived().TraverseCUDADeviceBuiltinTextureTypeAttr(cast<CUDADeviceBuiltinTextureTypeAttr>(A));
6057     case attr::CUDAGlobal:
6058       return getDerived().TraverseCUDAGlobalAttr(cast<CUDAGlobalAttr>(A));
6059     case attr::CUDAGridConstant:
6060       return getDerived().TraverseCUDAGridConstantAttr(cast<CUDAGridConstantAttr>(A));
6061     case attr::CUDAHost:
6062       return getDerived().TraverseCUDAHostAttr(cast<CUDAHostAttr>(A));
6063     case attr::CUDAInvalidTarget:
6064       return getDerived().TraverseCUDAInvalidTargetAttr(cast<CUDAInvalidTargetAttr>(A));
6065     case attr::CUDALaunchBounds:
6066       return getDerived().TraverseCUDALaunchBoundsAttr(cast<CUDALaunchBoundsAttr>(A));
6067     case attr::CUDAShared:
6068       return getDerived().TraverseCUDASharedAttr(cast<CUDASharedAttr>(A));
6069     case attr::CXX11NoReturn:
6070       return getDerived().TraverseCXX11NoReturnAttr(cast<CXX11NoReturnAttr>(A));
6071     case attr::CXXAssume:
6072       return getDerived().TraverseCXXAssumeAttr(cast<CXXAssumeAttr>(A));
6073     case attr::CallableWhen:
6074       return getDerived().TraverseCallableWhenAttr(cast<CallableWhenAttr>(A));
6075     case attr::Callback:
6076       return getDerived().TraverseCallbackAttr(cast<CallbackAttr>(A));
6077     case attr::CalledOnce:
6078       return getDerived().TraverseCalledOnceAttr(cast<CalledOnceAttr>(A));
6079     case attr::Capability:
6080       return getDerived().TraverseCapabilityAttr(cast<CapabilityAttr>(A));
6081     case attr::CapturedRecord:
6082       return getDerived().TraverseCapturedRecordAttr(cast<CapturedRecordAttr>(A));
6083     case attr::CarriesDependency:
6084       return getDerived().TraverseCarriesDependencyAttr(cast<CarriesDependencyAttr>(A));
6085     case attr::Cleanup:
6086       return getDerived().TraverseCleanupAttr(cast<CleanupAttr>(A));
6087     case attr::ClspvLibclcBuiltin:
6088       return getDerived().TraverseClspvLibclcBuiltinAttr(cast<ClspvLibclcBuiltinAttr>(A));
6089     case attr::CmseNSCall:
6090       return getDerived().TraverseCmseNSCallAttr(cast<CmseNSCallAttr>(A));
6091     case attr::CmseNSEntry:
6092       return getDerived().TraverseCmseNSEntryAttr(cast<CmseNSEntryAttr>(A));
6093     case attr::CodeAlign:
6094       return getDerived().TraverseCodeAlignAttr(cast<CodeAlignAttr>(A));
6095     case attr::CodeModel:
6096       return getDerived().TraverseCodeModelAttr(cast<CodeModelAttr>(A));
6097     case attr::CodeSeg:
6098       return getDerived().TraverseCodeSegAttr(cast<CodeSegAttr>(A));
6099     case attr::Cold:
6100       return getDerived().TraverseColdAttr(cast<ColdAttr>(A));
6101     case attr::Common:
6102       return getDerived().TraverseCommonAttr(cast<CommonAttr>(A));
6103     case attr::Const:
6104       return getDerived().TraverseConstAttr(cast<ConstAttr>(A));
6105     case attr::ConstInit:
6106       return getDerived().TraverseConstInitAttr(cast<ConstInitAttr>(A));
6107     case attr::Constructor:
6108       return getDerived().TraverseConstructorAttr(cast<ConstructorAttr>(A));
6109     case attr::Consumable:
6110       return getDerived().TraverseConsumableAttr(cast<ConsumableAttr>(A));
6111     case attr::ConsumableAutoCast:
6112       return getDerived().TraverseConsumableAutoCastAttr(cast<ConsumableAutoCastAttr>(A));
6113     case attr::ConsumableSetOnRead:
6114       return getDerived().TraverseConsumableSetOnReadAttr(cast<ConsumableSetOnReadAttr>(A));
6115     case attr::Convergent:
6116       return getDerived().TraverseConvergentAttr(cast<ConvergentAttr>(A));
6117     case attr::CoroAwaitElidable:
6118       return getDerived().TraverseCoroAwaitElidableAttr(cast<CoroAwaitElidableAttr>(A));
6119     case attr::CoroAwaitElidableArgument:
6120       return getDerived().TraverseCoroAwaitElidableArgumentAttr(cast<CoroAwaitElidableArgumentAttr>(A));
6121     case attr::CoroDisableLifetimeBound:
6122       return getDerived().TraverseCoroDisableLifetimeBoundAttr(cast<CoroDisableLifetimeBoundAttr>(A));
6123     case attr::CoroLifetimeBound:
6124       return getDerived().TraverseCoroLifetimeBoundAttr(cast<CoroLifetimeBoundAttr>(A));
6125     case attr::CoroOnlyDestroyWhenComplete:
6126       return getDerived().TraverseCoroOnlyDestroyWhenCompleteAttr(cast<CoroOnlyDestroyWhenCompleteAttr>(A));
6127     case attr::CoroReturnType:
6128       return getDerived().TraverseCoroReturnTypeAttr(cast<CoroReturnTypeAttr>(A));
6129     case attr::CoroWrapper:
6130       return getDerived().TraverseCoroWrapperAttr(cast<CoroWrapperAttr>(A));
6131     case attr::CountedBy:
6132       return getDerived().TraverseCountedByAttr(cast<CountedByAttr>(A));
6133     case attr::CountedByOrNull:
6134       return getDerived().TraverseCountedByOrNullAttr(cast<CountedByOrNullAttr>(A));
6135     case attr::DLLExport:
6136       return getDerived().TraverseDLLExportAttr(cast<DLLExportAttr>(A));
6137     case attr::DLLExportStaticLocal:
6138       return getDerived().TraverseDLLExportStaticLocalAttr(cast<DLLExportStaticLocalAttr>(A));
6139     case attr::DLLImport:
6140       return getDerived().TraverseDLLImportAttr(cast<DLLImportAttr>(A));
6141     case attr::DLLImportStaticLocal:
6142       return getDerived().TraverseDLLImportStaticLocalAttr(cast<DLLImportStaticLocalAttr>(A));
6143     case attr::Deprecated:
6144       return getDerived().TraverseDeprecatedAttr(cast<DeprecatedAttr>(A));
6145     case attr::Destructor:
6146       return getDerived().TraverseDestructorAttr(cast<DestructorAttr>(A));
6147     case attr::DiagnoseAsBuiltin:
6148       return getDerived().TraverseDiagnoseAsBuiltinAttr(cast<DiagnoseAsBuiltinAttr>(A));
6149     case attr::DiagnoseIf:
6150       return getDerived().TraverseDiagnoseIfAttr(cast<DiagnoseIfAttr>(A));
6151     case attr::DisableSanitizerInstrumentation:
6152       return getDerived().TraverseDisableSanitizerInstrumentationAttr(cast<DisableSanitizerInstrumentationAttr>(A));
6153     case attr::DisableTailCalls:
6154       return getDerived().TraverseDisableTailCallsAttr(cast<DisableTailCallsAttr>(A));
6155     case attr::EmptyBases:
6156       return getDerived().TraverseEmptyBasesAttr(cast<EmptyBasesAttr>(A));
6157     case attr::EnableIf:
6158       return getDerived().TraverseEnableIfAttr(cast<EnableIfAttr>(A));
6159     case attr::EnforceTCB:
6160       return getDerived().TraverseEnforceTCBAttr(cast<EnforceTCBAttr>(A));
6161     case attr::EnforceTCBLeaf:
6162       return getDerived().TraverseEnforceTCBLeafAttr(cast<EnforceTCBLeafAttr>(A));
6163     case attr::EnumExtensibility:
6164       return getDerived().TraverseEnumExtensibilityAttr(cast<EnumExtensibilityAttr>(A));
6165     case attr::Error:
6166       return getDerived().TraverseErrorAttr(cast<ErrorAttr>(A));
6167     case attr::ExcludeFromExplicitInstantiation:
6168       return getDerived().TraverseExcludeFromExplicitInstantiationAttr(cast<ExcludeFromExplicitInstantiationAttr>(A));
6169     case attr::ExclusiveTrylockFunction:
6170       return getDerived().TraverseExclusiveTrylockFunctionAttr(cast<ExclusiveTrylockFunctionAttr>(A));
6171     case attr::ExplicitInit:
6172       return getDerived().TraverseExplicitInitAttr(cast<ExplicitInitAttr>(A));
6173     case attr::ExternalSourceSymbol:
6174       return getDerived().TraverseExternalSourceSymbolAttr(cast<ExternalSourceSymbolAttr>(A));
6175     case attr::FallThrough:
6176       return getDerived().TraverseFallThroughAttr(cast<FallThroughAttr>(A));
6177     case attr::FastCall:
6178       return getDerived().TraverseFastCallAttr(cast<FastCallAttr>(A));
6179     case attr::Final:
6180       return getDerived().TraverseFinalAttr(cast<FinalAttr>(A));
6181     case attr::FlagEnum:
6182       return getDerived().TraverseFlagEnumAttr(cast<FlagEnumAttr>(A));
6183     case attr::Flatten:
6184       return getDerived().TraverseFlattenAttr(cast<FlattenAttr>(A));
6185     case attr::Format:
6186       return getDerived().TraverseFormatAttr(cast<FormatAttr>(A));
6187     case attr::FormatArg:
6188       return getDerived().TraverseFormatArgAttr(cast<FormatArgAttr>(A));
6189     case attr::FunctionReturnThunks:
6190       return getDerived().TraverseFunctionReturnThunksAttr(cast<FunctionReturnThunksAttr>(A));
6191     case attr::GNUInline:
6192       return getDerived().TraverseGNUInlineAttr(cast<GNUInlineAttr>(A));
6193     case attr::GuardedBy:
6194       return getDerived().TraverseGuardedByAttr(cast<GuardedByAttr>(A));
6195     case attr::GuardedVar:
6196       return getDerived().TraverseGuardedVarAttr(cast<GuardedVarAttr>(A));
6197     case attr::HIPManaged:
6198       return getDerived().TraverseHIPManagedAttr(cast<HIPManagedAttr>(A));
6199     case attr::HLSLContainedType:
6200       return getDerived().TraverseHLSLContainedTypeAttr(cast<HLSLContainedTypeAttr>(A));
6201     case attr::HLSLControlFlowHint:
6202       return getDerived().TraverseHLSLControlFlowHintAttr(cast<HLSLControlFlowHintAttr>(A));
6203     case attr::HLSLGroupSharedAddressSpace:
6204       return getDerived().TraverseHLSLGroupSharedAddressSpaceAttr(cast<HLSLGroupSharedAddressSpaceAttr>(A));
6205     case attr::HLSLLoopHint:
6206       return getDerived().TraverseHLSLLoopHintAttr(cast<HLSLLoopHintAttr>(A));
6207     case attr::HLSLNumThreads:
6208       return getDerived().TraverseHLSLNumThreadsAttr(cast<HLSLNumThreadsAttr>(A));
6209     case attr::HLSLPackOffset:
6210       return getDerived().TraverseHLSLPackOffsetAttr(cast<HLSLPackOffsetAttr>(A));
6211     case attr::HLSLParamModifier:
6212       return getDerived().TraverseHLSLParamModifierAttr(cast<HLSLParamModifierAttr>(A));
6213     case attr::HLSLROV:
6214       return getDerived().TraverseHLSLROVAttr(cast<HLSLROVAttr>(A));
6215     case attr::HLSLRawBuffer:
6216       return getDerived().TraverseHLSLRawBufferAttr(cast<HLSLRawBufferAttr>(A));
6217     case attr::HLSLResource:
6218       return getDerived().TraverseHLSLResourceAttr(cast<HLSLResourceAttr>(A));
6219     case attr::HLSLResourceBinding:
6220       return getDerived().TraverseHLSLResourceBindingAttr(cast<HLSLResourceBindingAttr>(A));
6221     case attr::HLSLResourceClass:
6222       return getDerived().TraverseHLSLResourceClassAttr(cast<HLSLResourceClassAttr>(A));
6223     case attr::HLSLSV_DispatchThreadID:
6224       return getDerived().TraverseHLSLSV_DispatchThreadIDAttr(cast<HLSLSV_DispatchThreadIDAttr>(A));
6225     case attr::HLSLSV_GroupID:
6226       return getDerived().TraverseHLSLSV_GroupIDAttr(cast<HLSLSV_GroupIDAttr>(A));
6227     case attr::HLSLSV_GroupIndex:
6228       return getDerived().TraverseHLSLSV_GroupIndexAttr(cast<HLSLSV_GroupIndexAttr>(A));
6229     case attr::HLSLSV_GroupThreadID:
6230       return getDerived().TraverseHLSLSV_GroupThreadIDAttr(cast<HLSLSV_GroupThreadIDAttr>(A));
6231     case attr::HLSLShader:
6232       return getDerived().TraverseHLSLShaderAttr(cast<HLSLShaderAttr>(A));
6233     case attr::HLSLWaveSize:
6234       return getDerived().TraverseHLSLWaveSizeAttr(cast<HLSLWaveSizeAttr>(A));
6235     case attr::Hot:
6236       return getDerived().TraverseHotAttr(cast<HotAttr>(A));
6237     case attr::HybridPatchable:
6238       return getDerived().TraverseHybridPatchableAttr(cast<HybridPatchableAttr>(A));
6239     case attr::IBAction:
6240       return getDerived().TraverseIBActionAttr(cast<IBActionAttr>(A));
6241     case attr::IBOutlet:
6242       return getDerived().TraverseIBOutletAttr(cast<IBOutletAttr>(A));
6243     case attr::IBOutletCollection:
6244       return getDerived().TraverseIBOutletCollectionAttr(cast<IBOutletCollectionAttr>(A));
6245     case attr::IFunc:
6246       return getDerived().TraverseIFuncAttr(cast<IFuncAttr>(A));
6247     case attr::InitPriority:
6248       return getDerived().TraverseInitPriorityAttr(cast<InitPriorityAttr>(A));
6249     case attr::InitSeg:
6250       return getDerived().TraverseInitSegAttr(cast<InitSegAttr>(A));
6251     case attr::IntelOclBicc:
6252       return getDerived().TraverseIntelOclBiccAttr(cast<IntelOclBiccAttr>(A));
6253     case attr::InternalLinkage:
6254       return getDerived().TraverseInternalLinkageAttr(cast<InternalLinkageAttr>(A));
6255     case attr::LTOVisibilityPublic:
6256       return getDerived().TraverseLTOVisibilityPublicAttr(cast<LTOVisibilityPublicAttr>(A));
6257     case attr::LayoutVersion:
6258       return getDerived().TraverseLayoutVersionAttr(cast<LayoutVersionAttr>(A));
6259     case attr::Leaf:
6260       return getDerived().TraverseLeafAttr(cast<LeafAttr>(A));
6261     case attr::LifetimeBound:
6262       return getDerived().TraverseLifetimeBoundAttr(cast<LifetimeBoundAttr>(A));
6263     case attr::LifetimeCaptureBy:
6264       return getDerived().TraverseLifetimeCaptureByAttr(cast<LifetimeCaptureByAttr>(A));
6265     case attr::Likely:
6266       return getDerived().TraverseLikelyAttr(cast<LikelyAttr>(A));
6267     case attr::LoaderUninitialized:
6268       return getDerived().TraverseLoaderUninitializedAttr(cast<LoaderUninitializedAttr>(A));
6269     case attr::LockReturned:
6270       return getDerived().TraverseLockReturnedAttr(cast<LockReturnedAttr>(A));
6271     case attr::LocksExcluded:
6272       return getDerived().TraverseLocksExcludedAttr(cast<LocksExcludedAttr>(A));
6273     case attr::LoopHint:
6274       return getDerived().TraverseLoopHintAttr(cast<LoopHintAttr>(A));
6275     case attr::M68kInterrupt:
6276       return getDerived().TraverseM68kInterruptAttr(cast<M68kInterruptAttr>(A));
6277     case attr::M68kRTD:
6278       return getDerived().TraverseM68kRTDAttr(cast<M68kRTDAttr>(A));
6279     case attr::MIGServerRoutine:
6280       return getDerived().TraverseMIGServerRoutineAttr(cast<MIGServerRoutineAttr>(A));
6281     case attr::MSABI:
6282       return getDerived().TraverseMSABIAttr(cast<MSABIAttr>(A));
6283     case attr::MSAllocator:
6284       return getDerived().TraverseMSAllocatorAttr(cast<MSAllocatorAttr>(A));
6285     case attr::MSConstexpr:
6286       return getDerived().TraverseMSConstexprAttr(cast<MSConstexprAttr>(A));
6287     case attr::MSInheritance:
6288       return getDerived().TraverseMSInheritanceAttr(cast<MSInheritanceAttr>(A));
6289     case attr::MSNoVTable:
6290       return getDerived().TraverseMSNoVTableAttr(cast<MSNoVTableAttr>(A));
6291     case attr::MSP430Interrupt:
6292       return getDerived().TraverseMSP430InterruptAttr(cast<MSP430InterruptAttr>(A));
6293     case attr::MSStruct:
6294       return getDerived().TraverseMSStructAttr(cast<MSStructAttr>(A));
6295     case attr::MSVtorDisp:
6296       return getDerived().TraverseMSVtorDispAttr(cast<MSVtorDispAttr>(A));
6297     case attr::MaxFieldAlignment:
6298       return getDerived().TraverseMaxFieldAlignmentAttr(cast<MaxFieldAlignmentAttr>(A));
6299     case attr::MayAlias:
6300       return getDerived().TraverseMayAliasAttr(cast<MayAliasAttr>(A));
6301     case attr::MaybeUndef:
6302       return getDerived().TraverseMaybeUndefAttr(cast<MaybeUndefAttr>(A));
6303     case attr::MicroMips:
6304       return getDerived().TraverseMicroMipsAttr(cast<MicroMipsAttr>(A));
6305     case attr::MinSize:
6306       return getDerived().TraverseMinSizeAttr(cast<MinSizeAttr>(A));
6307     case attr::MinVectorWidth:
6308       return getDerived().TraverseMinVectorWidthAttr(cast<MinVectorWidthAttr>(A));
6309     case attr::Mips16:
6310       return getDerived().TraverseMips16Attr(cast<Mips16Attr>(A));
6311     case attr::MipsInterrupt:
6312       return getDerived().TraverseMipsInterruptAttr(cast<MipsInterruptAttr>(A));
6313     case attr::MipsLongCall:
6314       return getDerived().TraverseMipsLongCallAttr(cast<MipsLongCallAttr>(A));
6315     case attr::MipsShortCall:
6316       return getDerived().TraverseMipsShortCallAttr(cast<MipsShortCallAttr>(A));
6317     case attr::Mode:
6318       return getDerived().TraverseModeAttr(cast<ModeAttr>(A));
6319     case attr::MustTail:
6320       return getDerived().TraverseMustTailAttr(cast<MustTailAttr>(A));
6321     case attr::NSConsumed:
6322       return getDerived().TraverseNSConsumedAttr(cast<NSConsumedAttr>(A));
6323     case attr::NSConsumesSelf:
6324       return getDerived().TraverseNSConsumesSelfAttr(cast<NSConsumesSelfAttr>(A));
6325     case attr::NSErrorDomain:
6326       return getDerived().TraverseNSErrorDomainAttr(cast<NSErrorDomainAttr>(A));
6327     case attr::NSReturnsAutoreleased:
6328       return getDerived().TraverseNSReturnsAutoreleasedAttr(cast<NSReturnsAutoreleasedAttr>(A));
6329     case attr::NSReturnsNotRetained:
6330       return getDerived().TraverseNSReturnsNotRetainedAttr(cast<NSReturnsNotRetainedAttr>(A));
6331     case attr::NSReturnsRetained:
6332       return getDerived().TraverseNSReturnsRetainedAttr(cast<NSReturnsRetainedAttr>(A));
6333     case attr::NVPTXKernel:
6334       return getDerived().TraverseNVPTXKernelAttr(cast<NVPTXKernelAttr>(A));
6335     case attr::Naked:
6336       return getDerived().TraverseNakedAttr(cast<NakedAttr>(A));
6337     case attr::NoAlias:
6338       return getDerived().TraverseNoAliasAttr(cast<NoAliasAttr>(A));
6339     case attr::NoBuiltin:
6340       return getDerived().TraverseNoBuiltinAttr(cast<NoBuiltinAttr>(A));
6341     case attr::NoCommon:
6342       return getDerived().TraverseNoCommonAttr(cast<NoCommonAttr>(A));
6343     case attr::NoConvergent:
6344       return getDerived().TraverseNoConvergentAttr(cast<NoConvergentAttr>(A));
6345     case attr::NoDebug:
6346       return getDerived().TraverseNoDebugAttr(cast<NoDebugAttr>(A));
6347     case attr::NoDeref:
6348       return getDerived().TraverseNoDerefAttr(cast<NoDerefAttr>(A));
6349     case attr::NoDestroy:
6350       return getDerived().TraverseNoDestroyAttr(cast<NoDestroyAttr>(A));
6351     case attr::NoDuplicate:
6352       return getDerived().TraverseNoDuplicateAttr(cast<NoDuplicateAttr>(A));
6353     case attr::NoEscape:
6354       return getDerived().TraverseNoEscapeAttr(cast<NoEscapeAttr>(A));
6355     case attr::NoInline:
6356       return getDerived().TraverseNoInlineAttr(cast<NoInlineAttr>(A));
6357     case attr::NoInstrumentFunction:
6358       return getDerived().TraverseNoInstrumentFunctionAttr(cast<NoInstrumentFunctionAttr>(A));
6359     case attr::NoMerge:
6360       return getDerived().TraverseNoMergeAttr(cast<NoMergeAttr>(A));
6361     case attr::NoMicroMips:
6362       return getDerived().TraverseNoMicroMipsAttr(cast<NoMicroMipsAttr>(A));
6363     case attr::NoMips16:
6364       return getDerived().TraverseNoMips16Attr(cast<NoMips16Attr>(A));
6365     case attr::NoProfileFunction:
6366       return getDerived().TraverseNoProfileFunctionAttr(cast<NoProfileFunctionAttr>(A));
6367     case attr::NoRandomizeLayout:
6368       return getDerived().TraverseNoRandomizeLayoutAttr(cast<NoRandomizeLayoutAttr>(A));
6369     case attr::NoReturn:
6370       return getDerived().TraverseNoReturnAttr(cast<NoReturnAttr>(A));
6371     case attr::NoSanitize:
6372       return getDerived().TraverseNoSanitizeAttr(cast<NoSanitizeAttr>(A));
6373     case attr::NoSpecializations:
6374       return getDerived().TraverseNoSpecializationsAttr(cast<NoSpecializationsAttr>(A));
6375     case attr::NoSpeculativeLoadHardening:
6376       return getDerived().TraverseNoSpeculativeLoadHardeningAttr(cast<NoSpeculativeLoadHardeningAttr>(A));
6377     case attr::NoSplitStack:
6378       return getDerived().TraverseNoSplitStackAttr(cast<NoSplitStackAttr>(A));
6379     case attr::NoStackProtector:
6380       return getDerived().TraverseNoStackProtectorAttr(cast<NoStackProtectorAttr>(A));
6381     case attr::NoThreadSafetyAnalysis:
6382       return getDerived().TraverseNoThreadSafetyAnalysisAttr(cast<NoThreadSafetyAnalysisAttr>(A));
6383     case attr::NoThrow:
6384       return getDerived().TraverseNoThrowAttr(cast<NoThrowAttr>(A));
6385     case attr::NoTrivialAutoVarInit:
6386       return getDerived().TraverseNoTrivialAutoVarInitAttr(cast<NoTrivialAutoVarInitAttr>(A));
6387     case attr::NoUniqueAddress:
6388       return getDerived().TraverseNoUniqueAddressAttr(cast<NoUniqueAddressAttr>(A));
6389     case attr::NoUwtable:
6390       return getDerived().TraverseNoUwtableAttr(cast<NoUwtableAttr>(A));
6391     case attr::NonAllocating:
6392       return getDerived().TraverseNonAllocatingAttr(cast<NonAllocatingAttr>(A));
6393     case attr::NonBlocking:
6394       return getDerived().TraverseNonBlockingAttr(cast<NonBlockingAttr>(A));
6395     case attr::NonNull:
6396       return getDerived().TraverseNonNullAttr(cast<NonNullAttr>(A));
6397     case attr::NotTailCalled:
6398       return getDerived().TraverseNotTailCalledAttr(cast<NotTailCalledAttr>(A));
6399     case attr::OMPAllocateDecl:
6400       return getDerived().TraverseOMPAllocateDeclAttr(cast<OMPAllocateDeclAttr>(A));
6401     case attr::OMPAssume:
6402       return getDerived().TraverseOMPAssumeAttr(cast<OMPAssumeAttr>(A));
6403     case attr::OMPCaptureKind:
6404       return getDerived().TraverseOMPCaptureKindAttr(cast<OMPCaptureKindAttr>(A));
6405     case attr::OMPCaptureNoInit:
6406       return getDerived().TraverseOMPCaptureNoInitAttr(cast<OMPCaptureNoInitAttr>(A));
6407     case attr::OMPDeclareSimdDecl:
6408       return getDerived().TraverseOMPDeclareSimdDeclAttr(cast<OMPDeclareSimdDeclAttr>(A));
6409     case attr::OMPDeclareTargetDecl:
6410       return getDerived().TraverseOMPDeclareTargetDeclAttr(cast<OMPDeclareTargetDeclAttr>(A));
6411     case attr::OMPDeclareVariant:
6412       return getDerived().TraverseOMPDeclareVariantAttr(cast<OMPDeclareVariantAttr>(A));
6413     case attr::OMPReferencedVar:
6414       return getDerived().TraverseOMPReferencedVarAttr(cast<OMPReferencedVarAttr>(A));
6415     case attr::OMPThreadPrivateDecl:
6416       return getDerived().TraverseOMPThreadPrivateDeclAttr(cast<OMPThreadPrivateDeclAttr>(A));
6417     case attr::OSConsumed:
6418       return getDerived().TraverseOSConsumedAttr(cast<OSConsumedAttr>(A));
6419     case attr::OSConsumesThis:
6420       return getDerived().TraverseOSConsumesThisAttr(cast<OSConsumesThisAttr>(A));
6421     case attr::OSReturnsNotRetained:
6422       return getDerived().TraverseOSReturnsNotRetainedAttr(cast<OSReturnsNotRetainedAttr>(A));
6423     case attr::OSReturnsRetained:
6424       return getDerived().TraverseOSReturnsRetainedAttr(cast<OSReturnsRetainedAttr>(A));
6425     case attr::OSReturnsRetainedOnNonZero:
6426       return getDerived().TraverseOSReturnsRetainedOnNonZeroAttr(cast<OSReturnsRetainedOnNonZeroAttr>(A));
6427     case attr::OSReturnsRetainedOnZero:
6428       return getDerived().TraverseOSReturnsRetainedOnZeroAttr(cast<OSReturnsRetainedOnZeroAttr>(A));
6429     case attr::ObjCBoxable:
6430       return getDerived().TraverseObjCBoxableAttr(cast<ObjCBoxableAttr>(A));
6431     case attr::ObjCBridge:
6432       return getDerived().TraverseObjCBridgeAttr(cast<ObjCBridgeAttr>(A));
6433     case attr::ObjCBridgeMutable:
6434       return getDerived().TraverseObjCBridgeMutableAttr(cast<ObjCBridgeMutableAttr>(A));
6435     case attr::ObjCBridgeRelated:
6436       return getDerived().TraverseObjCBridgeRelatedAttr(cast<ObjCBridgeRelatedAttr>(A));
6437     case attr::ObjCClassStub:
6438       return getDerived().TraverseObjCClassStubAttr(cast<ObjCClassStubAttr>(A));
6439     case attr::ObjCDesignatedInitializer:
6440       return getDerived().TraverseObjCDesignatedInitializerAttr(cast<ObjCDesignatedInitializerAttr>(A));
6441     case attr::ObjCDirect:
6442       return getDerived().TraverseObjCDirectAttr(cast<ObjCDirectAttr>(A));
6443     case attr::ObjCDirectMembers:
6444       return getDerived().TraverseObjCDirectMembersAttr(cast<ObjCDirectMembersAttr>(A));
6445     case attr::ObjCException:
6446       return getDerived().TraverseObjCExceptionAttr(cast<ObjCExceptionAttr>(A));
6447     case attr::ObjCExplicitProtocolImpl:
6448       return getDerived().TraverseObjCExplicitProtocolImplAttr(cast<ObjCExplicitProtocolImplAttr>(A));
6449     case attr::ObjCExternallyRetained:
6450       return getDerived().TraverseObjCExternallyRetainedAttr(cast<ObjCExternallyRetainedAttr>(A));
6451     case attr::ObjCGC:
6452       return getDerived().TraverseObjCGCAttr(cast<ObjCGCAttr>(A));
6453     case attr::ObjCIndependentClass:
6454       return getDerived().TraverseObjCIndependentClassAttr(cast<ObjCIndependentClassAttr>(A));
6455     case attr::ObjCInertUnsafeUnretained:
6456       return getDerived().TraverseObjCInertUnsafeUnretainedAttr(cast<ObjCInertUnsafeUnretainedAttr>(A));
6457     case attr::ObjCKindOf:
6458       return getDerived().TraverseObjCKindOfAttr(cast<ObjCKindOfAttr>(A));
6459     case attr::ObjCMethodFamily:
6460       return getDerived().TraverseObjCMethodFamilyAttr(cast<ObjCMethodFamilyAttr>(A));
6461     case attr::ObjCNSObject:
6462       return getDerived().TraverseObjCNSObjectAttr(cast<ObjCNSObjectAttr>(A));
6463     case attr::ObjCNonLazyClass:
6464       return getDerived().TraverseObjCNonLazyClassAttr(cast<ObjCNonLazyClassAttr>(A));
6465     case attr::ObjCNonRuntimeProtocol:
6466       return getDerived().TraverseObjCNonRuntimeProtocolAttr(cast<ObjCNonRuntimeProtocolAttr>(A));
6467     case attr::ObjCOwnership:
6468       return getDerived().TraverseObjCOwnershipAttr(cast<ObjCOwnershipAttr>(A));
6469     case attr::ObjCPreciseLifetime:
6470       return getDerived().TraverseObjCPreciseLifetimeAttr(cast<ObjCPreciseLifetimeAttr>(A));
6471     case attr::ObjCRequiresPropertyDefs:
6472       return getDerived().TraverseObjCRequiresPropertyDefsAttr(cast<ObjCRequiresPropertyDefsAttr>(A));
6473     case attr::ObjCRequiresSuper:
6474       return getDerived().TraverseObjCRequiresSuperAttr(cast<ObjCRequiresSuperAttr>(A));
6475     case attr::ObjCReturnsInnerPointer:
6476       return getDerived().TraverseObjCReturnsInnerPointerAttr(cast<ObjCReturnsInnerPointerAttr>(A));
6477     case attr::ObjCRootClass:
6478       return getDerived().TraverseObjCRootClassAttr(cast<ObjCRootClassAttr>(A));
6479     case attr::ObjCRuntimeName:
6480       return getDerived().TraverseObjCRuntimeNameAttr(cast<ObjCRuntimeNameAttr>(A));
6481     case attr::ObjCRuntimeVisible:
6482       return getDerived().TraverseObjCRuntimeVisibleAttr(cast<ObjCRuntimeVisibleAttr>(A));
6483     case attr::ObjCSubclassingRestricted:
6484       return getDerived().TraverseObjCSubclassingRestrictedAttr(cast<ObjCSubclassingRestrictedAttr>(A));
6485     case attr::OpenCLAccess:
6486       return getDerived().TraverseOpenCLAccessAttr(cast<OpenCLAccessAttr>(A));
6487     case attr::OpenCLConstantAddressSpace:
6488       return getDerived().TraverseOpenCLConstantAddressSpaceAttr(cast<OpenCLConstantAddressSpaceAttr>(A));
6489     case attr::OpenCLGenericAddressSpace:
6490       return getDerived().TraverseOpenCLGenericAddressSpaceAttr(cast<OpenCLGenericAddressSpaceAttr>(A));
6491     case attr::OpenCLGlobalAddressSpace:
6492       return getDerived().TraverseOpenCLGlobalAddressSpaceAttr(cast<OpenCLGlobalAddressSpaceAttr>(A));
6493     case attr::OpenCLGlobalDeviceAddressSpace:
6494       return getDerived().TraverseOpenCLGlobalDeviceAddressSpaceAttr(cast<OpenCLGlobalDeviceAddressSpaceAttr>(A));
6495     case attr::OpenCLGlobalHostAddressSpace:
6496       return getDerived().TraverseOpenCLGlobalHostAddressSpaceAttr(cast<OpenCLGlobalHostAddressSpaceAttr>(A));
6497     case attr::OpenCLIntelReqdSubGroupSize:
6498       return getDerived().TraverseOpenCLIntelReqdSubGroupSizeAttr(cast<OpenCLIntelReqdSubGroupSizeAttr>(A));
6499     case attr::OpenCLKernel:
6500       return getDerived().TraverseOpenCLKernelAttr(cast<OpenCLKernelAttr>(A));
6501     case attr::OpenCLLocalAddressSpace:
6502       return getDerived().TraverseOpenCLLocalAddressSpaceAttr(cast<OpenCLLocalAddressSpaceAttr>(A));
6503     case attr::OpenCLPrivateAddressSpace:
6504       return getDerived().TraverseOpenCLPrivateAddressSpaceAttr(cast<OpenCLPrivateAddressSpaceAttr>(A));
6505     case attr::OpenCLUnrollHint:
6506       return getDerived().TraverseOpenCLUnrollHintAttr(cast<OpenCLUnrollHintAttr>(A));
6507     case attr::OptimizeNone:
6508       return getDerived().TraverseOptimizeNoneAttr(cast<OptimizeNoneAttr>(A));
6509     case attr::Overloadable:
6510       return getDerived().TraverseOverloadableAttr(cast<OverloadableAttr>(A));
6511     case attr::Override:
6512       return getDerived().TraverseOverrideAttr(cast<OverrideAttr>(A));
6513     case attr::Owner:
6514       return getDerived().TraverseOwnerAttr(cast<OwnerAttr>(A));
6515     case attr::Ownership:
6516       return getDerived().TraverseOwnershipAttr(cast<OwnershipAttr>(A));
6517     case attr::Packed:
6518       return getDerived().TraversePackedAttr(cast<PackedAttr>(A));
6519     case attr::ParamTypestate:
6520       return getDerived().TraverseParamTypestateAttr(cast<ParamTypestateAttr>(A));
6521     case attr::Pascal:
6522       return getDerived().TraversePascalAttr(cast<PascalAttr>(A));
6523     case attr::PassObjectSize:
6524       return getDerived().TraversePassObjectSizeAttr(cast<PassObjectSizeAttr>(A));
6525     case attr::PatchableFunctionEntry:
6526       return getDerived().TraversePatchableFunctionEntryAttr(cast<PatchableFunctionEntryAttr>(A));
6527     case attr::Pcs:
6528       return getDerived().TraversePcsAttr(cast<PcsAttr>(A));
6529     case attr::Pointer:
6530       return getDerived().TraversePointerAttr(cast<PointerAttr>(A));
6531     case attr::PragmaClangBSSSection:
6532       return getDerived().TraversePragmaClangBSSSectionAttr(cast<PragmaClangBSSSectionAttr>(A));
6533     case attr::PragmaClangDataSection:
6534       return getDerived().TraversePragmaClangDataSectionAttr(cast<PragmaClangDataSectionAttr>(A));
6535     case attr::PragmaClangRelroSection:
6536       return getDerived().TraversePragmaClangRelroSectionAttr(cast<PragmaClangRelroSectionAttr>(A));
6537     case attr::PragmaClangRodataSection:
6538       return getDerived().TraversePragmaClangRodataSectionAttr(cast<PragmaClangRodataSectionAttr>(A));
6539     case attr::PragmaClangTextSection:
6540       return getDerived().TraversePragmaClangTextSectionAttr(cast<PragmaClangTextSectionAttr>(A));
6541     case attr::PreferredName:
6542       return getDerived().TraversePreferredNameAttr(cast<PreferredNameAttr>(A));
6543     case attr::PreferredType:
6544       return getDerived().TraversePreferredTypeAttr(cast<PreferredTypeAttr>(A));
6545     case attr::PreserveAll:
6546       return getDerived().TraversePreserveAllAttr(cast<PreserveAllAttr>(A));
6547     case attr::PreserveMost:
6548       return getDerived().TraversePreserveMostAttr(cast<PreserveMostAttr>(A));
6549     case attr::PreserveNone:
6550       return getDerived().TraversePreserveNoneAttr(cast<PreserveNoneAttr>(A));
6551     case attr::PtGuardedBy:
6552       return getDerived().TraversePtGuardedByAttr(cast<PtGuardedByAttr>(A));
6553     case attr::PtGuardedVar:
6554       return getDerived().TraversePtGuardedVarAttr(cast<PtGuardedVarAttr>(A));
6555     case attr::Ptr32:
6556       return getDerived().TraversePtr32Attr(cast<Ptr32Attr>(A));
6557     case attr::Ptr64:
6558       return getDerived().TraversePtr64Attr(cast<Ptr64Attr>(A));
6559     case attr::Pure:
6560       return getDerived().TraversePureAttr(cast<PureAttr>(A));
6561     case attr::RISCVInterrupt:
6562       return getDerived().TraverseRISCVInterruptAttr(cast<RISCVInterruptAttr>(A));
6563     case attr::RISCVVectorCC:
6564       return getDerived().TraverseRISCVVectorCCAttr(cast<RISCVVectorCCAttr>(A));
6565     case attr::RandomizeLayout:
6566       return getDerived().TraverseRandomizeLayoutAttr(cast<RandomizeLayoutAttr>(A));
6567     case attr::ReadOnlyPlacement:
6568       return getDerived().TraverseReadOnlyPlacementAttr(cast<ReadOnlyPlacementAttr>(A));
6569     case attr::RegCall:
6570       return getDerived().TraverseRegCallAttr(cast<RegCallAttr>(A));
6571     case attr::Reinitializes:
6572       return getDerived().TraverseReinitializesAttr(cast<ReinitializesAttr>(A));
6573     case attr::ReleaseCapability:
6574       return getDerived().TraverseReleaseCapabilityAttr(cast<ReleaseCapabilityAttr>(A));
6575     case attr::ReleaseHandle:
6576       return getDerived().TraverseReleaseHandleAttr(cast<ReleaseHandleAttr>(A));
6577     case attr::ReqdWorkGroupSize:
6578       return getDerived().TraverseReqdWorkGroupSizeAttr(cast<ReqdWorkGroupSizeAttr>(A));
6579     case attr::RequiresCapability:
6580       return getDerived().TraverseRequiresCapabilityAttr(cast<RequiresCapabilityAttr>(A));
6581     case attr::Restrict:
6582       return getDerived().TraverseRestrictAttr(cast<RestrictAttr>(A));
6583     case attr::Retain:
6584       return getDerived().TraverseRetainAttr(cast<RetainAttr>(A));
6585     case attr::ReturnTypestate:
6586       return getDerived().TraverseReturnTypestateAttr(cast<ReturnTypestateAttr>(A));
6587     case attr::ReturnsNonNull:
6588       return getDerived().TraverseReturnsNonNullAttr(cast<ReturnsNonNullAttr>(A));
6589     case attr::ReturnsTwice:
6590       return getDerived().TraverseReturnsTwiceAttr(cast<ReturnsTwiceAttr>(A));
6591     case attr::SPtr:
6592       return getDerived().TraverseSPtrAttr(cast<SPtrAttr>(A));
6593     case attr::SYCLKernel:
6594       return getDerived().TraverseSYCLKernelAttr(cast<SYCLKernelAttr>(A));
6595     case attr::SYCLKernelEntryPoint:
6596       return getDerived().TraverseSYCLKernelEntryPointAttr(cast<SYCLKernelEntryPointAttr>(A));
6597     case attr::SYCLSpecialClass:
6598       return getDerived().TraverseSYCLSpecialClassAttr(cast<SYCLSpecialClassAttr>(A));
6599     case attr::ScopedLockable:
6600       return getDerived().TraverseScopedLockableAttr(cast<ScopedLockableAttr>(A));
6601     case attr::Section:
6602       return getDerived().TraverseSectionAttr(cast<SectionAttr>(A));
6603     case attr::SelectAny:
6604       return getDerived().TraverseSelectAnyAttr(cast<SelectAnyAttr>(A));
6605     case attr::Sentinel:
6606       return getDerived().TraverseSentinelAttr(cast<SentinelAttr>(A));
6607     case attr::SetTypestate:
6608       return getDerived().TraverseSetTypestateAttr(cast<SetTypestateAttr>(A));
6609     case attr::SharedTrylockFunction:
6610       return getDerived().TraverseSharedTrylockFunctionAttr(cast<SharedTrylockFunctionAttr>(A));
6611     case attr::SizedBy:
6612       return getDerived().TraverseSizedByAttr(cast<SizedByAttr>(A));
6613     case attr::SizedByOrNull:
6614       return getDerived().TraverseSizedByOrNullAttr(cast<SizedByOrNullAttr>(A));
6615     case attr::SpeculativeLoadHardening:
6616       return getDerived().TraverseSpeculativeLoadHardeningAttr(cast<SpeculativeLoadHardeningAttr>(A));
6617     case attr::StandaloneDebug:
6618       return getDerived().TraverseStandaloneDebugAttr(cast<StandaloneDebugAttr>(A));
6619     case attr::StdCall:
6620       return getDerived().TraverseStdCallAttr(cast<StdCallAttr>(A));
6621     case attr::StrictFP:
6622       return getDerived().TraverseStrictFPAttr(cast<StrictFPAttr>(A));
6623     case attr::StrictGuardStackCheck:
6624       return getDerived().TraverseStrictGuardStackCheckAttr(cast<StrictGuardStackCheckAttr>(A));
6625     case attr::Suppress:
6626       return getDerived().TraverseSuppressAttr(cast<SuppressAttr>(A));
6627     case attr::SwiftAsync:
6628       return getDerived().TraverseSwiftAsyncAttr(cast<SwiftAsyncAttr>(A));
6629     case attr::SwiftAsyncCall:
6630       return getDerived().TraverseSwiftAsyncCallAttr(cast<SwiftAsyncCallAttr>(A));
6631     case attr::SwiftAsyncContext:
6632       return getDerived().TraverseSwiftAsyncContextAttr(cast<SwiftAsyncContextAttr>(A));
6633     case attr::SwiftAsyncError:
6634       return getDerived().TraverseSwiftAsyncErrorAttr(cast<SwiftAsyncErrorAttr>(A));
6635     case attr::SwiftAsyncName:
6636       return getDerived().TraverseSwiftAsyncNameAttr(cast<SwiftAsyncNameAttr>(A));
6637     case attr::SwiftAttr:
6638       return getDerived().TraverseSwiftAttrAttr(cast<SwiftAttrAttr>(A));
6639     case attr::SwiftBridge:
6640       return getDerived().TraverseSwiftBridgeAttr(cast<SwiftBridgeAttr>(A));
6641     case attr::SwiftBridgedTypedef:
6642       return getDerived().TraverseSwiftBridgedTypedefAttr(cast<SwiftBridgedTypedefAttr>(A));
6643     case attr::SwiftCall:
6644       return getDerived().TraverseSwiftCallAttr(cast<SwiftCallAttr>(A));
6645     case attr::SwiftContext:
6646       return getDerived().TraverseSwiftContextAttr(cast<SwiftContextAttr>(A));
6647     case attr::SwiftError:
6648       return getDerived().TraverseSwiftErrorAttr(cast<SwiftErrorAttr>(A));
6649     case attr::SwiftErrorResult:
6650       return getDerived().TraverseSwiftErrorResultAttr(cast<SwiftErrorResultAttr>(A));
6651     case attr::SwiftImportAsNonGeneric:
6652       return getDerived().TraverseSwiftImportAsNonGenericAttr(cast<SwiftImportAsNonGenericAttr>(A));
6653     case attr::SwiftImportPropertyAsAccessors:
6654       return getDerived().TraverseSwiftImportPropertyAsAccessorsAttr(cast<SwiftImportPropertyAsAccessorsAttr>(A));
6655     case attr::SwiftIndirectResult:
6656       return getDerived().TraverseSwiftIndirectResultAttr(cast<SwiftIndirectResultAttr>(A));
6657     case attr::SwiftName:
6658       return getDerived().TraverseSwiftNameAttr(cast<SwiftNameAttr>(A));
6659     case attr::SwiftNewType:
6660       return getDerived().TraverseSwiftNewTypeAttr(cast<SwiftNewTypeAttr>(A));
6661     case attr::SwiftObjCMembers:
6662       return getDerived().TraverseSwiftObjCMembersAttr(cast<SwiftObjCMembersAttr>(A));
6663     case attr::SwiftPrivate:
6664       return getDerived().TraverseSwiftPrivateAttr(cast<SwiftPrivateAttr>(A));
6665     case attr::SwiftVersionedAddition:
6666       return getDerived().TraverseSwiftVersionedAdditionAttr(cast<SwiftVersionedAdditionAttr>(A));
6667     case attr::SwiftVersionedRemoval:
6668       return getDerived().TraverseSwiftVersionedRemovalAttr(cast<SwiftVersionedRemovalAttr>(A));
6669     case attr::SysVABI:
6670       return getDerived().TraverseSysVABIAttr(cast<SysVABIAttr>(A));
6671     case attr::TLSModel:
6672       return getDerived().TraverseTLSModelAttr(cast<TLSModelAttr>(A));
6673     case attr::Target:
6674       return getDerived().TraverseTargetAttr(cast<TargetAttr>(A));
6675     case attr::TargetClones:
6676       return getDerived().TraverseTargetClonesAttr(cast<TargetClonesAttr>(A));
6677     case attr::TargetVersion:
6678       return getDerived().TraverseTargetVersionAttr(cast<TargetVersionAttr>(A));
6679     case attr::TestTypestate:
6680       return getDerived().TraverseTestTypestateAttr(cast<TestTypestateAttr>(A));
6681     case attr::ThisCall:
6682       return getDerived().TraverseThisCallAttr(cast<ThisCallAttr>(A));
6683     case attr::Thread:
6684       return getDerived().TraverseThreadAttr(cast<ThreadAttr>(A));
6685     case attr::TransparentUnion:
6686       return getDerived().TraverseTransparentUnionAttr(cast<TransparentUnionAttr>(A));
6687     case attr::TrivialABI:
6688       return getDerived().TraverseTrivialABIAttr(cast<TrivialABIAttr>(A));
6689     case attr::TryAcquireCapability:
6690       return getDerived().TraverseTryAcquireCapabilityAttr(cast<TryAcquireCapabilityAttr>(A));
6691     case attr::TypeNonNull:
6692       return getDerived().TraverseTypeNonNullAttr(cast<TypeNonNullAttr>(A));
6693     case attr::TypeNullUnspecified:
6694       return getDerived().TraverseTypeNullUnspecifiedAttr(cast<TypeNullUnspecifiedAttr>(A));
6695     case attr::TypeNullable:
6696       return getDerived().TraverseTypeNullableAttr(cast<TypeNullableAttr>(A));
6697     case attr::TypeNullableResult:
6698       return getDerived().TraverseTypeNullableResultAttr(cast<TypeNullableResultAttr>(A));
6699     case attr::TypeTagForDatatype:
6700       return getDerived().TraverseTypeTagForDatatypeAttr(cast<TypeTagForDatatypeAttr>(A));
6701     case attr::TypeVisibility:
6702       return getDerived().TraverseTypeVisibilityAttr(cast<TypeVisibilityAttr>(A));
6703     case attr::UPtr:
6704       return getDerived().TraverseUPtrAttr(cast<UPtrAttr>(A));
6705     case attr::Unavailable:
6706       return getDerived().TraverseUnavailableAttr(cast<UnavailableAttr>(A));
6707     case attr::Uninitialized:
6708       return getDerived().TraverseUninitializedAttr(cast<UninitializedAttr>(A));
6709     case attr::Unlikely:
6710       return getDerived().TraverseUnlikelyAttr(cast<UnlikelyAttr>(A));
6711     case attr::UnsafeBufferUsage:
6712       return getDerived().TraverseUnsafeBufferUsageAttr(cast<UnsafeBufferUsageAttr>(A));
6713     case attr::Unused:
6714       return getDerived().TraverseUnusedAttr(cast<UnusedAttr>(A));
6715     case attr::UseHandle:
6716       return getDerived().TraverseUseHandleAttr(cast<UseHandleAttr>(A));
6717     case attr::Used:
6718       return getDerived().TraverseUsedAttr(cast<UsedAttr>(A));
6719     case attr::UsingIfExists:
6720       return getDerived().TraverseUsingIfExistsAttr(cast<UsingIfExistsAttr>(A));
6721     case attr::Uuid:
6722       return getDerived().TraverseUuidAttr(cast<UuidAttr>(A));
6723     case attr::VTablePointerAuthentication:
6724       return getDerived().TraverseVTablePointerAuthenticationAttr(cast<VTablePointerAuthenticationAttr>(A));
6725     case attr::VecReturn:
6726       return getDerived().TraverseVecReturnAttr(cast<VecReturnAttr>(A));
6727     case attr::VecTypeHint:
6728       return getDerived().TraverseVecTypeHintAttr(cast<VecTypeHintAttr>(A));
6729     case attr::VectorCall:
6730       return getDerived().TraverseVectorCallAttr(cast<VectorCallAttr>(A));
6731     case attr::Visibility:
6732       return getDerived().TraverseVisibilityAttr(cast<VisibilityAttr>(A));
6733     case attr::WarnUnused:
6734       return getDerived().TraverseWarnUnusedAttr(cast<WarnUnusedAttr>(A));
6735     case attr::WarnUnusedResult:
6736       return getDerived().TraverseWarnUnusedResultAttr(cast<WarnUnusedResultAttr>(A));
6737     case attr::Weak:
6738       return getDerived().TraverseWeakAttr(cast<WeakAttr>(A));
6739     case attr::WeakImport:
6740       return getDerived().TraverseWeakImportAttr(cast<WeakImportAttr>(A));
6741     case attr::WeakRef:
6742       return getDerived().TraverseWeakRefAttr(cast<WeakRefAttr>(A));
6743     case attr::WebAssemblyExportName:
6744       return getDerived().TraverseWebAssemblyExportNameAttr(cast<WebAssemblyExportNameAttr>(A));
6745     case attr::WebAssemblyFuncref:
6746       return getDerived().TraverseWebAssemblyFuncrefAttr(cast<WebAssemblyFuncrefAttr>(A));
6747     case attr::WebAssemblyImportModule:
6748       return getDerived().TraverseWebAssemblyImportModuleAttr(cast<WebAssemblyImportModuleAttr>(A));
6749     case attr::WebAssemblyImportName:
6750       return getDerived().TraverseWebAssemblyImportNameAttr(cast<WebAssemblyImportNameAttr>(A));
6751     case attr::WorkGroupSizeHint:
6752       return getDerived().TraverseWorkGroupSizeHintAttr(cast<WorkGroupSizeHintAttr>(A));
6753     case attr::X86ForceAlignArgPointer:
6754       return getDerived().TraverseX86ForceAlignArgPointerAttr(cast<X86ForceAlignArgPointerAttr>(A));
6755     case attr::XRayInstrument:
6756       return getDerived().TraverseXRayInstrumentAttr(cast<XRayInstrumentAttr>(A));
6757     case attr::XRayLogArgs:
6758       return getDerived().TraverseXRayLogArgsAttr(cast<XRayLogArgsAttr>(A));
6759     case attr::ZeroCallUsedRegs:
6760       return getDerived().TraverseZeroCallUsedRegsAttr(cast<ZeroCallUsedRegsAttr>(A));
6761   }
6762   llvm_unreachable("bad attribute kind");
6763 }
6764 #endif  // ATTR_VISITOR_DECLS_ONLY