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 }