Back to home page

EIC code displayed by LXR

 
 

    


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

0001 /*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
0002 |*                                                                            *|
0003 |* Attribute text node dumper                                                 *|
0004 |*                                                                            *|
0005 |* Automatically generated file, do not edit!                                 *|
0006 |* From: Attr.td                                                              *|
0007 |*                                                                            *|
0008 \*===----------------------------------------------------------------------===*/
0009 
0010   void VisitAMDGPUNumSGPRAttr(const AMDGPUNumSGPRAttr *A) {
0011     const auto *SA = cast<AMDGPUNumSGPRAttr>(A); (void)SA;
0012     OS << " " << SA->getNumSGPR();
0013   }
0014   void VisitAMDGPUNumVGPRAttr(const AMDGPUNumVGPRAttr *A) {
0015     const auto *SA = cast<AMDGPUNumVGPRAttr>(A); (void)SA;
0016     OS << " " << SA->getNumVGPR();
0017   }
0018   void VisitARMInterruptAttr(const ARMInterruptAttr *A) {
0019     const auto *SA = cast<ARMInterruptAttr>(A); (void)SA;
0020     switch(SA->getInterrupt()) {
0021     case ARMInterruptAttr::InterruptType::IRQ:
0022       OS << " IRQ";
0023       break;
0024     case ARMInterruptAttr::InterruptType::FIQ:
0025       OS << " FIQ";
0026       break;
0027     case ARMInterruptAttr::InterruptType::SWI:
0028       OS << " SWI";
0029       break;
0030     case ARMInterruptAttr::InterruptType::ABORT:
0031       OS << " ABORT";
0032       break;
0033     case ARMInterruptAttr::InterruptType::UNDEF:
0034       OS << " UNDEF";
0035       break;
0036     case ARMInterruptAttr::InterruptType::Generic:
0037       OS << " Generic";
0038       break;
0039     }
0040   }
0041   void VisitAbiTagAttr(const AbiTagAttr *A) {
0042     const auto *SA = cast<AbiTagAttr>(A); (void)SA;
0043     for (const auto &Val : SA->tags())
0044       OS << " " << Val;
0045   }
0046   void VisitAcquireCapabilityAttr(const AcquireCapabilityAttr *A) {
0047     const auto *SA = cast<AcquireCapabilityAttr>(A); (void)SA;
0048     OS << " " << A->getSpelling();
0049   }
0050   void VisitAcquireHandleAttr(const AcquireHandleAttr *A) {
0051     const auto *SA = cast<AcquireHandleAttr>(A); (void)SA;
0052     OS << " \"" << SA->getHandleType() << "\"";
0053   }
0054   void VisitAddressSpaceAttr(const AddressSpaceAttr *A) {
0055     const auto *SA = cast<AddressSpaceAttr>(A); (void)SA;
0056     OS << " " << SA->getAddressSpace();
0057   }
0058   void VisitAliasAttr(const AliasAttr *A) {
0059     const auto *SA = cast<AliasAttr>(A); (void)SA;
0060     OS << " \"" << SA->getAliasee() << "\"";
0061   }
0062   void VisitAlignedAttr(const AlignedAttr *A) {
0063     const auto *SA = cast<AlignedAttr>(A); (void)SA;
0064     OS << " " << A->getSpelling();
0065     if (!SA->isAlignmentExpr())
0066       dumpType(SA->getAlignmentType()->getType());
0067   }
0068   void VisitAllocAlignAttr(const AllocAlignAttr *A) {
0069     const auto *SA = cast<AllocAlignAttr>(A); (void)SA;
0070     OS << " " << SA->getParamIndex().getSourceIndex();
0071   }
0072   void VisitAllocSizeAttr(const AllocSizeAttr *A) {
0073     const auto *SA = cast<AllocSizeAttr>(A); (void)SA;
0074     OS << " " << SA->getElemSizeParam().getSourceIndex();
0075     if (SA->getNumElemsParam().isValid())
0076       OS << " " << SA->getNumElemsParam().getSourceIndex();
0077   }
0078   void VisitAlwaysInlineAttr(const AlwaysInlineAttr *A) {
0079     OS << " " << A->getSpelling();
0080   }
0081   void VisitAnnotateAttr(const AnnotateAttr *A) {
0082     const auto *SA = cast<AnnotateAttr>(A); (void)SA;
0083     OS << " \"" << SA->getAnnotation() << "\"";
0084   }
0085   void VisitAnnotateTypeAttr(const AnnotateTypeAttr *A) {
0086     const auto *SA = cast<AnnotateTypeAttr>(A); (void)SA;
0087     OS << " \"" << SA->getAnnotation() << "\"";
0088   }
0089   void VisitArgumentWithTypeTagAttr(const ArgumentWithTypeTagAttr *A) {
0090     const auto *SA = cast<ArgumentWithTypeTagAttr>(A); (void)SA;
0091     OS << " " << A->getSpelling();
0092     if (SA->getArgumentKind())
0093       OS << " " << SA->getArgumentKind()->getName();
0094     OS << " " << SA->getArgumentIdx().getSourceIndex();
0095     OS << " " << SA->getTypeTagIdx().getSourceIndex();
0096     if (SA->getIsPointer()) OS << " IsPointer";
0097   }
0098   void VisitArmAgnosticAttr(const ArmAgnosticAttr *A) {
0099     const auto *SA = cast<ArmAgnosticAttr>(A); (void)SA;
0100     for (const auto &Val : SA->agnosticArgs())
0101       OS << " " << Val;
0102   }
0103   void VisitArmBuiltinAliasAttr(const ArmBuiltinAliasAttr *A) {
0104     const auto *SA = cast<ArmBuiltinAliasAttr>(A); (void)SA;
0105     if (SA->getBuiltinName())
0106       OS << " " << SA->getBuiltinName()->getName();
0107   }
0108   void VisitArmInAttr(const ArmInAttr *A) {
0109     const auto *SA = cast<ArmInAttr>(A); (void)SA;
0110     for (const auto &Val : SA->inArgs())
0111       OS << " " << Val;
0112   }
0113   void VisitArmInOutAttr(const ArmInOutAttr *A) {
0114     const auto *SA = cast<ArmInOutAttr>(A); (void)SA;
0115     for (const auto &Val : SA->inOutArgs())
0116       OS << " " << Val;
0117   }
0118   void VisitArmNewAttr(const ArmNewAttr *A) {
0119     const auto *SA = cast<ArmNewAttr>(A); (void)SA;
0120     for (const auto &Val : SA->newArgs())
0121       OS << " " << Val;
0122   }
0123   void VisitArmOutAttr(const ArmOutAttr *A) {
0124     const auto *SA = cast<ArmOutAttr>(A); (void)SA;
0125     for (const auto &Val : SA->outArgs())
0126       OS << " " << Val;
0127   }
0128   void VisitArmPreservesAttr(const ArmPreservesAttr *A) {
0129     const auto *SA = cast<ArmPreservesAttr>(A); (void)SA;
0130     for (const auto &Val : SA->preserveArgs())
0131       OS << " " << Val;
0132   }
0133   void VisitAsmLabelAttr(const AsmLabelAttr *A) {
0134     const auto *SA = cast<AsmLabelAttr>(A); (void)SA;
0135     OS << " \"" << SA->getLabel() << "\"";
0136     if (SA->getIsLiteralLabel()) OS << " IsLiteralLabel";
0137   }
0138   void VisitAssertCapabilityAttr(const AssertCapabilityAttr *A) {
0139     const auto *SA = cast<AssertCapabilityAttr>(A); (void)SA;
0140     OS << " " << A->getSpelling();
0141   }
0142   void VisitAvailabilityAttr(const AvailabilityAttr *A) {
0143     const auto *SA = cast<AvailabilityAttr>(A); (void)SA;
0144     if (SA->getPlatform())
0145       OS << " " << SA->getPlatform()->getName();
0146     OS << " " << SA->getIntroduced();
0147     OS << " " << SA->getDeprecated();
0148     OS << " " << SA->getObsoleted();
0149     if (SA->getUnavailable()) OS << " Unavailable";
0150     OS << " \"" << SA->getMessage() << "\"";
0151     if (SA->getStrict()) OS << " Strict";
0152     OS << " \"" << SA->getReplacement() << "\"";
0153     OS << " " << SA->getPriority();
0154     if (SA->getEnvironment())
0155       OS << " " << SA->getEnvironment()->getName();
0156   }
0157   void VisitBTFDeclTagAttr(const BTFDeclTagAttr *A) {
0158     const auto *SA = cast<BTFDeclTagAttr>(A); (void)SA;
0159     OS << " \"" << SA->getBTFDeclTag() << "\"";
0160   }
0161   void VisitBTFTypeTagAttr(const BTFTypeTagAttr *A) {
0162     const auto *SA = cast<BTFTypeTagAttr>(A); (void)SA;
0163     OS << " \"" << SA->getBTFTypeTag() << "\"";
0164   }
0165   void VisitBlocksAttr(const BlocksAttr *A) {
0166     const auto *SA = cast<BlocksAttr>(A); (void)SA;
0167     switch(SA->getType()) {
0168     case BlocksAttr::BlockType::ByRef:
0169       OS << " ByRef";
0170       break;
0171     }
0172   }
0173   void VisitBuiltinAttr(const BuiltinAttr *A) {
0174     const auto *SA = cast<BuiltinAttr>(A); (void)SA;
0175     OS << " " << SA->getID();
0176   }
0177   void VisitBuiltinAliasAttr(const BuiltinAliasAttr *A) {
0178     const auto *SA = cast<BuiltinAliasAttr>(A); (void)SA;
0179     OS << " " << A->getSpelling();
0180     if (SA->getBuiltinName())
0181       OS << " " << SA->getBuiltinName()->getName();
0182   }
0183   void VisitCFGuardAttr(const CFGuardAttr *A) {
0184     const auto *SA = cast<CFGuardAttr>(A); (void)SA;
0185     switch(SA->getGuard()) {
0186     case CFGuardAttr::GuardArg::nocf:
0187       OS << " nocf";
0188       break;
0189     }
0190   }
0191   void VisitCPUDispatchAttr(const CPUDispatchAttr *A) {
0192     const auto *SA = cast<CPUDispatchAttr>(A); (void)SA;
0193     for (const auto &Val : SA->cpus())
0194       OS << " " << Val;
0195   }
0196   void VisitCPUSpecificAttr(const CPUSpecificAttr *A) {
0197     const auto *SA = cast<CPUSpecificAttr>(A); (void)SA;
0198     for (const auto &Val : SA->cpus())
0199       OS << " " << Val;
0200   }
0201   void VisitCXX11NoReturnAttr(const CXX11NoReturnAttr *A) {
0202     OS << " " << A->getSpelling();
0203   }
0204   void VisitCallableWhenAttr(const CallableWhenAttr *A) {
0205     const auto *SA = cast<CallableWhenAttr>(A); (void)SA;
0206     for (CallableWhenAttr::callableStates_iterator I = SA->callableStates_begin(), E = SA->callableStates_end(); I != E; ++I) {
0207       switch(*I) {
0208     case CallableWhenAttr::ConsumedState::Unknown:
0209       OS << " Unknown";
0210       break;
0211     case CallableWhenAttr::ConsumedState::Consumed:
0212       OS << " Consumed";
0213       break;
0214     case CallableWhenAttr::ConsumedState::Unconsumed:
0215       OS << " Unconsumed";
0216       break;
0217       }
0218     }
0219   }
0220   void VisitCallbackAttr(const CallbackAttr *A) {
0221     const auto *SA = cast<CallbackAttr>(A); (void)SA;
0222     for (const auto &Val : SA->encoding())
0223       OS << " " << Val;
0224   }
0225   void VisitCapabilityAttr(const CapabilityAttr *A) {
0226     const auto *SA = cast<CapabilityAttr>(A); (void)SA;
0227     OS << " " << A->getSpelling();
0228     OS << " \"" << SA->getName() << "\"";
0229   }
0230   void VisitCleanupAttr(const CleanupAttr *A) {
0231     const auto *SA = cast<CleanupAttr>(A); (void)SA;
0232     OS << " ";
0233     dumpBareDeclRef(SA->getFunctionDecl());
0234   }
0235   void VisitCodeModelAttr(const CodeModelAttr *A) {
0236     const auto *SA = cast<CodeModelAttr>(A); (void)SA;
0237     switch(SA->getModel()) {
0238     case llvm::CodeModel::Model::Small:
0239       OS << " Small";
0240       break;
0241     case llvm::CodeModel::Model::Medium:
0242       OS << " Medium";
0243       break;
0244     case llvm::CodeModel::Model::Large:
0245       OS << " Large";
0246       break;
0247     default:
0248       llvm_unreachable("Invalid attribute value");
0249     }
0250   }
0251   void VisitCodeSegAttr(const CodeSegAttr *A) {
0252     const auto *SA = cast<CodeSegAttr>(A); (void)SA;
0253     OS << " \"" << SA->getName() << "\"";
0254   }
0255   void VisitConstInitAttr(const ConstInitAttr *A) {
0256     OS << " " << A->getSpelling();
0257   }
0258   void VisitConstructorAttr(const ConstructorAttr *A) {
0259     const auto *SA = cast<ConstructorAttr>(A); (void)SA;
0260     OS << " " << SA->getPriority();
0261   }
0262   void VisitConsumableAttr(const ConsumableAttr *A) {
0263     const auto *SA = cast<ConsumableAttr>(A); (void)SA;
0264     switch(SA->getDefaultState()) {
0265     case ConsumableAttr::ConsumedState::Unknown:
0266       OS << " Unknown";
0267       break;
0268     case ConsumableAttr::ConsumedState::Consumed:
0269       OS << " Consumed";
0270       break;
0271     case ConsumableAttr::ConsumedState::Unconsumed:
0272       OS << " Unconsumed";
0273       break;
0274     }
0275   }
0276   void VisitCountedByAttr(const CountedByAttr *A) {
0277     const auto *SA = cast<CountedByAttr>(A); (void)SA;
0278     OS << " " << SA->getNestedLevel();
0279   }
0280   void VisitCountedByOrNullAttr(const CountedByOrNullAttr *A) {
0281     const auto *SA = cast<CountedByOrNullAttr>(A); (void)SA;
0282     OS << " " << SA->getNestedLevel();
0283   }
0284   void VisitDeprecatedAttr(const DeprecatedAttr *A) {
0285     const auto *SA = cast<DeprecatedAttr>(A); (void)SA;
0286     OS << " \"" << SA->getMessage() << "\"";
0287     OS << " \"" << SA->getReplacement() << "\"";
0288   }
0289   void VisitDestructorAttr(const DestructorAttr *A) {
0290     const auto *SA = cast<DestructorAttr>(A); (void)SA;
0291     OS << " " << SA->getPriority();
0292   }
0293   void VisitDiagnoseAsBuiltinAttr(const DiagnoseAsBuiltinAttr *A) {
0294     const auto *SA = cast<DiagnoseAsBuiltinAttr>(A); (void)SA;
0295     OS << " ";
0296     dumpBareDeclRef(SA->getFunction());
0297     for (const auto &Val : SA->argIndices())
0298       OS << " " << Val;
0299   }
0300   void VisitDiagnoseIfAttr(const DiagnoseIfAttr *A) {
0301     const auto *SA = cast<DiagnoseIfAttr>(A); (void)SA;
0302     OS << " \"" << SA->getMessage() << "\"";
0303     switch(SA->getDefaultSeverity()) {
0304     case DiagnoseIfAttr::DefaultSeverity::DS_error:
0305       OS << " DS_error";
0306       break;
0307     case DiagnoseIfAttr::DefaultSeverity::DS_warning:
0308       OS << " DS_warning";
0309       break;
0310     }
0311     OS << " \"" << SA->getWarningGroup() << "\"";
0312     if (SA->getArgDependent()) OS << " ArgDependent";
0313     OS << " ";
0314     dumpBareDeclRef(SA->getParent());
0315   }
0316   void VisitEnableIfAttr(const EnableIfAttr *A) {
0317     const auto *SA = cast<EnableIfAttr>(A); (void)SA;
0318     OS << " \"" << SA->getMessage() << "\"";
0319   }
0320   void VisitEnforceTCBAttr(const EnforceTCBAttr *A) {
0321     const auto *SA = cast<EnforceTCBAttr>(A); (void)SA;
0322     OS << " \"" << SA->getTCBName() << "\"";
0323   }
0324   void VisitEnforceTCBLeafAttr(const EnforceTCBLeafAttr *A) {
0325     const auto *SA = cast<EnforceTCBLeafAttr>(A); (void)SA;
0326     OS << " \"" << SA->getTCBName() << "\"";
0327   }
0328   void VisitEnumExtensibilityAttr(const EnumExtensibilityAttr *A) {
0329     const auto *SA = cast<EnumExtensibilityAttr>(A); (void)SA;
0330     switch(SA->getExtensibility()) {
0331     case EnumExtensibilityAttr::Kind::Closed:
0332       OS << " Closed";
0333       break;
0334     case EnumExtensibilityAttr::Kind::Open:
0335       OS << " Open";
0336       break;
0337     }
0338   }
0339   void VisitErrorAttr(const ErrorAttr *A) {
0340     const auto *SA = cast<ErrorAttr>(A); (void)SA;
0341     OS << " " << A->getSpelling();
0342     OS << " \"" << SA->getUserDiagnostic() << "\"";
0343   }
0344   void VisitExternalSourceSymbolAttr(const ExternalSourceSymbolAttr *A) {
0345     const auto *SA = cast<ExternalSourceSymbolAttr>(A); (void)SA;
0346     OS << " \"" << SA->getLanguage() << "\"";
0347     OS << " \"" << SA->getDefinedIn() << "\"";
0348     if (SA->getGeneratedDeclaration()) OS << " GeneratedDeclaration";
0349     OS << " \"" << SA->getUSR() << "\"";
0350   }
0351   void VisitFinalAttr(const FinalAttr *A) {
0352     OS << " " << A->getSpelling();
0353   }
0354   void VisitFormatAttr(const FormatAttr *A) {
0355     const auto *SA = cast<FormatAttr>(A); (void)SA;
0356     if (SA->getType())
0357       OS << " " << SA->getType()->getName();
0358     OS << " " << SA->getFormatIdx();
0359     OS << " " << SA->getFirstArg();
0360   }
0361   void VisitFormatArgAttr(const FormatArgAttr *A) {
0362     const auto *SA = cast<FormatArgAttr>(A); (void)SA;
0363     OS << " " << SA->getFormatIdx().getSourceIndex();
0364   }
0365   void VisitFunctionReturnThunksAttr(const FunctionReturnThunksAttr *A) {
0366     const auto *SA = cast<FunctionReturnThunksAttr>(A); (void)SA;
0367     switch(SA->getThunkType()) {
0368     case FunctionReturnThunksAttr::Kind::Keep:
0369       OS << " Keep";
0370       break;
0371     case FunctionReturnThunksAttr::Kind::Extern:
0372       OS << " Extern";
0373       break;
0374     }
0375   }
0376   void VisitHLSLContainedTypeAttr(const HLSLContainedTypeAttr *A) {
0377     const auto *SA = cast<HLSLContainedTypeAttr>(A); (void)SA;
0378     OS << " " << SA->getType().getAsString();
0379   }
0380   void VisitHLSLControlFlowHintAttr(const HLSLControlFlowHintAttr *A) {
0381     OS << " " << A->getSpelling();
0382   }
0383   void VisitHLSLLoopHintAttr(const HLSLLoopHintAttr *A) {
0384     const auto *SA = cast<HLSLLoopHintAttr>(A); (void)SA;
0385     OS << " " << A->getSpelling();
0386     OS << " " << SA->getDirective();
0387   }
0388   void VisitHLSLNumThreadsAttr(const HLSLNumThreadsAttr *A) {
0389     const auto *SA = cast<HLSLNumThreadsAttr>(A); (void)SA;
0390     OS << " " << SA->getX();
0391     OS << " " << SA->getY();
0392     OS << " " << SA->getZ();
0393   }
0394   void VisitHLSLPackOffsetAttr(const HLSLPackOffsetAttr *A) {
0395     const auto *SA = cast<HLSLPackOffsetAttr>(A); (void)SA;
0396     OS << " " << SA->getSubcomponent();
0397     OS << " " << SA->getComponent();
0398   }
0399   void VisitHLSLParamModifierAttr(const HLSLParamModifierAttr *A) {
0400     const auto *SA = cast<HLSLParamModifierAttr>(A); (void)SA;
0401     OS << " " << A->getSpelling();
0402     if (SA->getMergedSpelling()) OS << " MergedSpelling";
0403   }
0404   void VisitHLSLResourceAttr(const HLSLResourceAttr *A) {
0405     const auto *SA = cast<HLSLResourceAttr>(A); (void)SA;
0406     switch(SA->getResourceKind()) {
0407     case llvm::hlsl::ResourceKind::Texture1D:
0408       OS << " Texture1D";
0409       break;
0410     case llvm::hlsl::ResourceKind::Texture2D:
0411       OS << " Texture2D";
0412       break;
0413     case llvm::hlsl::ResourceKind::Texture2DMS:
0414       OS << " Texture2DMS";
0415       break;
0416     case llvm::hlsl::ResourceKind::Texture3D:
0417       OS << " Texture3D";
0418       break;
0419     case llvm::hlsl::ResourceKind::TextureCube:
0420       OS << " TextureCube";
0421       break;
0422     case llvm::hlsl::ResourceKind::Texture1DArray:
0423       OS << " Texture1DArray";
0424       break;
0425     case llvm::hlsl::ResourceKind::Texture2DArray:
0426       OS << " Texture2DArray";
0427       break;
0428     case llvm::hlsl::ResourceKind::Texture2DMSArray:
0429       OS << " Texture2DMSArray";
0430       break;
0431     case llvm::hlsl::ResourceKind::TextureCubeArray:
0432       OS << " TextureCubeArray";
0433       break;
0434     case llvm::hlsl::ResourceKind::TypedBuffer:
0435       OS << " TypedBuffer";
0436       break;
0437     case llvm::hlsl::ResourceKind::RawBuffer:
0438       OS << " RawBuffer";
0439       break;
0440     case llvm::hlsl::ResourceKind::StructuredBuffer:
0441       OS << " StructuredBuffer";
0442       break;
0443     case llvm::hlsl::ResourceKind::CBuffer:
0444       OS << " CBuffer";
0445       break;
0446     case llvm::hlsl::ResourceKind::Sampler:
0447       OS << " Sampler";
0448       break;
0449     case llvm::hlsl::ResourceKind::TBuffer:
0450       OS << " TBuffer";
0451       break;
0452     case llvm::hlsl::ResourceKind::RTAccelerationStructure:
0453       OS << " RTAccelerationStructure";
0454       break;
0455     case llvm::hlsl::ResourceKind::FeedbackTexture2D:
0456       OS << " FeedbackTexture2D";
0457       break;
0458     case llvm::hlsl::ResourceKind::FeedbackTexture2DArray:
0459       OS << " FeedbackTexture2DArray";
0460       break;
0461     default:
0462       llvm_unreachable("Invalid attribute value");
0463     }
0464   }
0465   void VisitHLSLResourceBindingAttr(const HLSLResourceBindingAttr *A) {
0466     const auto *SA = cast<HLSLResourceBindingAttr>(A); (void)SA;
0467     OS << " \"" << SA->getSlot() << "\"";
0468     OS << " \"" << SA->getSpace() << "\"";
0469   }
0470   void VisitHLSLResourceClassAttr(const HLSLResourceClassAttr *A) {
0471     const auto *SA = cast<HLSLResourceClassAttr>(A); (void)SA;
0472     switch(SA->getResourceClass()) {
0473     case llvm::hlsl::ResourceClass::SRV:
0474       OS << " SRV";
0475       break;
0476     case llvm::hlsl::ResourceClass::UAV:
0477       OS << " UAV";
0478       break;
0479     case llvm::hlsl::ResourceClass::CBuffer:
0480       OS << " CBuffer";
0481       break;
0482     case llvm::hlsl::ResourceClass::Sampler:
0483       OS << " Sampler";
0484       break;
0485     }
0486   }
0487   void VisitHLSLShaderAttr(const HLSLShaderAttr *A) {
0488     const auto *SA = cast<HLSLShaderAttr>(A); (void)SA;
0489     switch(SA->getType()) {
0490     case llvm::Triple::EnvironmentType::Pixel:
0491       OS << " Pixel";
0492       break;
0493     case llvm::Triple::EnvironmentType::Vertex:
0494       OS << " Vertex";
0495       break;
0496     case llvm::Triple::EnvironmentType::Geometry:
0497       OS << " Geometry";
0498       break;
0499     case llvm::Triple::EnvironmentType::Hull:
0500       OS << " Hull";
0501       break;
0502     case llvm::Triple::EnvironmentType::Domain:
0503       OS << " Domain";
0504       break;
0505     case llvm::Triple::EnvironmentType::Compute:
0506       OS << " Compute";
0507       break;
0508     case llvm::Triple::EnvironmentType::RayGeneration:
0509       OS << " RayGeneration";
0510       break;
0511     case llvm::Triple::EnvironmentType::Intersection:
0512       OS << " Intersection";
0513       break;
0514     case llvm::Triple::EnvironmentType::AnyHit:
0515       OS << " AnyHit";
0516       break;
0517     case llvm::Triple::EnvironmentType::ClosestHit:
0518       OS << " ClosestHit";
0519       break;
0520     case llvm::Triple::EnvironmentType::Miss:
0521       OS << " Miss";
0522       break;
0523     case llvm::Triple::EnvironmentType::Callable:
0524       OS << " Callable";
0525       break;
0526     case llvm::Triple::EnvironmentType::Mesh:
0527       OS << " Mesh";
0528       break;
0529     case llvm::Triple::EnvironmentType::Amplification:
0530       OS << " Amplification";
0531       break;
0532     default:
0533       llvm_unreachable("Invalid attribute value");
0534     }
0535   }
0536   void VisitHLSLWaveSizeAttr(const HLSLWaveSizeAttr *A) {
0537     const auto *SA = cast<HLSLWaveSizeAttr>(A); (void)SA;
0538     OS << " " << SA->getMin();
0539     OS << " " << SA->getMax();
0540     OS << " " << SA->getPreferred();
0541   }
0542   void VisitIBOutletCollectionAttr(const IBOutletCollectionAttr *A) {
0543     const auto *SA = cast<IBOutletCollectionAttr>(A); (void)SA;
0544     if (SA->getInterfaceLoc())    OS << " " << SA->getInterface().getAsString();
0545   }
0546   void VisitIFuncAttr(const IFuncAttr *A) {
0547     const auto *SA = cast<IFuncAttr>(A); (void)SA;
0548     OS << " \"" << SA->getResolver() << "\"";
0549   }
0550   void VisitInitPriorityAttr(const InitPriorityAttr *A) {
0551     const auto *SA = cast<InitPriorityAttr>(A); (void)SA;
0552     OS << " " << SA->getPriority();
0553   }
0554   void VisitInitSegAttr(const InitSegAttr *A) {
0555     const auto *SA = cast<InitSegAttr>(A); (void)SA;
0556     OS << " \"" << SA->getSection() << "\"";
0557   }
0558   void VisitLayoutVersionAttr(const LayoutVersionAttr *A) {
0559     const auto *SA = cast<LayoutVersionAttr>(A); (void)SA;
0560     OS << " " << SA->getVersion();
0561   }
0562   void VisitLifetimeCaptureByAttr(const LifetimeCaptureByAttr *A) {
0563     const auto *SA = cast<LifetimeCaptureByAttr>(A); (void)SA;
0564     for (const auto &Val : SA->params())
0565       OS << " " << Val;
0566   }
0567   void VisitLoopHintAttr(const LoopHintAttr *A) {
0568     const auto *SA = cast<LoopHintAttr>(A); (void)SA;
0569     OS << " " << A->getSpelling();
0570     switch(SA->getOption()) {
0571     case LoopHintAttr::OptionType::Vectorize:
0572       OS << " Vectorize";
0573       break;
0574     case LoopHintAttr::OptionType::VectorizeWidth:
0575       OS << " VectorizeWidth";
0576       break;
0577     case LoopHintAttr::OptionType::Interleave:
0578       OS << " Interleave";
0579       break;
0580     case LoopHintAttr::OptionType::InterleaveCount:
0581       OS << " InterleaveCount";
0582       break;
0583     case LoopHintAttr::OptionType::Unroll:
0584       OS << " Unroll";
0585       break;
0586     case LoopHintAttr::OptionType::UnrollCount:
0587       OS << " UnrollCount";
0588       break;
0589     case LoopHintAttr::OptionType::UnrollAndJam:
0590       OS << " UnrollAndJam";
0591       break;
0592     case LoopHintAttr::OptionType::UnrollAndJamCount:
0593       OS << " UnrollAndJamCount";
0594       break;
0595     case LoopHintAttr::OptionType::PipelineDisabled:
0596       OS << " PipelineDisabled";
0597       break;
0598     case LoopHintAttr::OptionType::PipelineInitiationInterval:
0599       OS << " PipelineInitiationInterval";
0600       break;
0601     case LoopHintAttr::OptionType::Distribute:
0602       OS << " Distribute";
0603       break;
0604     case LoopHintAttr::OptionType::VectorizePredicate:
0605       OS << " VectorizePredicate";
0606       break;
0607     }
0608     switch(SA->getState()) {
0609     case LoopHintAttr::LoopHintState::Enable:
0610       OS << " Enable";
0611       break;
0612     case LoopHintAttr::LoopHintState::Disable:
0613       OS << " Disable";
0614       break;
0615     case LoopHintAttr::LoopHintState::Numeric:
0616       OS << " Numeric";
0617       break;
0618     case LoopHintAttr::LoopHintState::FixedWidth:
0619       OS << " FixedWidth";
0620       break;
0621     case LoopHintAttr::LoopHintState::ScalableWidth:
0622       OS << " ScalableWidth";
0623       break;
0624     case LoopHintAttr::LoopHintState::AssumeSafety:
0625       OS << " AssumeSafety";
0626       break;
0627     case LoopHintAttr::LoopHintState::Full:
0628       OS << " Full";
0629       break;
0630     }
0631   }
0632   void VisitM68kInterruptAttr(const M68kInterruptAttr *A) {
0633     const auto *SA = cast<M68kInterruptAttr>(A); (void)SA;
0634     OS << " " << SA->getNumber();
0635   }
0636   void VisitMSInheritanceAttr(const MSInheritanceAttr *A) {
0637     const auto *SA = cast<MSInheritanceAttr>(A); (void)SA;
0638     OS << " " << A->getSpelling();
0639     if (SA->getBestCase()) OS << " BestCase";
0640   }
0641   void VisitMSP430InterruptAttr(const MSP430InterruptAttr *A) {
0642     const auto *SA = cast<MSP430InterruptAttr>(A); (void)SA;
0643     OS << " " << SA->getNumber();
0644   }
0645   void VisitMSVtorDispAttr(const MSVtorDispAttr *A) {
0646     const auto *SA = cast<MSVtorDispAttr>(A); (void)SA;
0647     OS << " " << SA->getVdm();
0648   }
0649   void VisitMaxFieldAlignmentAttr(const MaxFieldAlignmentAttr *A) {
0650     const auto *SA = cast<MaxFieldAlignmentAttr>(A); (void)SA;
0651     OS << " " << SA->getAlignment();
0652   }
0653   void VisitMinVectorWidthAttr(const MinVectorWidthAttr *A) {
0654     const auto *SA = cast<MinVectorWidthAttr>(A); (void)SA;
0655     OS << " " << SA->getVectorWidth();
0656   }
0657   void VisitMipsInterruptAttr(const MipsInterruptAttr *A) {
0658     const auto *SA = cast<MipsInterruptAttr>(A); (void)SA;
0659     switch(SA->getInterrupt()) {
0660     case MipsInterruptAttr::InterruptType::sw0:
0661       OS << " sw0";
0662       break;
0663     case MipsInterruptAttr::InterruptType::sw1:
0664       OS << " sw1";
0665       break;
0666     case MipsInterruptAttr::InterruptType::hw0:
0667       OS << " hw0";
0668       break;
0669     case MipsInterruptAttr::InterruptType::hw1:
0670       OS << " hw1";
0671       break;
0672     case MipsInterruptAttr::InterruptType::hw2:
0673       OS << " hw2";
0674       break;
0675     case MipsInterruptAttr::InterruptType::hw3:
0676       OS << " hw3";
0677       break;
0678     case MipsInterruptAttr::InterruptType::hw4:
0679       OS << " hw4";
0680       break;
0681     case MipsInterruptAttr::InterruptType::hw5:
0682       OS << " hw5";
0683       break;
0684     case MipsInterruptAttr::InterruptType::eic:
0685       OS << " eic";
0686       break;
0687     }
0688   }
0689   void VisitMipsLongCallAttr(const MipsLongCallAttr *A) {
0690     OS << " " << A->getSpelling();
0691   }
0692   void VisitMipsShortCallAttr(const MipsShortCallAttr *A) {
0693     OS << " " << A->getSpelling();
0694   }
0695   void VisitModeAttr(const ModeAttr *A) {
0696     const auto *SA = cast<ModeAttr>(A); (void)SA;
0697     if (SA->getMode())
0698       OS << " " << SA->getMode()->getName();
0699   }
0700   void VisitNSErrorDomainAttr(const NSErrorDomainAttr *A) {
0701     const auto *SA = cast<NSErrorDomainAttr>(A); (void)SA;
0702     if (SA->getErrorDomain())
0703       OS << " " << SA->getErrorDomain()->getName();
0704   }
0705   void VisitNoBuiltinAttr(const NoBuiltinAttr *A) {
0706     const auto *SA = cast<NoBuiltinAttr>(A); (void)SA;
0707     for (const auto &Val : SA->builtinNames())
0708       OS << " " << Val;
0709   }
0710   void VisitNoSanitizeAttr(const NoSanitizeAttr *A) {
0711     const auto *SA = cast<NoSanitizeAttr>(A); (void)SA;
0712     for (const auto &Val : SA->sanitizers())
0713       OS << " " << Val;
0714   }
0715   void VisitNoSpecializationsAttr(const NoSpecializationsAttr *A) {
0716     const auto *SA = cast<NoSpecializationsAttr>(A); (void)SA;
0717     OS << " \"" << SA->getMessage() << "\"";
0718   }
0719   void VisitNoStackProtectorAttr(const NoStackProtectorAttr *A) {
0720     OS << " " << A->getSpelling();
0721   }
0722   void VisitNonNullAttr(const NonNullAttr *A) {
0723     const auto *SA = cast<NonNullAttr>(A); (void)SA;
0724     for (const auto &Val : SA->args())
0725       OS << " " << Val.getSourceIndex();
0726   }
0727   void VisitOMPAllocateDeclAttr(const OMPAllocateDeclAttr *A) {
0728     const auto *SA = cast<OMPAllocateDeclAttr>(A); (void)SA;
0729     switch(SA->getAllocatorType()) {
0730     case OMPAllocateDeclAttr::AllocatorTypeTy::OMPNullMemAlloc:
0731       OS << " OMPNullMemAlloc";
0732       break;
0733     case OMPAllocateDeclAttr::AllocatorTypeTy::OMPDefaultMemAlloc:
0734       OS << " OMPDefaultMemAlloc";
0735       break;
0736     case OMPAllocateDeclAttr::AllocatorTypeTy::OMPLargeCapMemAlloc:
0737       OS << " OMPLargeCapMemAlloc";
0738       break;
0739     case OMPAllocateDeclAttr::AllocatorTypeTy::OMPConstMemAlloc:
0740       OS << " OMPConstMemAlloc";
0741       break;
0742     case OMPAllocateDeclAttr::AllocatorTypeTy::OMPHighBWMemAlloc:
0743       OS << " OMPHighBWMemAlloc";
0744       break;
0745     case OMPAllocateDeclAttr::AllocatorTypeTy::OMPLowLatMemAlloc:
0746       OS << " OMPLowLatMemAlloc";
0747       break;
0748     case OMPAllocateDeclAttr::AllocatorTypeTy::OMPCGroupMemAlloc:
0749       OS << " OMPCGroupMemAlloc";
0750       break;
0751     case OMPAllocateDeclAttr::AllocatorTypeTy::OMPPTeamMemAlloc:
0752       OS << " OMPPTeamMemAlloc";
0753       break;
0754     case OMPAllocateDeclAttr::AllocatorTypeTy::OMPThreadMemAlloc:
0755       OS << " OMPThreadMemAlloc";
0756       break;
0757     case OMPAllocateDeclAttr::AllocatorTypeTy::OMPUserDefinedMemAlloc:
0758       OS << " OMPUserDefinedMemAlloc";
0759       break;
0760     }
0761   }
0762   void VisitOMPAssumeAttr(const OMPAssumeAttr *A) {
0763     const auto *SA = cast<OMPAssumeAttr>(A); (void)SA;
0764     OS << " \"" << SA->getAssumption() << "\"";
0765   }
0766   void VisitOMPCaptureKindAttr(const OMPCaptureKindAttr *A) {
0767     const auto *SA = cast<OMPCaptureKindAttr>(A); (void)SA;
0768     OS << " " << SA->getCaptureKindVal();
0769   }
0770   void VisitOMPDeclareSimdDeclAttr(const OMPDeclareSimdDeclAttr *A) {
0771     const auto *SA = cast<OMPDeclareSimdDeclAttr>(A); (void)SA;
0772     switch(SA->getBranchState()) {
0773     case OMPDeclareSimdDeclAttr::BranchStateTy::BS_Undefined:
0774       OS << " BS_Undefined";
0775       break;
0776     case OMPDeclareSimdDeclAttr::BranchStateTy::BS_Inbranch:
0777       OS << " BS_Inbranch";
0778       break;
0779     case OMPDeclareSimdDeclAttr::BranchStateTy::BS_Notinbranch:
0780       OS << " BS_Notinbranch";
0781       break;
0782     }
0783     for (const auto &Val : SA->modifiers())
0784       OS << " " << Val;
0785   }
0786   void VisitOMPDeclareTargetDeclAttr(const OMPDeclareTargetDeclAttr *A) {
0787     const auto *SA = cast<OMPDeclareTargetDeclAttr>(A); (void)SA;
0788     switch(SA->getMapType()) {
0789     case OMPDeclareTargetDeclAttr::MapTypeTy::MT_To:
0790       OS << " MT_To";
0791       break;
0792     case OMPDeclareTargetDeclAttr::MapTypeTy::MT_Enter:
0793       OS << " MT_Enter";
0794       break;
0795     case OMPDeclareTargetDeclAttr::MapTypeTy::MT_Link:
0796       OS << " MT_Link";
0797       break;
0798     }
0799     switch(SA->getDevType()) {
0800     case OMPDeclareTargetDeclAttr::DevTypeTy::DT_Host:
0801       OS << " DT_Host";
0802       break;
0803     case OMPDeclareTargetDeclAttr::DevTypeTy::DT_NoHost:
0804       OS << " DT_NoHost";
0805       break;
0806     case OMPDeclareTargetDeclAttr::DevTypeTy::DT_Any:
0807       OS << " DT_Any";
0808       break;
0809     }
0810     if (SA->getIndirect()) OS << " Indirect";
0811     OS << " " << SA->getLevel();
0812   }
0813   void VisitOMPDeclareVariantAttr(const OMPDeclareVariantAttr *A) {
0814     const auto *SA = cast<OMPDeclareVariantAttr>(A); (void)SA;
0815     OS << " " << SA->getTraitInfos();
0816     for (OMPDeclareVariantAttr::appendArgs_iterator I = SA->appendArgs_begin(), E = SA->appendArgs_end(); I != E; ++I) {
0817       if (I->IsTarget && I->IsTargetSync)
0818         OS << " Target_TargetSync";
0819       else if (I->IsTarget)
0820         OS << " Target";
0821       else
0822         OS << " TargetSync";
0823     }
0824   }
0825   void VisitObjCBridgeAttr(const ObjCBridgeAttr *A) {
0826     const auto *SA = cast<ObjCBridgeAttr>(A); (void)SA;
0827     if (SA->getBridgedType())
0828       OS << " " << SA->getBridgedType()->getName();
0829   }
0830   void VisitObjCBridgeMutableAttr(const ObjCBridgeMutableAttr *A) {
0831     const auto *SA = cast<ObjCBridgeMutableAttr>(A); (void)SA;
0832     if (SA->getBridgedType())
0833       OS << " " << SA->getBridgedType()->getName();
0834   }
0835   void VisitObjCBridgeRelatedAttr(const ObjCBridgeRelatedAttr *A) {
0836     const auto *SA = cast<ObjCBridgeRelatedAttr>(A); (void)SA;
0837     if (SA->getRelatedClass())
0838       OS << " " << SA->getRelatedClass()->getName();
0839     if (SA->getClassMethod())
0840       OS << " " << SA->getClassMethod()->getName();
0841     if (SA->getInstanceMethod())
0842       OS << " " << SA->getInstanceMethod()->getName();
0843   }
0844   void VisitObjCGCAttr(const ObjCGCAttr *A) {
0845     const auto *SA = cast<ObjCGCAttr>(A); (void)SA;
0846     if (SA->getKind())
0847       OS << " " << SA->getKind()->getName();
0848   }
0849   void VisitObjCMethodFamilyAttr(const ObjCMethodFamilyAttr *A) {
0850     const auto *SA = cast<ObjCMethodFamilyAttr>(A); (void)SA;
0851     switch(SA->getFamily()) {
0852     case ObjCMethodFamilyAttr::FamilyKind::OMF_None:
0853       OS << " OMF_None";
0854       break;
0855     case ObjCMethodFamilyAttr::FamilyKind::OMF_alloc:
0856       OS << " OMF_alloc";
0857       break;
0858     case ObjCMethodFamilyAttr::FamilyKind::OMF_copy:
0859       OS << " OMF_copy";
0860       break;
0861     case ObjCMethodFamilyAttr::FamilyKind::OMF_init:
0862       OS << " OMF_init";
0863       break;
0864     case ObjCMethodFamilyAttr::FamilyKind::OMF_mutableCopy:
0865       OS << " OMF_mutableCopy";
0866       break;
0867     case ObjCMethodFamilyAttr::FamilyKind::OMF_new:
0868       OS << " OMF_new";
0869       break;
0870     }
0871   }
0872   void VisitObjCOwnershipAttr(const ObjCOwnershipAttr *A) {
0873     const auto *SA = cast<ObjCOwnershipAttr>(A); (void)SA;
0874     if (SA->getKind())
0875       OS << " " << SA->getKind()->getName();
0876   }
0877   void VisitObjCRuntimeNameAttr(const ObjCRuntimeNameAttr *A) {
0878     const auto *SA = cast<ObjCRuntimeNameAttr>(A); (void)SA;
0879     OS << " \"" << SA->getMetadataName() << "\"";
0880   }
0881   void VisitOpenCLAccessAttr(const OpenCLAccessAttr *A) {
0882     OS << " " << A->getSpelling();
0883   }
0884   void VisitOpenCLConstantAddressSpaceAttr(const OpenCLConstantAddressSpaceAttr *A) {
0885     OS << " " << A->getSpelling();
0886   }
0887   void VisitOpenCLGenericAddressSpaceAttr(const OpenCLGenericAddressSpaceAttr *A) {
0888     OS << " " << A->getSpelling();
0889   }
0890   void VisitOpenCLGlobalAddressSpaceAttr(const OpenCLGlobalAddressSpaceAttr *A) {
0891     OS << " " << A->getSpelling();
0892   }
0893   void VisitOpenCLIntelReqdSubGroupSizeAttr(const OpenCLIntelReqdSubGroupSizeAttr *A) {
0894     const auto *SA = cast<OpenCLIntelReqdSubGroupSizeAttr>(A); (void)SA;
0895     OS << " " << SA->getSubGroupSize();
0896   }
0897   void VisitOpenCLLocalAddressSpaceAttr(const OpenCLLocalAddressSpaceAttr *A) {
0898     OS << " " << A->getSpelling();
0899   }
0900   void VisitOpenCLPrivateAddressSpaceAttr(const OpenCLPrivateAddressSpaceAttr *A) {
0901     OS << " " << A->getSpelling();
0902   }
0903   void VisitOpenCLUnrollHintAttr(const OpenCLUnrollHintAttr *A) {
0904     const auto *SA = cast<OpenCLUnrollHintAttr>(A); (void)SA;
0905     OS << " " << SA->getUnrollHint();
0906   }
0907   void VisitOwnerAttr(const OwnerAttr *A) {
0908     const auto *SA = cast<OwnerAttr>(A); (void)SA;
0909     if (SA->getDerefTypeLoc())    OS << " " << SA->getDerefType().getAsString();
0910   }
0911   void VisitOwnershipAttr(const OwnershipAttr *A) {
0912     const auto *SA = cast<OwnershipAttr>(A); (void)SA;
0913     OS << " " << A->getSpelling();
0914     if (SA->getModule())
0915       OS << " " << SA->getModule()->getName();
0916     for (const auto &Val : SA->args())
0917       OS << " " << Val.getSourceIndex();
0918   }
0919   void VisitParamTypestateAttr(const ParamTypestateAttr *A) {
0920     const auto *SA = cast<ParamTypestateAttr>(A); (void)SA;
0921     switch(SA->getParamState()) {
0922     case ParamTypestateAttr::ConsumedState::Unknown:
0923       OS << " Unknown";
0924       break;
0925     case ParamTypestateAttr::ConsumedState::Consumed:
0926       OS << " Consumed";
0927       break;
0928     case ParamTypestateAttr::ConsumedState::Unconsumed:
0929       OS << " Unconsumed";
0930       break;
0931     }
0932   }
0933   void VisitPassObjectSizeAttr(const PassObjectSizeAttr *A) {
0934     const auto *SA = cast<PassObjectSizeAttr>(A); (void)SA;
0935     OS << " " << A->getSpelling();
0936     OS << " " << SA->getType();
0937   }
0938   void VisitPatchableFunctionEntryAttr(const PatchableFunctionEntryAttr *A) {
0939     const auto *SA = cast<PatchableFunctionEntryAttr>(A); (void)SA;
0940     OS << " " << SA->getCount();
0941     OS << " " << SA->getOffset();
0942   }
0943   void VisitPcsAttr(const PcsAttr *A) {
0944     const auto *SA = cast<PcsAttr>(A); (void)SA;
0945     switch(SA->getPCS()) {
0946     case PcsAttr::PCSType::AAPCS:
0947       OS << " AAPCS";
0948       break;
0949     case PcsAttr::PCSType::AAPCS_VFP:
0950       OS << " AAPCS_VFP";
0951       break;
0952     }
0953   }
0954   void VisitPointerAttr(const PointerAttr *A) {
0955     const auto *SA = cast<PointerAttr>(A); (void)SA;
0956     if (SA->getDerefTypeLoc())    OS << " " << SA->getDerefType().getAsString();
0957   }
0958   void VisitPragmaClangBSSSectionAttr(const PragmaClangBSSSectionAttr *A) {
0959     const auto *SA = cast<PragmaClangBSSSectionAttr>(A); (void)SA;
0960     OS << " \"" << SA->getName() << "\"";
0961   }
0962   void VisitPragmaClangDataSectionAttr(const PragmaClangDataSectionAttr *A) {
0963     const auto *SA = cast<PragmaClangDataSectionAttr>(A); (void)SA;
0964     OS << " \"" << SA->getName() << "\"";
0965   }
0966   void VisitPragmaClangRelroSectionAttr(const PragmaClangRelroSectionAttr *A) {
0967     const auto *SA = cast<PragmaClangRelroSectionAttr>(A); (void)SA;
0968     OS << " \"" << SA->getName() << "\"";
0969   }
0970   void VisitPragmaClangRodataSectionAttr(const PragmaClangRodataSectionAttr *A) {
0971     const auto *SA = cast<PragmaClangRodataSectionAttr>(A); (void)SA;
0972     OS << " \"" << SA->getName() << "\"";
0973   }
0974   void VisitPragmaClangTextSectionAttr(const PragmaClangTextSectionAttr *A) {
0975     const auto *SA = cast<PragmaClangTextSectionAttr>(A); (void)SA;
0976     OS << " \"" << SA->getName() << "\"";
0977   }
0978   void VisitPreferredNameAttr(const PreferredNameAttr *A) {
0979     const auto *SA = cast<PreferredNameAttr>(A); (void)SA;
0980     OS << " " << SA->getTypedefType().getAsString();
0981   }
0982   void VisitPreferredTypeAttr(const PreferredTypeAttr *A) {
0983     const auto *SA = cast<PreferredTypeAttr>(A); (void)SA;
0984     if (SA->getTypeLoc())    OS << " " << SA->getType().getAsString();
0985   }
0986   void VisitRISCVInterruptAttr(const RISCVInterruptAttr *A) {
0987     const auto *SA = cast<RISCVInterruptAttr>(A); (void)SA;
0988     switch(SA->getInterrupt()) {
0989     case RISCVInterruptAttr::InterruptType::supervisor:
0990       OS << " supervisor";
0991       break;
0992     case RISCVInterruptAttr::InterruptType::machine:
0993       OS << " machine";
0994       break;
0995     }
0996   }
0997   void VisitRISCVVectorCCAttr(const RISCVVectorCCAttr *A) {
0998     OS << " " << A->getSpelling();
0999   }
1000   void VisitReleaseCapabilityAttr(const ReleaseCapabilityAttr *A) {
1001     const auto *SA = cast<ReleaseCapabilityAttr>(A); (void)SA;
1002     OS << " " << A->getSpelling();
1003   }
1004   void VisitReleaseHandleAttr(const ReleaseHandleAttr *A) {
1005     const auto *SA = cast<ReleaseHandleAttr>(A); (void)SA;
1006     OS << " \"" << SA->getHandleType() << "\"";
1007   }
1008   void VisitReqdWorkGroupSizeAttr(const ReqdWorkGroupSizeAttr *A) {
1009     const auto *SA = cast<ReqdWorkGroupSizeAttr>(A); (void)SA;
1010     OS << " " << SA->getXDim();
1011     OS << " " << SA->getYDim();
1012     OS << " " << SA->getZDim();
1013   }
1014   void VisitRequiresCapabilityAttr(const RequiresCapabilityAttr *A) {
1015     const auto *SA = cast<RequiresCapabilityAttr>(A); (void)SA;
1016     OS << " " << A->getSpelling();
1017   }
1018   void VisitRestrictAttr(const RestrictAttr *A) {
1019     OS << " " << A->getSpelling();
1020   }
1021   void VisitReturnTypestateAttr(const ReturnTypestateAttr *A) {
1022     const auto *SA = cast<ReturnTypestateAttr>(A); (void)SA;
1023     switch(SA->getState()) {
1024     case ReturnTypestateAttr::ConsumedState::Unknown:
1025       OS << " Unknown";
1026       break;
1027     case ReturnTypestateAttr::ConsumedState::Consumed:
1028       OS << " Consumed";
1029       break;
1030     case ReturnTypestateAttr::ConsumedState::Unconsumed:
1031       OS << " Unconsumed";
1032       break;
1033     }
1034   }
1035   void VisitSYCLKernelEntryPointAttr(const SYCLKernelEntryPointAttr *A) {
1036     const auto *SA = cast<SYCLKernelEntryPointAttr>(A); (void)SA;
1037     OS << " " << SA->getKernelName().getAsString();
1038     if (SA->getInvalid()) OS << " Invalid";
1039   }
1040   void VisitSectionAttr(const SectionAttr *A) {
1041     const auto *SA = cast<SectionAttr>(A); (void)SA;
1042     OS << " " << A->getSpelling();
1043     OS << " \"" << SA->getName() << "\"";
1044   }
1045   void VisitSentinelAttr(const SentinelAttr *A) {
1046     const auto *SA = cast<SentinelAttr>(A); (void)SA;
1047     OS << " " << SA->getSentinel();
1048     OS << " " << SA->getNullPos();
1049   }
1050   void VisitSetTypestateAttr(const SetTypestateAttr *A) {
1051     const auto *SA = cast<SetTypestateAttr>(A); (void)SA;
1052     switch(SA->getNewState()) {
1053     case SetTypestateAttr::ConsumedState::Unknown:
1054       OS << " Unknown";
1055       break;
1056     case SetTypestateAttr::ConsumedState::Consumed:
1057       OS << " Consumed";
1058       break;
1059     case SetTypestateAttr::ConsumedState::Unconsumed:
1060       OS << " Unconsumed";
1061       break;
1062     }
1063   }
1064   void VisitSizedByAttr(const SizedByAttr *A) {
1065     const auto *SA = cast<SizedByAttr>(A); (void)SA;
1066     OS << " " << SA->getNestedLevel();
1067   }
1068   void VisitSizedByOrNullAttr(const SizedByOrNullAttr *A) {
1069     const auto *SA = cast<SizedByOrNullAttr>(A); (void)SA;
1070     OS << " " << SA->getNestedLevel();
1071   }
1072   void VisitSuppressAttr(const SuppressAttr *A) {
1073     const auto *SA = cast<SuppressAttr>(A); (void)SA;
1074     for (const auto &Val : SA->diagnosticIdentifiers())
1075       OS << " " << Val;
1076   }
1077   void VisitSwiftAsyncAttr(const SwiftAsyncAttr *A) {
1078     const auto *SA = cast<SwiftAsyncAttr>(A); (void)SA;
1079     switch(SA->getKind()) {
1080     case SwiftAsyncAttr::Kind::None:
1081       OS << " None";
1082       break;
1083     case SwiftAsyncAttr::Kind::SwiftPrivate:
1084       OS << " SwiftPrivate";
1085       break;
1086     case SwiftAsyncAttr::Kind::NotSwiftPrivate:
1087       OS << " NotSwiftPrivate";
1088       break;
1089     }
1090     if (SA->getCompletionHandlerIndex().isValid())
1091       OS << " " << SA->getCompletionHandlerIndex().getSourceIndex();
1092   }
1093   void VisitSwiftAsyncErrorAttr(const SwiftAsyncErrorAttr *A) {
1094     const auto *SA = cast<SwiftAsyncErrorAttr>(A); (void)SA;
1095     switch(SA->getConvention()) {
1096     case SwiftAsyncErrorAttr::ConventionKind::None:
1097       OS << " None";
1098       break;
1099     case SwiftAsyncErrorAttr::ConventionKind::NonNullError:
1100       OS << " NonNullError";
1101       break;
1102     case SwiftAsyncErrorAttr::ConventionKind::ZeroArgument:
1103       OS << " ZeroArgument";
1104       break;
1105     case SwiftAsyncErrorAttr::ConventionKind::NonZeroArgument:
1106       OS << " NonZeroArgument";
1107       break;
1108     }
1109     OS << " " << SA->getHandlerParamIdx();
1110   }
1111   void VisitSwiftAsyncNameAttr(const SwiftAsyncNameAttr *A) {
1112     const auto *SA = cast<SwiftAsyncNameAttr>(A); (void)SA;
1113     OS << " \"" << SA->getName() << "\"";
1114   }
1115   void VisitSwiftAttrAttr(const SwiftAttrAttr *A) {
1116     const auto *SA = cast<SwiftAttrAttr>(A); (void)SA;
1117     OS << " \"" << SA->getAttribute() << "\"";
1118   }
1119   void VisitSwiftBridgeAttr(const SwiftBridgeAttr *A) {
1120     const auto *SA = cast<SwiftBridgeAttr>(A); (void)SA;
1121     OS << " \"" << SA->getSwiftType() << "\"";
1122   }
1123   void VisitSwiftErrorAttr(const SwiftErrorAttr *A) {
1124     const auto *SA = cast<SwiftErrorAttr>(A); (void)SA;
1125     switch(SA->getConvention()) {
1126     case SwiftErrorAttr::ConventionKind::None:
1127       OS << " None";
1128       break;
1129     case SwiftErrorAttr::ConventionKind::NonNullError:
1130       OS << " NonNullError";
1131       break;
1132     case SwiftErrorAttr::ConventionKind::NullResult:
1133       OS << " NullResult";
1134       break;
1135     case SwiftErrorAttr::ConventionKind::ZeroResult:
1136       OS << " ZeroResult";
1137       break;
1138     case SwiftErrorAttr::ConventionKind::NonZeroResult:
1139       OS << " NonZeroResult";
1140       break;
1141     }
1142   }
1143   void VisitSwiftNameAttr(const SwiftNameAttr *A) {
1144     const auto *SA = cast<SwiftNameAttr>(A); (void)SA;
1145     OS << " \"" << SA->getName() << "\"";
1146   }
1147   void VisitSwiftNewTypeAttr(const SwiftNewTypeAttr *A) {
1148     const auto *SA = cast<SwiftNewTypeAttr>(A); (void)SA;
1149     OS << " " << A->getSpelling();
1150     switch(SA->getNewtypeKind()) {
1151     case SwiftNewTypeAttr::NewtypeKind::NK_Struct:
1152       OS << " NK_Struct";
1153       break;
1154     case SwiftNewTypeAttr::NewtypeKind::NK_Enum:
1155       OS << " NK_Enum";
1156       break;
1157     }
1158   }
1159   void VisitSwiftVersionedAdditionAttr(const SwiftVersionedAdditionAttr *A) {
1160     const auto *SA = cast<SwiftVersionedAdditionAttr>(A); (void)SA;
1161     OS << " " << SA->getVersion();
1162     if (SA->getIsReplacedByActive()) OS << " IsReplacedByActive";
1163   }
1164   void VisitSwiftVersionedRemovalAttr(const SwiftVersionedRemovalAttr *A) {
1165     const auto *SA = cast<SwiftVersionedRemovalAttr>(A); (void)SA;
1166     OS << " " << SA->getVersion();
1167     OS << " " << SA->getRawKind();
1168     if (SA->getIsReplacedByActive()) OS << " IsReplacedByActive";
1169   }
1170   void VisitTLSModelAttr(const TLSModelAttr *A) {
1171     const auto *SA = cast<TLSModelAttr>(A); (void)SA;
1172     OS << " \"" << SA->getModel() << "\"";
1173   }
1174   void VisitTargetAttr(const TargetAttr *A) {
1175     const auto *SA = cast<TargetAttr>(A); (void)SA;
1176     OS << " \"" << SA->getFeaturesStr() << "\"";
1177   }
1178   void VisitTargetClonesAttr(const TargetClonesAttr *A) {
1179     const auto *SA = cast<TargetClonesAttr>(A); (void)SA;
1180     for (const auto &Val : SA->featuresStrs())
1181       OS << " " << Val;
1182   }
1183   void VisitTargetVersionAttr(const TargetVersionAttr *A) {
1184     const auto *SA = cast<TargetVersionAttr>(A); (void)SA;
1185     OS << " \"" << SA->getNamesStr() << "\"";
1186   }
1187   void VisitTestTypestateAttr(const TestTypestateAttr *A) {
1188     const auto *SA = cast<TestTypestateAttr>(A); (void)SA;
1189     switch(SA->getTestState()) {
1190     case TestTypestateAttr::ConsumedState::Consumed:
1191       OS << " Consumed";
1192       break;
1193     case TestTypestateAttr::ConsumedState::Unconsumed:
1194       OS << " Unconsumed";
1195       break;
1196     }
1197   }
1198   void VisitTryAcquireCapabilityAttr(const TryAcquireCapabilityAttr *A) {
1199     const auto *SA = cast<TryAcquireCapabilityAttr>(A); (void)SA;
1200     OS << " " << A->getSpelling();
1201   }
1202   void VisitTypeTagForDatatypeAttr(const TypeTagForDatatypeAttr *A) {
1203     const auto *SA = cast<TypeTagForDatatypeAttr>(A); (void)SA;
1204     if (SA->getArgumentKind())
1205       OS << " " << SA->getArgumentKind()->getName();
1206     OS << " " << SA->getMatchingCType().getAsString();
1207     if (SA->getLayoutCompatible()) OS << " LayoutCompatible";
1208     if (SA->getMustBeNull()) OS << " MustBeNull";
1209   }
1210   void VisitTypeVisibilityAttr(const TypeVisibilityAttr *A) {
1211     const auto *SA = cast<TypeVisibilityAttr>(A); (void)SA;
1212     switch(SA->getVisibility()) {
1213     case TypeVisibilityAttr::VisibilityType::Default:
1214       OS << " Default";
1215       break;
1216     case TypeVisibilityAttr::VisibilityType::Hidden:
1217       OS << " Hidden";
1218       break;
1219     case TypeVisibilityAttr::VisibilityType::Protected:
1220       OS << " Protected";
1221       break;
1222     }
1223   }
1224   void VisitUnavailableAttr(const UnavailableAttr *A) {
1225     const auto *SA = cast<UnavailableAttr>(A); (void)SA;
1226     OS << " \"" << SA->getMessage() << "\"";
1227     switch(SA->getImplicitReason()) {
1228     case UnavailableAttr::ImplicitReason::IR_None:
1229       OS << " IR_None";
1230       break;
1231     case UnavailableAttr::ImplicitReason::IR_ARCForbiddenType:
1232       OS << " IR_ARCForbiddenType";
1233       break;
1234     case UnavailableAttr::ImplicitReason::IR_ForbiddenWeak:
1235       OS << " IR_ForbiddenWeak";
1236       break;
1237     case UnavailableAttr::ImplicitReason::IR_ARCForbiddenConversion:
1238       OS << " IR_ARCForbiddenConversion";
1239       break;
1240     case UnavailableAttr::ImplicitReason::IR_ARCInitReturnsUnrelated:
1241       OS << " IR_ARCInitReturnsUnrelated";
1242       break;
1243     case UnavailableAttr::ImplicitReason::IR_ARCFieldWithOwnership:
1244       OS << " IR_ARCFieldWithOwnership";
1245       break;
1246     }
1247   }
1248   void VisitUnusedAttr(const UnusedAttr *A) {
1249     OS << " " << A->getSpelling();
1250   }
1251   void VisitUseHandleAttr(const UseHandleAttr *A) {
1252     const auto *SA = cast<UseHandleAttr>(A); (void)SA;
1253     OS << " \"" << SA->getHandleType() << "\"";
1254   }
1255   void VisitUuidAttr(const UuidAttr *A) {
1256     const auto *SA = cast<UuidAttr>(A); (void)SA;
1257     OS << " \"" << SA->getGuid() << "\"";
1258     OS << " ";
1259     dumpBareDeclRef(SA->getGuidDecl());
1260   }
1261   void VisitVTablePointerAuthenticationAttr(const VTablePointerAuthenticationAttr *A) {
1262     const auto *SA = cast<VTablePointerAuthenticationAttr>(A); (void)SA;
1263     switch(SA->getKey()) {
1264     case VTablePointerAuthenticationAttr::VPtrAuthKeyType::DefaultKey:
1265       OS << " DefaultKey";
1266       break;
1267     case VTablePointerAuthenticationAttr::VPtrAuthKeyType::NoKey:
1268       OS << " NoKey";
1269       break;
1270     case VTablePointerAuthenticationAttr::VPtrAuthKeyType::ProcessDependent:
1271       OS << " ProcessDependent";
1272       break;
1273     case VTablePointerAuthenticationAttr::VPtrAuthKeyType::ProcessIndependent:
1274       OS << " ProcessIndependent";
1275       break;
1276     }
1277     switch(SA->getAddressDiscrimination()) {
1278     case VTablePointerAuthenticationAttr::AddressDiscriminationMode::DefaultAddressDiscrimination:
1279       OS << " DefaultAddressDiscrimination";
1280       break;
1281     case VTablePointerAuthenticationAttr::AddressDiscriminationMode::NoAddressDiscrimination:
1282       OS << " NoAddressDiscrimination";
1283       break;
1284     case VTablePointerAuthenticationAttr::AddressDiscriminationMode::AddressDiscrimination:
1285       OS << " AddressDiscrimination";
1286       break;
1287     }
1288     switch(SA->getExtraDiscrimination()) {
1289     case VTablePointerAuthenticationAttr::ExtraDiscrimination::DefaultExtraDiscrimination:
1290       OS << " DefaultExtraDiscrimination";
1291       break;
1292     case VTablePointerAuthenticationAttr::ExtraDiscrimination::NoExtraDiscrimination:
1293       OS << " NoExtraDiscrimination";
1294       break;
1295     case VTablePointerAuthenticationAttr::ExtraDiscrimination::TypeDiscrimination:
1296       OS << " TypeDiscrimination";
1297       break;
1298     case VTablePointerAuthenticationAttr::ExtraDiscrimination::CustomDiscrimination:
1299       OS << " CustomDiscrimination";
1300       break;
1301     }
1302     OS << " " << SA->getCustomDiscriminationValue();
1303   }
1304   void VisitVecTypeHintAttr(const VecTypeHintAttr *A) {
1305     const auto *SA = cast<VecTypeHintAttr>(A); (void)SA;
1306     OS << " " << SA->getTypeHint().getAsString();
1307   }
1308   void VisitVisibilityAttr(const VisibilityAttr *A) {
1309     const auto *SA = cast<VisibilityAttr>(A); (void)SA;
1310     switch(SA->getVisibility()) {
1311     case VisibilityAttr::VisibilityType::Default:
1312       OS << " Default";
1313       break;
1314     case VisibilityAttr::VisibilityType::Hidden:
1315       OS << " Hidden";
1316       break;
1317     case VisibilityAttr::VisibilityType::Protected:
1318       OS << " Protected";
1319       break;
1320     }
1321   }
1322   void VisitWarnUnusedResultAttr(const WarnUnusedResultAttr *A) {
1323     const auto *SA = cast<WarnUnusedResultAttr>(A); (void)SA;
1324     OS << " " << A->getSpelling();
1325     OS << " \"" << SA->getMessage() << "\"";
1326   }
1327   void VisitWeakRefAttr(const WeakRefAttr *A) {
1328     const auto *SA = cast<WeakRefAttr>(A); (void)SA;
1329     OS << " \"" << SA->getAliasee() << "\"";
1330   }
1331   void VisitWebAssemblyExportNameAttr(const WebAssemblyExportNameAttr *A) {
1332     const auto *SA = cast<WebAssemblyExportNameAttr>(A); (void)SA;
1333     OS << " \"" << SA->getExportName() << "\"";
1334   }
1335   void VisitWebAssemblyImportModuleAttr(const WebAssemblyImportModuleAttr *A) {
1336     const auto *SA = cast<WebAssemblyImportModuleAttr>(A); (void)SA;
1337     OS << " \"" << SA->getImportModule() << "\"";
1338   }
1339   void VisitWebAssemblyImportNameAttr(const WebAssemblyImportNameAttr *A) {
1340     const auto *SA = cast<WebAssemblyImportNameAttr>(A); (void)SA;
1341     OS << " \"" << SA->getImportName() << "\"";
1342   }
1343   void VisitWorkGroupSizeHintAttr(const WorkGroupSizeHintAttr *A) {
1344     const auto *SA = cast<WorkGroupSizeHintAttr>(A); (void)SA;
1345     OS << " " << SA->getXDim();
1346     OS << " " << SA->getYDim();
1347     OS << " " << SA->getZDim();
1348   }
1349   void VisitXRayInstrumentAttr(const XRayInstrumentAttr *A) {
1350     OS << " " << A->getSpelling();
1351   }
1352   void VisitXRayLogArgsAttr(const XRayLogArgsAttr *A) {
1353     const auto *SA = cast<XRayLogArgsAttr>(A); (void)SA;
1354     OS << " " << SA->getArgumentCount();
1355   }
1356   void VisitZeroCallUsedRegsAttr(const ZeroCallUsedRegsAttr *A) {
1357     const auto *SA = cast<ZeroCallUsedRegsAttr>(A); (void)SA;
1358     switch(SA->getZeroCallUsedRegs()) {
1359     case ZeroCallUsedRegsAttr::ZeroCallUsedRegsKind::Skip:
1360       OS << " Skip";
1361       break;
1362     case ZeroCallUsedRegsAttr::ZeroCallUsedRegsKind::UsedGPRArg:
1363       OS << " UsedGPRArg";
1364       break;
1365     case ZeroCallUsedRegsAttr::ZeroCallUsedRegsKind::UsedGPR:
1366       OS << " UsedGPR";
1367       break;
1368     case ZeroCallUsedRegsAttr::ZeroCallUsedRegsKind::UsedArg:
1369       OS << " UsedArg";
1370       break;
1371     case ZeroCallUsedRegsAttr::ZeroCallUsedRegsKind::Used:
1372       OS << " Used";
1373       break;
1374     case ZeroCallUsedRegsAttr::ZeroCallUsedRegsKind::AllGPRArg:
1375       OS << " AllGPRArg";
1376       break;
1377     case ZeroCallUsedRegsAttr::ZeroCallUsedRegsKind::AllGPR:
1378       OS << " AllGPR";
1379       break;
1380     case ZeroCallUsedRegsAttr::ZeroCallUsedRegsKind::AllArg:
1381       OS << " AllArg";
1382       break;
1383     case ZeroCallUsedRegsAttr::ZeroCallUsedRegsKind::All:
1384       OS << " All";
1385       break;
1386     }
1387   }