Back to home page

EIC code displayed by LXR

 
 

    


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

0001 /*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
0002 |*                                                                            *|
0003 |* Code to implement the __has_attribute logic                                *|
0004 |*                                                                            *|
0005 |* Automatically generated file, do not edit!                                 *|
0006 |* From: Attr.td                                                              *|
0007 |*                                                                            *|
0008 \*===----------------------------------------------------------------------===*/
0009 
0010 const llvm::Triple &T = Target.getTriple();
0011 switch (Syntax) {
0012 case AttributeCommonInfo::Syntax::AS_GNU:
0013   return llvm::StringSwitch<int>(Name)
0014     .Case("aarch64_sve_pcs", 1)
0015     .Case("aarch64_vector_pcs", 1)
0016     .Case("amdgpu_flat_work_group_size", 1)
0017     .Case("amdgpu_kernel", 1)
0018     .Case("amdgpu_max_num_work_groups", 1)
0019     .Case("amdgpu_num_sgpr", 1)
0020     .Case("amdgpu_num_vgpr", 1)
0021     .Case("amdgpu_waves_per_eu", 1)
0022     .Case("interrupt", true && (T.getArch() == llvm::Triple::arm || T.getArch() == llvm::Triple::thumb || T.getArch() == llvm::Triple::armeb || T.getArch() == llvm::Triple::thumbeb) ? 1 : 0)
0023     .Case("interrupt", true && (T.getArch() == llvm::Triple::avr) ? 1 : 0)
0024     .Case("signal", true && (T.getArch() == llvm::Triple::avr) ? 1 : 0)
0025     .Case("abi_tag", 1)
0026     .Case("acquire_capability", 1)
0027     .Case("acquire_shared_capability", 1)
0028     .Case("exclusive_lock_function", 1)
0029     .Case("shared_lock_function", 1)
0030     .Case("acquire_handle", 1)
0031     .Case("acquired_after", 1)
0032     .Case("acquired_before", 1)
0033     .Case("address_space", 1)
0034     .Case("alias", 1)
0035     .Case("align_value", 1)
0036     .Case("aligned", 1)
0037     .Case("alloc_align", 1)
0038     .Case("alloc_size", 1)
0039     .Case("allocating", 1)
0040     .Case("always_destroy", 1)
0041     .Case("always_inline", 1)
0042     .Case("analyzer_noreturn", 1)
0043     .Case("annotate", 1)
0044     .Case("interrupt", true && (T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64) ? 1 : 0)
0045     .Case("no_caller_saved_registers", true && (T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64) ? 1 : 0)
0046     .Case("nocf_check", true && (T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64) ? 1 : 0)
0047     .Case("objc_arc_weak_reference_unavailable", 1)
0048     .Case("argument_with_type_tag", 1)
0049     .Case("pointer_with_type_tag", 1)
0050     .Case("__clang_arm_builtin_alias", true && (T.getArch() == llvm::Triple::arm || T.getArch() == llvm::Triple::thumb || T.getArch() == llvm::Triple::armeb || T.getArch() == llvm::Triple::thumbeb || T.getArch() == llvm::Triple::aarch64 || T.getArch() == llvm::Triple::aarch64_be || T.getArch() == llvm::Triple::aarch64_32) ? 1 : 0)
0051     .Case("__clang_arm_mve_strict_polymorphism", true && (T.getArch() == llvm::Triple::arm || T.getArch() == llvm::Triple::thumb || T.getArch() == llvm::Triple::armeb || T.getArch() == llvm::Triple::thumbeb) ? 1 : 0)
0052     .Case("arm_sve_vector_bits", 1)
0053     .Case("artificial", 1)
0054     .Case("assert_capability", 1)
0055     .Case("assert_shared_capability", 1)
0056     .Case("assert_exclusive_lock", 1)
0057     .Case("assert_shared_lock", 1)
0058     .Case("assume_aligned", 1)
0059     .Case("availability", 1)
0060     .Case("available_only_in_default_eval_method", 1)
0061     .Case("bpf_fastcall", true && (T.getArch() == llvm::Triple::bpfel || T.getArch() == llvm::Triple::bpfeb) ? 1 : 0)
0062     .Case("preserve_access_index", true && (T.getArch() == llvm::Triple::bpfel || T.getArch() == llvm::Triple::bpfeb) ? 1 : 0)
0063     .Case("preserve_static_offset", true && (T.getArch() == llvm::Triple::bpfel || T.getArch() == llvm::Triple::bpfeb) ? 1 : 0)
0064     .Case("btf_decl_tag", 1)
0065     .Case("btf_type_tag", 1)
0066     .Case("blocking", 1)
0067     .Case("blocks", 1)
0068     .Case("bounded", 1)
0069     .Case("clang_builtin_alias", 1)
0070     .Case("cdecl", 1)
0071     .Case("cf_audited_transfer", 1)
0072     .Case("cf_consumed", 1)
0073     .Case("guard", true && (T.getOS() == llvm::Triple::Win32) ? 1 : 0)
0074     .Case("cfi_canonical_jump_table", 1)
0075     .Case("cf_returns_not_retained", 1)
0076     .Case("cf_returns_retained", 1)
0077     .Case("cf_unknown_transfer", 1)
0078     .Case("cpu_dispatch", 1)
0079     .Case("cpu_specific", 1)
0080     .Case("constant", 1)
0081     .Case("cudart_builtin", 1)
0082     .Case("device", 1)
0083     .Case("device_builtin", 1)
0084     .Case("device_builtin_surface_type", 1)
0085     .Case("device_builtin_texture_type", 1)
0086     .Case("global", 1)
0087     .Case("grid_constant", 1)
0088     .Case("host", 1)
0089     .Case("launch_bounds", 1)
0090     .Case("shared", 1)
0091     .Case("assume", 1)
0092     .Case("callable_when", 1)
0093     .Case("callback", 1)
0094     .Case("called_once", 1)
0095     .Case("capability", 1)
0096     .Case("shared_capability", 1)
0097     .Case("carries_dependency", 1)
0098     .Case("cleanup", 1)
0099     .Case("clspv_libclc_builtin", 1)
0100     .Case("cmse_nonsecure_call", true && (T.getArch() == llvm::Triple::arm || T.getArch() == llvm::Triple::thumb || T.getArch() == llvm::Triple::armeb || T.getArch() == llvm::Triple::thumbeb) ? 1 : 0)
0101     .Case("cmse_nonsecure_entry", true && (T.getArch() == llvm::Triple::arm || T.getArch() == llvm::Triple::thumb || T.getArch() == llvm::Triple::armeb || T.getArch() == llvm::Triple::thumbeb) ? 1 : 0)
0102     .Case("code_align", 1)
0103     .Case("model", true && (T.getArch() == llvm::Triple::loongarch32 || T.getArch() == llvm::Triple::loongarch64) ? 1 : 0)
0104     .Case("cold", 1)
0105     .Case("common", 1)
0106     .Case("const", 1)
0107     .Case("__const", 1)
0108     .Case("require_constant_initialization", 1)
0109     .Case("constructor", 1)
0110     .Case("consumable", 1)
0111     .Case("consumable_auto_cast_state", 1)
0112     .Case("consumable_set_state_on_read", 1)
0113     .Case("convergent", 1)
0114     .Case("coro_await_elidable", 1)
0115     .Case("coro_await_elidable_argument", 1)
0116     .Case("coro_disable_lifetimebound", 1)
0117     .Case("coro_lifetimebound", 1)
0118     .Case("coro_only_destroy_when_complete", 1)
0119     .Case("coro_return_type", 1)
0120     .Case("coro_wrapper", 1)
0121     .Case("counted_by", 1)
0122     .Case("counted_by_or_null", 1)
0123     .Case("dllexport", true && ( Target.getTriple().hasDLLImportExport() ) ? 1 : 0)
0124     .Case("dllimport", true && ( Target.getTriple().hasDLLImportExport() ) ? 1 : 0)
0125     .Case("deprecated", 1)
0126     .Case("destructor", 1)
0127     .Case("diagnose_as_builtin", 1)
0128     .Case("diagnose_if", 1)
0129     .Case("disable_sanitizer_instrumentation", 1)
0130     .Case("disable_tail_calls", 1)
0131     .Case("enable_if", 1)
0132     .Case("enforce_tcb", 1)
0133     .Case("enforce_tcb_leaf", 1)
0134     .Case("enum_extensibility", 1)
0135     .Case("error", 1)
0136     .Case("warning", 1)
0137     .Case("exclude_from_explicit_instantiation", 1)
0138     .Case("exclusive_trylock_function", 1)
0139     .Case("require_explicit_initialization", 1)
0140     .Case("ext_vector_type", 1)
0141     .Case("external_source_symbol", 20230206)
0142     .Case("fallthrough", 1)
0143     .Case("fastcall", 1)
0144     .Case("flag_enum", 1)
0145     .Case("flatten", 1)
0146     .Case("format", 1)
0147     .Case("format_arg", 1)
0148     .Case("function_return", true && (T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64) ? 1 : 0)
0149     .Case("gnu_inline", 1)
0150     .Case("guarded_by", 1)
0151     .Case("guarded_var", 1)
0152     .Case("managed", 1)
0153     .Case("hot", 1)
0154     .Case("hybrid_patchable", true && ( Target.getTriple().isWindowsArm64EC() ) ? 1 : 0)
0155     .Case("ibaction", 1)
0156     .Case("iboutlet", 1)
0157     .Case("iboutletcollection", 1)
0158     .Case("ifunc", true && ( Target.supportsIFunc() ) ? 1 : 0)
0159     .Case("init_priority", true && ( !Target.getTriple().isOSzOS() ) ? 1 : 0)
0160     .Case("intel_ocl_bicc", 1)
0161     .Case("internal_linkage", 1)
0162     .Case("lto_visibility_public", 1)
0163     .Case("leaf", 1)
0164     .Case("lifetimebound", 1)
0165     .Case("lifetime_capture_by", 1)
0166     .Case("loader_uninitialized", 1)
0167     .Case("lock_returned", 1)
0168     .Case("lockable", 1)
0169     .Case("locks_excluded", 1)
0170     .Case("interrupt", true && (T.getArch() == llvm::Triple::m68k) ? 1 : 0)
0171     .Case("m68k_rtd", 1)
0172     .Case("mig_server_routine", 1)
0173     .Case("ms_abi", 1)
0174     .Case("interrupt", true && (T.getArch() == llvm::Triple::msp430) ? 1 : 0)
0175     .Case("ms_struct", 1)
0176     .Case("matrix_type", 1)
0177     .Case("may_alias", 1)
0178     .Case("maybe_undef", 1)
0179     .Case("micromips", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel) ? 1 : 0)
0180     .Case("minsize", 1)
0181     .Case("min_vector_width", 1)
0182     .Case("mips16", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel) ? 1 : 0)
0183     .Case("interrupt", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel) ? 1 : 0)
0184     .Case("long_call", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel || T.getArch() == llvm::Triple::mips64 || T.getArch() == llvm::Triple::mips64el) ? 1 : 0)
0185     .Case("far", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel || T.getArch() == llvm::Triple::mips64 || T.getArch() == llvm::Triple::mips64el) ? 1 : 0)
0186     .Case("short_call", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel || T.getArch() == llvm::Triple::mips64 || T.getArch() == llvm::Triple::mips64el) ? 1 : 0)
0187     .Case("near", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel || T.getArch() == llvm::Triple::mips64 || T.getArch() == llvm::Triple::mips64el) ? 1 : 0)
0188     .Case("mode", 1)
0189     .Case("musttail", 1)
0190     .Case("ns_consumed", 1)
0191     .Case("ns_consumes_self", 1)
0192     .Case("ns_error_domain", 1)
0193     .Case("ns_returns_autoreleased", 1)
0194     .Case("ns_returns_not_retained", 1)
0195     .Case("ns_returns_retained", 1)
0196     .Case("nvptx_kernel", true && (T.getArch() == llvm::Triple::nvptx || T.getArch() == llvm::Triple::nvptx64) ? 1 : 0)
0197     .Case("naked", 1)
0198     .Case("neon_polyvector_type", 1)
0199     .Case("neon_vector_type", 1)
0200     .Case("no_builtin", 1)
0201     .Case("nocommon", 1)
0202     .Case("noconvergent", 1)
0203     .Case("nodebug", 1)
0204     .Case("noderef", 1)
0205     .Case("no_destroy", 1)
0206     .Case("noduplicate", 1)
0207     .Case("noescape", 1)
0208     .Case("noinline", 1)
0209     .Case("no_instrument_function", 1)
0210     .Case("nomerge", 1)
0211     .Case("nomicromips", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel) ? 1 : 0)
0212     .Case("nomips16", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel) ? 1 : 0)
0213     .Case("no_profile_instrument_function", 1)
0214     .Case("no_randomize_layout", 1)
0215     .Case("noreturn", 1)
0216     .Case("no_sanitize", 1)
0217     .Case("no_address_safety_analysis", 1)
0218     .Case("no_sanitize_address", 1)
0219     .Case("no_sanitize_thread", 1)
0220     .Case("no_sanitize_memory", 1)
0221     .Case("no_specializations", 1)
0222     .Case("no_speculative_load_hardening", 1)
0223     .Case("no_split_stack", 1)
0224     .Case("no_stack_protector", 1)
0225     .Case("no_thread_safety_analysis", 1)
0226     .Case("nothrow", 1)
0227     .Case("nouwtable", 1)
0228     .Case("nonallocating", 1)
0229     .Case("nonblocking", 1)
0230     .Case("nonnull", 1)
0231     .Case("not_tail_called", 1)
0232     .Case("nv_weak", 1)
0233     .Case("os_consumed", 1)
0234     .Case("os_consumes_this", 1)
0235     .Case("os_returns_not_retained", 1)
0236     .Case("os_returns_retained", 1)
0237     .Case("os_returns_retained_on_non_zero", 1)
0238     .Case("os_returns_retained_on_zero", 1)
0239     .Case("objc_boxable", 1)
0240     .Case("objc_bridge", 1)
0241     .Case("objc_bridge_mutable", 1)
0242     .Case("objc_bridge_related", 1)
0243     .Case("objc_class_stub", 1)
0244     .Case("objc_designated_initializer", 1)
0245     .Case("objc_direct", 1)
0246     .Case("objc_direct_members", 1)
0247     .Case("objc_exception", 1)
0248     .Case("objc_protocol_requires_explicit_implementation", 1)
0249     .Case("objc_externally_retained", 1)
0250     .Case("objc_gc", 1)
0251     .Case("objc_independent_class", 1)
0252     .Case("objc_method_family", 1)
0253     .Case("NSObject", 1)
0254     .Case("objc_nonlazy_class", 1)
0255     .Case("objc_non_runtime_protocol", 1)
0256     .Case("objc_ownership", 1)
0257     .Case("objc_precise_lifetime", 1)
0258     .Case("objc_requires_property_definitions", 1)
0259     .Case("objc_requires_super", 1)
0260     .Case("objc_returns_inner_pointer", 1)
0261     .Case("objc_root_class", 1)
0262     .Case("objc_runtime_name", 1)
0263     .Case("objc_runtime_visible", 1)
0264     .Case("objc_subclassing_restricted", 1)
0265     .Case("opencl_constant", 1)
0266     .Case("opencl_generic", 1)
0267     .Case("opencl_global", 1)
0268     .Case("opencl_global_device", 1)
0269     .Case("opencl_global_host", 1)
0270     .Case("intel_reqd_sub_group_size", 1)
0271     .Case("opencl_local", 1)
0272     .Case("nosvm", 1)
0273     .Case("opencl_private", 1)
0274     .Case("opencl_unroll_hint", 1)
0275     .Case("optnone", 1)
0276     .Case("overloadable", 1)
0277     .Case("ownership_holds", 1)
0278     .Case("ownership_returns", 1)
0279     .Case("ownership_takes", 1)
0280     .Case("packed", 1)
0281     .Case("param_typestate", 1)
0282     .Case("pascal", 1)
0283     .Case("pass_object_size", 1)
0284     .Case("pass_dynamic_object_size", 1)
0285     .Case("patchable_function_entry", true && (T.getArch() == llvm::Triple::aarch64 || T.getArch() == llvm::Triple::aarch64_be || T.getArch() == llvm::Triple::loongarch32 || T.getArch() == llvm::Triple::loongarch64 || T.getArch() == llvm::Triple::riscv32 || T.getArch() == llvm::Triple::riscv64 || T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64 || T.getArch() == llvm::Triple::ppc || T.getArch() == llvm::Triple::ppc64) ? 1 : 0)
0286     .Case("pcs", 1)
0287     .Case("preferred_name", 1)
0288     .Case("preferred_type", 1)
0289     .Case("preserve_all", 1)
0290     .Case("preserve_most", 1)
0291     .Case("preserve_none", true && (T.getArch() == llvm::Triple::aarch64 || T.getArch() == llvm::Triple::aarch64_be || T.getArch() == llvm::Triple::aarch64_32 || T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64) ? 1 : 0)
0292     .Case("pt_guarded_by", 1)
0293     .Case("pt_guarded_var", 1)
0294     .Case("pure", 1)
0295     .Case("interrupt", true && (T.getArch() == llvm::Triple::riscv32 || T.getArch() == llvm::Triple::riscv64) ? 1 : 0)
0296     .Case("riscv_rvv_vector_bits", 1)
0297     .Case("riscv_vector_cc", true && (T.getArch() == llvm::Triple::riscv32 || T.getArch() == llvm::Triple::riscv64) ? 1 : 0)
0298     .Case("randomize_layout", 1)
0299     .Case("enforce_read_only_placement", 1)
0300     .Case("regcall", 1)
0301     .Case("regparm", 1)
0302     .Case("reinitializes", 1)
0303     .Case("release_capability", 1)
0304     .Case("release_shared_capability", 1)
0305     .Case("release_generic_capability", 1)
0306     .Case("unlock_function", 1)
0307     .Case("release_handle", 1)
0308     .Case("reqd_work_group_size", 1)
0309     .Case("requires_capability", 1)
0310     .Case("exclusive_locks_required", 1)
0311     .Case("requires_shared_capability", 1)
0312     .Case("shared_locks_required", 1)
0313     .Case("malloc", 1)
0314     .Case("retain", 1)
0315     .Case("return_typestate", 1)
0316     .Case("returns_nonnull", 1)
0317     .Case("returns_twice", 1)
0318     .Case("sycl_kernel", 1)
0319     .Case("sycl_kernel_entry_point", 1)
0320     .Case("sycl_special_class", 1)
0321     .Case("scoped_lockable", 1)
0322     .Case("section", 1)
0323     .Case("selectany", 1)
0324     .Case("sentinel", 1)
0325     .Case("set_typestate", 1)
0326     .Case("shared_trylock_function", 1)
0327     .Case("sized_by", 1)
0328     .Case("sized_by_or_null", 1)
0329     .Case("speculative_load_hardening", 1)
0330     .Case("standalone_debug", 1)
0331     .Case("stdcall", 1)
0332     .Case("suppress", 1)
0333     .Case("swift_async", 1)
0334     .Case("swiftasynccall", 1)
0335     .Case("swift_async_context", 1)
0336     .Case("swift_async_error", 1)
0337     .Case("swift_async_name", 1)
0338     .Case("swift_attr", 1)
0339     .Case("swift_bridge", 1)
0340     .Case("swift_bridged_typedef", 1)
0341     .Case("swiftcall", 1)
0342     .Case("swift_context", 1)
0343     .Case("swift_error", 1)
0344     .Case("swift_error_result", 1)
0345     .Case("swift_indirect_result", 1)
0346     .Case("swift_name", 1)
0347     .Case("swift_newtype", 1)
0348     .Case("swift_wrapper", 1)
0349     .Case("swift_objc_members", 1)
0350     .Case("swift_private", 1)
0351     .Case("sysv_abi", 1)
0352     .Case("tls_model", 1)
0353     .Case("target", 1)
0354     .Case("target_clones", 1)
0355     .Case("target_version", true && (T.getArch() == llvm::Triple::aarch64 || T.getArch() == llvm::Triple::aarch64_be || T.getArch() == llvm::Triple::aarch64_32 || T.getArch() == llvm::Triple::riscv32 || T.getArch() == llvm::Triple::riscv64) ? 1 : 0)
0356     .Case("test_typestate", 1)
0357     .Case("thiscall", 1)
0358     .Case("transparent_union", 1)
0359     .Case("trivial_abi", 1)
0360     .Case("try_acquire_capability", 1)
0361     .Case("try_acquire_shared_capability", 1)
0362     .Case("type_tag_for_datatype", 1)
0363     .Case("type_visibility", 1)
0364     .Case("unavailable", 1)
0365     .Case("uninitialized", 1)
0366     .Case("unsafe_buffer_usage", 1)
0367     .Case("unused", 1)
0368     .Case("use_handle", 1)
0369     .Case("used", 1)
0370     .Case("using_if_exists", 1)
0371     .Case("ptrauth_vtable_pointer", 1)
0372     .Case("vecreturn", 1)
0373     .Case("vec_type_hint", 1)
0374     .Case("vectorcall", 1)
0375     .Case("vector_size", 1)
0376     .Case("visibility", 1)
0377     .Case("warn_unused", 1)
0378     .Case("warn_unused_result", 1)
0379     .Case("weak", 1)
0380     .Case("weak_import", 1)
0381     .Case("weakref", 1)
0382     .Case("export_name", true && (T.getArch() == llvm::Triple::wasm32 || T.getArch() == llvm::Triple::wasm64) ? 1 : 0)
0383     .Case("import_module", true && (T.getArch() == llvm::Triple::wasm32 || T.getArch() == llvm::Triple::wasm64) ? 1 : 0)
0384     .Case("import_name", true && (T.getArch() == llvm::Triple::wasm32 || T.getArch() == llvm::Triple::wasm64) ? 1 : 0)
0385     .Case("work_group_size_hint", 1)
0386     .Case("force_align_arg_pointer", true && (T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64) ? 1 : 0)
0387     .Case("xray_always_instrument", 1)
0388     .Case("xray_never_instrument", 1)
0389     .Case("xray_log_args", 1)
0390     .Case("zero_call_used_regs", 1)
0391     .Default(0);
0392 case AttributeCommonInfo::Syntax::AS_Declspec:
0393   return llvm::StringSwitch<int>(Name)
0394     .Case("align", 1)
0395     .Case("guard", true && (T.getOS() == llvm::Triple::Win32) ? 1 : 0)
0396     .Case("cpu_dispatch", 1)
0397     .Case("cpu_specific", 1)
0398     .Case("__constant__", 1)
0399     .Case("__cudart_builtin__", 1)
0400     .Case("__device__", 1)
0401     .Case("__device_builtin__", 1)
0402     .Case("__device_builtin_surface_type__", 1)
0403     .Case("__device_builtin_texture_type__", 1)
0404     .Case("__global__", 1)
0405     .Case("__grid_constant__", 1)
0406     .Case("__host__", 1)
0407     .Case("__launch_bounds__", 1)
0408     .Case("__shared__", 1)
0409     .Case("code_seg", 1)
0410     .Case("dllexport", true && ( Target.getTriple().hasDLLImportExport() ) ? 1 : 0)
0411     .Case("dllimport", true && ( Target.getTriple().hasDLLImportExport() ) ? 1 : 0)
0412     .Case("deprecated", 1)
0413     .Case("empty_bases", true && (T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64 || T.getArch() == llvm::Triple::arm || T.getArch() == llvm::Triple::thumb || T.getArch() == llvm::Triple::aarch64) && ( Target.getCXXABI().isMicrosoft() ) ? 1 : 0)
0414     .Case("__managed__", 1)
0415     .Case("hybrid_patchable", true && ( Target.getTriple().isWindowsArm64EC() ) ? 1 : 0)
0416     .Case("layout_version", true && (T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64 || T.getArch() == llvm::Triple::arm || T.getArch() == llvm::Triple::thumb || T.getArch() == llvm::Triple::aarch64) && ( Target.getCXXABI().isMicrosoft() ) ? 1 : 0)
0417     .Case("allocator", 1)
0418     .Case("novtable", true && (T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64 || T.getArch() == llvm::Triple::arm || T.getArch() == llvm::Triple::thumb || T.getArch() == llvm::Triple::aarch64) && ( Target.getCXXABI().isMicrosoft() ) ? 1 : 0)
0419     .Case("naked", 1)
0420     .Case("noalias", 1)
0421     .Case("noconvergent", 1)
0422     .Case("noinline", 1)
0423     .Case("noreturn", 1)
0424     .Case("safebuffers", 1)
0425     .Case("nothrow", 1)
0426     .Case("no_init_all", 1)
0427     .Case("restrict", 1)
0428     .Case("allocate", 1)
0429     .Case("selectany", 1)
0430     .Case("strict_gs_check", 1)
0431     .Case("thread", 1)
0432     .Case("uuid", 1)
0433     .Case("property", 1)
0434     .Default(0);
0435 case AttributeCommonInfo::Syntax::AS_Microsoft:
0436   return llvm::StringSwitch<int>(Name)
0437     .Case("branch", 1)
0438     .Case("flatten", 1)
0439     .Case("unroll", 1)
0440     .Case("loop", 1)
0441     .Case("numthreads", 1)
0442     .Case("shader", 1)
0443     .Case("WaveSize", 1)
0444     .Case("uuid", 1)
0445     .Default(0);
0446 case AttributeCommonInfo::Syntax::AS_Pragma:
0447   return llvm::StringSwitch<int>(Name)
0448     .Case("init_seg", 1)
0449     .Case("loop", 1)
0450     .Case("unroll", 1)
0451     .Case("nounroll", 1)
0452     .Case("unroll_and_jam", 1)
0453     .Case("nounroll_and_jam", 1)
0454     .Case("declare simd", 1)
0455     .Case("declare target", 1)
0456     .Case("declare variant", 1)
0457     .Default(0);
0458 case AttributeCommonInfo::Syntax::AS_HLSLAnnotation:
0459   return llvm::StringSwitch<int>(Name)
0460     .Case("packoffset", 1)
0461     .Case("register", 1)
0462     .Case("SV_DispatchThreadID", 1)
0463     .Case("SV_GroupID", 1)
0464     .Case("SV_GroupIndex", 1)
0465     .Case("SV_GroupThreadID", 1)
0466     .Default(0);
0467 case AttributeCommonInfo::Syntax::AS_CXX11: {
0468 if (ScopeName == "") {
0469   return llvm::StringSwitch<int>(Name)
0470     .Case("noreturn", 200809)
0471     .Case("assume", 202207)
0472     .Case("carries_dependency", 200809)
0473     .Case("deprecated", 201309)
0474     .Case("fallthrough", 201603)
0475     .Case("likely", 201803)
0476     .Case("no_unique_address", true && ( Target.getCXXABI().isItaniumFamily() ) ? 201803 : 0)
0477     .Case("unlikely", 201803)
0478     .Case("maybe_unused", 201603)
0479     .Case("nodiscard", 201907)
0480     .Default(0);
0481 } else if (ScopeName == "clang") {
0482   return llvm::StringSwitch<int>(Name)
0483     .Case("aarch64_sve_pcs", 1)
0484     .Case("aarch64_vector_pcs", 1)
0485     .Case("amdgpu_flat_work_group_size", 1)
0486     .Case("amdgpu_kernel", 1)
0487     .Case("amdgpu_max_num_work_groups", 1)
0488     .Case("amdgpu_num_sgpr", 1)
0489     .Case("amdgpu_num_vgpr", 1)
0490     .Case("amdgpu_waves_per_eu", 1)
0491     .Case("acquire_capability", 1)
0492     .Case("acquire_shared_capability", 1)
0493     .Case("acquire_handle", 1)
0494     .Case("address_space", 1)
0495     .Case("allocating", 1)
0496     .Case("always_destroy", 1)
0497     .Case("always_inline", 1)
0498     .Case("annotate", 1)
0499     .Case("annotate_type", 1)
0500     .Case("objc_arc_weak_reference_unavailable", 1)
0501     .Case("argument_with_type_tag", 1)
0502     .Case("pointer_with_type_tag", 1)
0503     .Case("__clang_arm_builtin_alias", true && (T.getArch() == llvm::Triple::arm || T.getArch() == llvm::Triple::thumb || T.getArch() == llvm::Triple::armeb || T.getArch() == llvm::Triple::thumbeb || T.getArch() == llvm::Triple::aarch64 || T.getArch() == llvm::Triple::aarch64_be || T.getArch() == llvm::Triple::aarch64_32) ? 1 : 0)
0504     .Case("__clang_arm_mve_strict_polymorphism", true && (T.getArch() == llvm::Triple::arm || T.getArch() == llvm::Triple::thumb || T.getArch() == llvm::Triple::armeb || T.getArch() == llvm::Triple::thumbeb) ? 1 : 0)
0505     .Case("assert_capability", 1)
0506     .Case("assert_shared_capability", 1)
0507     .Case("availability", 1)
0508     .Case("available_only_in_default_eval_method", 1)
0509     .Case("bpf_fastcall", true && (T.getArch() == llvm::Triple::bpfel || T.getArch() == llvm::Triple::bpfeb) ? 1 : 0)
0510     .Case("preserve_access_index", true && (T.getArch() == llvm::Triple::bpfel || T.getArch() == llvm::Triple::bpfeb) ? 1 : 0)
0511     .Case("preserve_static_offset", true && (T.getArch() == llvm::Triple::bpfel || T.getArch() == llvm::Triple::bpfeb) ? 1 : 0)
0512     .Case("btf_decl_tag", 1)
0513     .Case("btf_type_tag", 1)
0514     .Case("blocking", 1)
0515     .Case("blocks", 1)
0516     .Case("builtin_alias", 1)
0517     .Case("cf_audited_transfer", 1)
0518     .Case("cf_consumed", 1)
0519     .Case("guard", true && (T.getOS() == llvm::Triple::Win32) ? 1 : 0)
0520     .Case("cfi_canonical_jump_table", 1)
0521     .Case("cf_returns_not_retained", 1)
0522     .Case("cf_returns_retained", 1)
0523     .Case("cf_unknown_transfer", 1)
0524     .Case("cpu_dispatch", 1)
0525     .Case("cpu_specific", 1)
0526     .Case("assume", 1)
0527     .Case("callable_when", 1)
0528     .Case("callback", 1)
0529     .Case("called_once", 1)
0530     .Case("capability", 1)
0531     .Case("shared_capability", 1)
0532     .Case("clspv_libclc_builtin", 1)
0533     .Case("code_align", 1)
0534     .Case("require_constant_initialization", 1)
0535     .Case("consumable", 1)
0536     .Case("consumable_auto_cast_state", 1)
0537     .Case("consumable_set_state_on_read", 1)
0538     .Case("convergent", 1)
0539     .Case("coro_await_elidable", 1)
0540     .Case("coro_await_elidable_argument", 1)
0541     .Case("coro_disable_lifetimebound", 1)
0542     .Case("coro_lifetimebound", 1)
0543     .Case("coro_only_destroy_when_complete", 1)
0544     .Case("coro_return_type", 1)
0545     .Case("coro_wrapper", 1)
0546     .Case("counted_by", 1)
0547     .Case("counted_by_or_null", 1)
0548     .Case("diagnose_as_builtin", 1)
0549     .Case("disable_sanitizer_instrumentation", 1)
0550     .Case("disable_tail_calls", 1)
0551     .Case("enforce_tcb", 1)
0552     .Case("enforce_tcb_leaf", 1)
0553     .Case("enum_extensibility", 1)
0554     .Case("exclude_from_explicit_instantiation", 1)
0555     .Case("require_explicit_initialization", 1)
0556     .Case("external_source_symbol", 20230206)
0557     .Case("fallthrough", 1)
0558     .Case("flag_enum", 1)
0559     .Case("guarded_var", 1)
0560     .Case("hybrid_patchable", true && ( Target.getTriple().isWindowsArm64EC() ) ? 1 : 0)
0561     .Case("ibaction", 1)
0562     .Case("iboutlet", 1)
0563     .Case("iboutletcollection", 1)
0564     .Case("intel_ocl_bicc", 1)
0565     .Case("internal_linkage", 1)
0566     .Case("lto_visibility_public", 1)
0567     .Case("lifetimebound", 1)
0568     .Case("lifetime_capture_by", 1)
0569     .Case("loader_uninitialized", 1)
0570     .Case("m68k_rtd", 1)
0571     .Case("mig_server_routine", 1)
0572     .Case("matrix_type", 1)
0573     .Case("maybe_undef", 1)
0574     .Case("minsize", 1)
0575     .Case("min_vector_width", 1)
0576     .Case("musttail", 1)
0577     .Case("ns_consumed", 1)
0578     .Case("ns_consumes_self", 1)
0579     .Case("ns_returns_autoreleased", 1)
0580     .Case("ns_returns_not_retained", 1)
0581     .Case("ns_returns_retained", 1)
0582     .Case("nvptx_kernel", true && (T.getArch() == llvm::Triple::nvptx || T.getArch() == llvm::Triple::nvptx64) ? 1 : 0)
0583     .Case("neon_polyvector_type", 1)
0584     .Case("neon_vector_type", 1)
0585     .Case("no_builtin", 1)
0586     .Case("noconvergent", 1)
0587     .Case("noderef", 1)
0588     .Case("no_destroy", 1)
0589     .Case("noduplicate", 1)
0590     .Case("noescape", 1)
0591     .Case("noinline", 1)
0592     .Case("nomerge", 1)
0593     .Case("no_sanitize", 1)
0594     .Case("no_sanitize_memory", 1)
0595     .Case("no_specializations", 1)
0596     .Case("no_speculative_load_hardening", 1)
0597     .Case("no_stack_protector", 1)
0598     .Case("no_thread_safety_analysis", 1)
0599     .Case("nouwtable", 1)
0600     .Case("nonallocating", 1)
0601     .Case("nonblocking", 1)
0602     .Case("not_tail_called", 1)
0603     .Case("os_consumed", 1)
0604     .Case("os_consumes_this", 1)
0605     .Case("os_returns_not_retained", 1)
0606     .Case("os_returns_retained", 1)
0607     .Case("os_returns_retained_on_non_zero", 1)
0608     .Case("os_returns_retained_on_zero", 1)
0609     .Case("objc_boxable", 1)
0610     .Case("objc_bridge", 1)
0611     .Case("objc_bridge_mutable", 1)
0612     .Case("objc_bridge_related", 1)
0613     .Case("objc_class_stub", 1)
0614     .Case("objc_designated_initializer", 1)
0615     .Case("objc_direct", 1)
0616     .Case("objc_direct_members", 1)
0617     .Case("objc_exception", 1)
0618     .Case("objc_protocol_requires_explicit_implementation", 1)
0619     .Case("objc_externally_retained", 1)
0620     .Case("objc_gc", 1)
0621     .Case("objc_independent_class", 1)
0622     .Case("objc_method_family", 1)
0623     .Case("NSObject", 1)
0624     .Case("objc_nonlazy_class", 1)
0625     .Case("objc_non_runtime_protocol", 1)
0626     .Case("objc_ownership", 1)
0627     .Case("objc_precise_lifetime", 1)
0628     .Case("objc_requires_property_definitions", 1)
0629     .Case("objc_requires_super", 1)
0630     .Case("objc_returns_inner_pointer", 1)
0631     .Case("objc_root_class", 1)
0632     .Case("objc_runtime_name", 1)
0633     .Case("objc_runtime_visible", 1)
0634     .Case("objc_subclassing_restricted", 1)
0635     .Case("opencl_constant", 1)
0636     .Case("opencl_generic", 1)
0637     .Case("opencl_global", 1)
0638     .Case("opencl_global_device", 1)
0639     .Case("opencl_global_host", 1)
0640     .Case("opencl_local", 1)
0641     .Case("opencl_private", 1)
0642     .Case("optnone", 1)
0643     .Case("overloadable", 1)
0644     .Case("ownership_holds", 1)
0645     .Case("ownership_returns", 1)
0646     .Case("ownership_takes", 1)
0647     .Case("param_typestate", 1)
0648     .Case("pascal", 1)
0649     .Case("pass_object_size", 1)
0650     .Case("pass_dynamic_object_size", 1)
0651     .Case("preferred_name", 1)
0652     .Case("preferred_type", 1)
0653     .Case("preserve_all", 1)
0654     .Case("preserve_most", 1)
0655     .Case("preserve_none", true && (T.getArch() == llvm::Triple::aarch64 || T.getArch() == llvm::Triple::aarch64_be || T.getArch() == llvm::Triple::aarch64_32 || T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64) ? 1 : 0)
0656     .Case("pt_guarded_var", 1)
0657     .Case("riscv_vector_cc", true && (T.getArch() == llvm::Triple::riscv32 || T.getArch() == llvm::Triple::riscv64) ? 1 : 0)
0658     .Case("enforce_read_only_placement", 1)
0659     .Case("reinitializes", 1)
0660     .Case("release_capability", 1)
0661     .Case("release_shared_capability", 1)
0662     .Case("release_generic_capability", 1)
0663     .Case("unlock_function", 1)
0664     .Case("release_handle", 1)
0665     .Case("requires_capability", 1)
0666     .Case("exclusive_locks_required", 1)
0667     .Case("requires_shared_capability", 1)
0668     .Case("shared_locks_required", 1)
0669     .Case("return_typestate", 1)
0670     .Case("sycl_kernel", 1)
0671     .Case("sycl_kernel_entry_point", 1)
0672     .Case("sycl_special_class", 1)
0673     .Case("scoped_lockable", 1)
0674     .Case("set_typestate", 1)
0675     .Case("sized_by", 1)
0676     .Case("sized_by_or_null", 1)
0677     .Case("speculative_load_hardening", 1)
0678     .Case("standalone_debug", 1)
0679     .Case("suppress", 1)
0680     .Case("swift_async", 1)
0681     .Case("swiftasynccall", 1)
0682     .Case("swift_async_context", 1)
0683     .Case("swift_async_error", 1)
0684     .Case("swiftcall", 1)
0685     .Case("swift_context", 1)
0686     .Case("swift_error_result", 1)
0687     .Case("swift_indirect_result", 1)
0688     .Case("test_typestate", 1)
0689     .Case("trivial_abi", 1)
0690     .Case("try_acquire_capability", 1)
0691     .Case("try_acquire_shared_capability", 1)
0692     .Case("type_tag_for_datatype", 1)
0693     .Case("type_visibility", 1)
0694     .Case("unavailable", 1)
0695     .Case("uninitialized", 1)
0696     .Case("unsafe_buffer_usage", 1)
0697     .Case("use_handle", 1)
0698     .Case("using_if_exists", 1)
0699     .Case("ptrauth_vtable_pointer", 1)
0700     .Case("vecreturn", 1)
0701     .Case("vectorcall", 1)
0702     .Case("warn_unused_result", 1)
0703     .Case("weak_import", 1)
0704     .Case("export_name", true && (T.getArch() == llvm::Triple::wasm32 || T.getArch() == llvm::Triple::wasm64) ? 1 : 0)
0705     .Case("import_module", true && (T.getArch() == llvm::Triple::wasm32 || T.getArch() == llvm::Triple::wasm64) ? 1 : 0)
0706     .Case("import_name", true && (T.getArch() == llvm::Triple::wasm32 || T.getArch() == llvm::Triple::wasm64) ? 1 : 0)
0707     .Case("xray_always_instrument", 1)
0708     .Case("xray_never_instrument", 1)
0709     .Case("xray_log_args", 1)
0710     .Default(0);
0711 } else if (ScopeName == "gnu") {
0712   return llvm::StringSwitch<int>(Name)
0713     .Case("interrupt", true && (T.getArch() == llvm::Triple::arm || T.getArch() == llvm::Triple::thumb || T.getArch() == llvm::Triple::armeb || T.getArch() == llvm::Triple::thumbeb) ? 1 : 0)
0714     .Case("interrupt", true && (T.getArch() == llvm::Triple::avr) ? 1 : 0)
0715     .Case("signal", true && (T.getArch() == llvm::Triple::avr) ? 1 : 0)
0716     .Case("abi_tag", 1)
0717     .Case("alias", 1)
0718     .Case("aligned", 1)
0719     .Case("alloc_align", 1)
0720     .Case("alloc_size", 1)
0721     .Case("always_inline", 1)
0722     .Case("interrupt", true && (T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64) ? 1 : 0)
0723     .Case("no_caller_saved_registers", true && (T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64) ? 1 : 0)
0724     .Case("nocf_check", true && (T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64) ? 1 : 0)
0725     .Case("artificial", 1)
0726     .Case("assume_aligned", 1)
0727     .Case("cdecl", 1)
0728     .Case("cleanup", 1)
0729     .Case("model", true && (T.getArch() == llvm::Triple::loongarch32 || T.getArch() == llvm::Triple::loongarch64) ? 1 : 0)
0730     .Case("cold", 1)
0731     .Case("common", 1)
0732     .Case("const", 1)
0733     .Case("__const", 1)
0734     .Case("constructor", 1)
0735     .Case("dllexport", true && ( Target.getTriple().hasDLLImportExport() ) ? 1 : 0)
0736     .Case("dllimport", true && ( Target.getTriple().hasDLLImportExport() ) ? 1 : 0)
0737     .Case("deprecated", 1)
0738     .Case("destructor", 1)
0739     .Case("error", 1)
0740     .Case("warning", 1)
0741     .Case("fallthrough", 1)
0742     .Case("fastcall", 1)
0743     .Case("flatten", 1)
0744     .Case("format", 1)
0745     .Case("format_arg", 1)
0746     .Case("function_return", true && (T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64) ? 1 : 0)
0747     .Case("gnu_inline", 1)
0748     .Case("hot", 1)
0749     .Case("ifunc", true && ( Target.supportsIFunc() ) ? 1 : 0)
0750     .Case("init_priority", true && ( !Target.getTriple().isOSzOS() ) ? 1 : 0)
0751     .Case("leaf", 1)
0752     .Case("ms_abi", 1)
0753     .Case("interrupt", true && (T.getArch() == llvm::Triple::msp430) ? 1 : 0)
0754     .Case("ms_struct", 1)
0755     .Case("may_alias", 1)
0756     .Case("micromips", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel) ? 1 : 0)
0757     .Case("mips16", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel) ? 1 : 0)
0758     .Case("interrupt", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel) ? 1 : 0)
0759     .Case("long_call", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel || T.getArch() == llvm::Triple::mips64 || T.getArch() == llvm::Triple::mips64el) ? 1 : 0)
0760     .Case("far", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel || T.getArch() == llvm::Triple::mips64 || T.getArch() == llvm::Triple::mips64el) ? 1 : 0)
0761     .Case("short_call", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel || T.getArch() == llvm::Triple::mips64 || T.getArch() == llvm::Triple::mips64el) ? 1 : 0)
0762     .Case("near", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel || T.getArch() == llvm::Triple::mips64 || T.getArch() == llvm::Triple::mips64el) ? 1 : 0)
0763     .Case("mode", 1)
0764     .Case("naked", 1)
0765     .Case("nocommon", 1)
0766     .Case("nodebug", 1)
0767     .Case("noinline", 1)
0768     .Case("no_instrument_function", 1)
0769     .Case("nomicromips", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel) ? 1 : 0)
0770     .Case("nomips16", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel) ? 1 : 0)
0771     .Case("no_profile_instrument_function", 1)
0772     .Case("no_randomize_layout", 1)
0773     .Case("noreturn", 1)
0774     .Case("no_address_safety_analysis", 1)
0775     .Case("no_sanitize_address", 1)
0776     .Case("no_sanitize_thread", 1)
0777     .Case("no_split_stack", 1)
0778     .Case("no_stack_protector", 1)
0779     .Case("nothrow", 1)
0780     .Case("nonnull", 1)
0781     .Case("packed", 1)
0782     .Case("patchable_function_entry", true && (T.getArch() == llvm::Triple::aarch64 || T.getArch() == llvm::Triple::aarch64_be || T.getArch() == llvm::Triple::loongarch32 || T.getArch() == llvm::Triple::loongarch64 || T.getArch() == llvm::Triple::riscv32 || T.getArch() == llvm::Triple::riscv64 || T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64 || T.getArch() == llvm::Triple::ppc || T.getArch() == llvm::Triple::ppc64) ? 1 : 0)
0783     .Case("pcs", 1)
0784     .Case("pure", 1)
0785     .Case("interrupt", true && (T.getArch() == llvm::Triple::riscv32 || T.getArch() == llvm::Triple::riscv64) ? 1 : 0)
0786     .Case("randomize_layout", 1)
0787     .Case("regcall", 1)
0788     .Case("regparm", 1)
0789     .Case("malloc", 1)
0790     .Case("retain", 1)
0791     .Case("returns_nonnull", 1)
0792     .Case("returns_twice", 1)
0793     .Case("section", 1)
0794     .Case("selectany", 1)
0795     .Case("sentinel", 1)
0796     .Case("stdcall", 1)
0797     .Case("sysv_abi", 1)
0798     .Case("tls_model", 1)
0799     .Case("target", 1)
0800     .Case("target_clones", 1)
0801     .Case("target_version", true && (T.getArch() == llvm::Triple::aarch64 || T.getArch() == llvm::Triple::aarch64_be || T.getArch() == llvm::Triple::aarch64_32 || T.getArch() == llvm::Triple::riscv32 || T.getArch() == llvm::Triple::riscv64) ? 1 : 0)
0802     .Case("thiscall", 1)
0803     .Case("transparent_union", 1)
0804     .Case("unused", 1)
0805     .Case("used", 1)
0806     .Case("vector_size", 1)
0807     .Case("visibility", 1)
0808     .Case("warn_unused", 1)
0809     .Case("warn_unused_result", 1)
0810     .Case("weak", 1)
0811     .Case("weakref", 1)
0812     .Case("force_align_arg_pointer", true && (T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64) ? 1 : 0)
0813     .Case("zero_call_used_regs", 1)
0814     .Default(0);
0815 } else if (ScopeName == "gsl") {
0816   return llvm::StringSwitch<int>(Name)
0817     .Case("Owner", 1)
0818     .Case("Pointer", 1)
0819     .Case("suppress", 1)
0820     .Default(0);
0821 } else if (ScopeName == "hlsl") {
0822   return llvm::StringSwitch<int>(Name)
0823     .Case("contained_type", 1)
0824     .Case("is_rov", 1)
0825     .Case("raw_buffer", 1)
0826     .Case("resource_class", 1)
0827     .Default(0);
0828 } else if (ScopeName == "msvc") {
0829   return llvm::StringSwitch<int>(Name)
0830     .Case("constexpr", 1)
0831     .Case("noinline", 1)
0832     .Case("no_unique_address", true && (T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64 || T.getArch() == llvm::Triple::arm || T.getArch() == llvm::Triple::thumb || T.getArch() == llvm::Triple::aarch64) && ( Target.getCXXABI().isMicrosoft() ) ? 201803 : 0)
0833     .Default(0);
0834 } else if (ScopeName == "omp") {
0835   return llvm::StringSwitch<int>(Name)
0836     .Case("assume", 1)
0837     .Default(0);
0838 } else if (ScopeName == "riscv") {
0839   return llvm::StringSwitch<int>(Name)
0840     .Case("vector_cc", true && (T.getArch() == llvm::Triple::riscv32 || T.getArch() == llvm::Triple::riscv64) ? 1 : 0)
0841     .Default(0);
0842 }
0843 } break;
0844 case AttributeCommonInfo::Syntax::AS_C23: {
0845 if (ScopeName == "") {
0846   return llvm::StringSwitch<int>(Name)
0847     .Case("noreturn", 202202)
0848     .Case("_Noreturn", 202202)
0849     .Case("deprecated", 201904)
0850     .Case("fallthrough", 201910)
0851     .Case("maybe_unused", 202106)
0852     .Case("nodiscard", 202003)
0853     .Default(0);
0854 } else if (ScopeName == "clang") {
0855   return llvm::StringSwitch<int>(Name)
0856     .Case("aarch64_sve_pcs", 1)
0857     .Case("aarch64_vector_pcs", 1)
0858     .Case("amdgpu_kernel", 1)
0859     .Case("acquire_handle", 1)
0860     .Case("address_space", 1)
0861     .Case("allocating", 1)
0862     .Case("always_inline", 1)
0863     .Case("annotate", 1)
0864     .Case("annotate_type", 1)
0865     .Case("objc_arc_weak_reference_unavailable", 1)
0866     .Case("argument_with_type_tag", 1)
0867     .Case("pointer_with_type_tag", 1)
0868     .Case("__clang_arm_builtin_alias", true && (T.getArch() == llvm::Triple::arm || T.getArch() == llvm::Triple::thumb || T.getArch() == llvm::Triple::armeb || T.getArch() == llvm::Triple::thumbeb || T.getArch() == llvm::Triple::aarch64 || T.getArch() == llvm::Triple::aarch64_be || T.getArch() == llvm::Triple::aarch64_32) ? 1 : 0)
0869     .Case("__clang_arm_mve_strict_polymorphism", true && (T.getArch() == llvm::Triple::arm || T.getArch() == llvm::Triple::thumb || T.getArch() == llvm::Triple::armeb || T.getArch() == llvm::Triple::thumbeb) ? 1 : 0)
0870     .Case("availability", 1)
0871     .Case("available_only_in_default_eval_method", 1)
0872     .Case("bpf_fastcall", true && (T.getArch() == llvm::Triple::bpfel || T.getArch() == llvm::Triple::bpfeb) ? 1 : 0)
0873     .Case("preserve_access_index", true && (T.getArch() == llvm::Triple::bpfel || T.getArch() == llvm::Triple::bpfeb) ? 1 : 0)
0874     .Case("preserve_static_offset", true && (T.getArch() == llvm::Triple::bpfel || T.getArch() == llvm::Triple::bpfeb) ? 1 : 0)
0875     .Case("btf_decl_tag", 1)
0876     .Case("btf_type_tag", 1)
0877     .Case("blocking", 1)
0878     .Case("blocks", 1)
0879     .Case("builtin_alias", 1)
0880     .Case("cf_audited_transfer", 1)
0881     .Case("cf_consumed", 1)
0882     .Case("guard", true && (T.getOS() == llvm::Triple::Win32) ? 1 : 0)
0883     .Case("cfi_canonical_jump_table", 1)
0884     .Case("cf_returns_not_retained", 1)
0885     .Case("cf_returns_retained", 1)
0886     .Case("cf_unknown_transfer", 1)
0887     .Case("cpu_dispatch", 1)
0888     .Case("cpu_specific", 1)
0889     .Case("assume", 1)
0890     .Case("callback", 1)
0891     .Case("called_once", 1)
0892     .Case("clspv_libclc_builtin", 1)
0893     .Case("code_align", 1)
0894     .Case("convergent", 1)
0895     .Case("coro_await_elidable", 1)
0896     .Case("coro_await_elidable_argument", 1)
0897     .Case("coro_disable_lifetimebound", 1)
0898     .Case("coro_lifetimebound", 1)
0899     .Case("coro_only_destroy_when_complete", 1)
0900     .Case("coro_return_type", 1)
0901     .Case("coro_wrapper", 1)
0902     .Case("counted_by", 1)
0903     .Case("counted_by_or_null", 1)
0904     .Case("diagnose_as_builtin", 1)
0905     .Case("disable_sanitizer_instrumentation", 1)
0906     .Case("disable_tail_calls", 1)
0907     .Case("enforce_tcb", 1)
0908     .Case("enforce_tcb_leaf", 1)
0909     .Case("enum_extensibility", 1)
0910     .Case("exclude_from_explicit_instantiation", 1)
0911     .Case("require_explicit_initialization", 1)
0912     .Case("external_source_symbol", 20230206)
0913     .Case("flag_enum", 1)
0914     .Case("hybrid_patchable", true && ( Target.getTriple().isWindowsArm64EC() ) ? 1 : 0)
0915     .Case("ibaction", 1)
0916     .Case("iboutlet", 1)
0917     .Case("iboutletcollection", 1)
0918     .Case("internal_linkage", 1)
0919     .Case("lto_visibility_public", 1)
0920     .Case("likely", 1)
0921     .Case("loader_uninitialized", 1)
0922     .Case("m68k_rtd", 1)
0923     .Case("mig_server_routine", 1)
0924     .Case("matrix_type", 1)
0925     .Case("maybe_undef", 1)
0926     .Case("minsize", 1)
0927     .Case("min_vector_width", 1)
0928     .Case("musttail", 1)
0929     .Case("ns_consumed", 1)
0930     .Case("ns_consumes_self", 1)
0931     .Case("ns_returns_autoreleased", 1)
0932     .Case("ns_returns_not_retained", 1)
0933     .Case("ns_returns_retained", 1)
0934     .Case("nvptx_kernel", true && (T.getArch() == llvm::Triple::nvptx || T.getArch() == llvm::Triple::nvptx64) ? 1 : 0)
0935     .Case("neon_polyvector_type", 1)
0936     .Case("neon_vector_type", 1)
0937     .Case("no_builtin", 1)
0938     .Case("noconvergent", 1)
0939     .Case("noderef", 1)
0940     .Case("noduplicate", 1)
0941     .Case("noescape", 1)
0942     .Case("noinline", 1)
0943     .Case("nomerge", 1)
0944     .Case("no_sanitize", 1)
0945     .Case("no_sanitize_memory", 1)
0946     .Case("no_speculative_load_hardening", 1)
0947     .Case("no_stack_protector", 1)
0948     .Case("no_thread_safety_analysis", 1)
0949     .Case("nouwtable", 1)
0950     .Case("nonallocating", 1)
0951     .Case("nonblocking", 1)
0952     .Case("not_tail_called", 1)
0953     .Case("os_consumed", 1)
0954     .Case("os_consumes_this", 1)
0955     .Case("os_returns_not_retained", 1)
0956     .Case("os_returns_retained", 1)
0957     .Case("os_returns_retained_on_non_zero", 1)
0958     .Case("os_returns_retained_on_zero", 1)
0959     .Case("objc_boxable", 1)
0960     .Case("objc_bridge", 1)
0961     .Case("objc_bridge_mutable", 1)
0962     .Case("objc_bridge_related", 1)
0963     .Case("objc_class_stub", 1)
0964     .Case("objc_designated_initializer", 1)
0965     .Case("objc_direct", 1)
0966     .Case("objc_direct_members", 1)
0967     .Case("objc_exception", 1)
0968     .Case("objc_protocol_requires_explicit_implementation", 1)
0969     .Case("objc_externally_retained", 1)
0970     .Case("objc_gc", 1)
0971     .Case("objc_independent_class", 1)
0972     .Case("objc_method_family", 1)
0973     .Case("NSObject", 1)
0974     .Case("objc_nonlazy_class", 1)
0975     .Case("objc_non_runtime_protocol", 1)
0976     .Case("objc_ownership", 1)
0977     .Case("objc_precise_lifetime", 1)
0978     .Case("objc_requires_property_definitions", 1)
0979     .Case("objc_requires_super", 1)
0980     .Case("objc_returns_inner_pointer", 1)
0981     .Case("objc_root_class", 1)
0982     .Case("objc_runtime_name", 1)
0983     .Case("objc_runtime_visible", 1)
0984     .Case("objc_subclassing_restricted", 1)
0985     .Case("opencl_constant", 1)
0986     .Case("opencl_generic", 1)
0987     .Case("opencl_global", 1)
0988     .Case("opencl_global_device", 1)
0989     .Case("opencl_global_host", 1)
0990     .Case("opencl_local", 1)
0991     .Case("opencl_private", 1)
0992     .Case("optnone", 1)
0993     .Case("overloadable", 1)
0994     .Case("ownership_holds", 1)
0995     .Case("ownership_returns", 1)
0996     .Case("ownership_takes", 1)
0997     .Case("pascal", 1)
0998     .Case("pass_object_size", 1)
0999     .Case("pass_dynamic_object_size", 1)
1000     .Case("preferred_type", 1)
1001     .Case("preserve_all", 1)
1002     .Case("preserve_most", 1)
1003     .Case("preserve_none", true && (T.getArch() == llvm::Triple::aarch64 || T.getArch() == llvm::Triple::aarch64_be || T.getArch() == llvm::Triple::aarch64_32 || T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64) ? 1 : 0)
1004     .Case("riscv_vector_cc", true && (T.getArch() == llvm::Triple::riscv32 || T.getArch() == llvm::Triple::riscv64) ? 1 : 0)
1005     .Case("enforce_read_only_placement", 1)
1006     .Case("release_handle", 1)
1007     .Case("sycl_kernel", 1)
1008     .Case("sycl_kernel_entry_point", 1)
1009     .Case("sycl_special_class", 1)
1010     .Case("sized_by", 1)
1011     .Case("sized_by_or_null", 1)
1012     .Case("speculative_load_hardening", 1)
1013     .Case("suppress", 1)
1014     .Case("swift_async", 1)
1015     .Case("swiftasynccall", 1)
1016     .Case("swift_async_context", 1)
1017     .Case("swift_async_error", 1)
1018     .Case("swiftcall", 1)
1019     .Case("swift_context", 1)
1020     .Case("swift_error_result", 1)
1021     .Case("swift_indirect_result", 1)
1022     .Case("type_tag_for_datatype", 1)
1023     .Case("type_visibility", 1)
1024     .Case("unavailable", 1)
1025     .Case("unlikely", 1)
1026     .Case("unsafe_buffer_usage", 1)
1027     .Case("use_handle", 1)
1028     .Case("ptrauth_vtable_pointer", 1)
1029     .Case("vectorcall", 1)
1030     .Case("weak_import", 1)
1031     .Case("export_name", true && (T.getArch() == llvm::Triple::wasm32 || T.getArch() == llvm::Triple::wasm64) ? 1 : 0)
1032     .Case("import_module", true && (T.getArch() == llvm::Triple::wasm32 || T.getArch() == llvm::Triple::wasm64) ? 1 : 0)
1033     .Case("import_name", true && (T.getArch() == llvm::Triple::wasm32 || T.getArch() == llvm::Triple::wasm64) ? 1 : 0)
1034     .Case("xray_always_instrument", 1)
1035     .Case("xray_never_instrument", 1)
1036     .Case("xray_log_args", 1)
1037     .Default(0);
1038 } else if (ScopeName == "gnu") {
1039   return llvm::StringSwitch<int>(Name)
1040     .Case("interrupt", true && (T.getArch() == llvm::Triple::arm || T.getArch() == llvm::Triple::thumb || T.getArch() == llvm::Triple::armeb || T.getArch() == llvm::Triple::thumbeb) ? 1 : 0)
1041     .Case("interrupt", true && (T.getArch() == llvm::Triple::avr) ? 1 : 0)
1042     .Case("signal", true && (T.getArch() == llvm::Triple::avr) ? 1 : 0)
1043     .Case("alias", 1)
1044     .Case("aligned", 1)
1045     .Case("alloc_align", 1)
1046     .Case("alloc_size", 1)
1047     .Case("always_inline", 1)
1048     .Case("interrupt", true && (T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64) ? 1 : 0)
1049     .Case("no_caller_saved_registers", true && (T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64) ? 1 : 0)
1050     .Case("nocf_check", true && (T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64) ? 1 : 0)
1051     .Case("artificial", 1)
1052     .Case("assume_aligned", 1)
1053     .Case("cdecl", 1)
1054     .Case("cleanup", 1)
1055     .Case("model", true && (T.getArch() == llvm::Triple::loongarch32 || T.getArch() == llvm::Triple::loongarch64) ? 1 : 0)
1056     .Case("cold", 1)
1057     .Case("common", 1)
1058     .Case("const", 1)
1059     .Case("__const", 1)
1060     .Case("constructor", 1)
1061     .Case("dllexport", true && ( Target.getTriple().hasDLLImportExport() ) ? 1 : 0)
1062     .Case("dllimport", true && ( Target.getTriple().hasDLLImportExport() ) ? 1 : 0)
1063     .Case("deprecated", 1)
1064     .Case("destructor", 1)
1065     .Case("error", 1)
1066     .Case("warning", 1)
1067     .Case("fallthrough", 1)
1068     .Case("fastcall", 1)
1069     .Case("flatten", 1)
1070     .Case("format", 1)
1071     .Case("format_arg", 1)
1072     .Case("function_return", true && (T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64) ? 1 : 0)
1073     .Case("gnu_inline", 1)
1074     .Case("hot", 1)
1075     .Case("ifunc", true && ( Target.supportsIFunc() ) ? 1 : 0)
1076     .Case("leaf", 1)
1077     .Case("ms_abi", 1)
1078     .Case("interrupt", true && (T.getArch() == llvm::Triple::msp430) ? 1 : 0)
1079     .Case("ms_struct", 1)
1080     .Case("may_alias", 1)
1081     .Case("micromips", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel) ? 1 : 0)
1082     .Case("mips16", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel) ? 1 : 0)
1083     .Case("interrupt", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel) ? 1 : 0)
1084     .Case("long_call", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel || T.getArch() == llvm::Triple::mips64 || T.getArch() == llvm::Triple::mips64el) ? 1 : 0)
1085     .Case("far", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel || T.getArch() == llvm::Triple::mips64 || T.getArch() == llvm::Triple::mips64el) ? 1 : 0)
1086     .Case("short_call", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel || T.getArch() == llvm::Triple::mips64 || T.getArch() == llvm::Triple::mips64el) ? 1 : 0)
1087     .Case("near", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel || T.getArch() == llvm::Triple::mips64 || T.getArch() == llvm::Triple::mips64el) ? 1 : 0)
1088     .Case("mode", 1)
1089     .Case("naked", 1)
1090     .Case("nocommon", 1)
1091     .Case("nodebug", 1)
1092     .Case("noinline", 1)
1093     .Case("no_instrument_function", 1)
1094     .Case("nomicromips", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel) ? 1 : 0)
1095     .Case("nomips16", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel) ? 1 : 0)
1096     .Case("no_profile_instrument_function", 1)
1097     .Case("no_randomize_layout", 1)
1098     .Case("noreturn", 1)
1099     .Case("no_address_safety_analysis", 1)
1100     .Case("no_sanitize_address", 1)
1101     .Case("no_sanitize_thread", 1)
1102     .Case("no_split_stack", 1)
1103     .Case("no_stack_protector", 1)
1104     .Case("nothrow", 1)
1105     .Case("nonnull", 1)
1106     .Case("packed", 1)
1107     .Case("patchable_function_entry", true && (T.getArch() == llvm::Triple::aarch64 || T.getArch() == llvm::Triple::aarch64_be || T.getArch() == llvm::Triple::loongarch32 || T.getArch() == llvm::Triple::loongarch64 || T.getArch() == llvm::Triple::riscv32 || T.getArch() == llvm::Triple::riscv64 || T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64 || T.getArch() == llvm::Triple::ppc || T.getArch() == llvm::Triple::ppc64) ? 1 : 0)
1108     .Case("pcs", 1)
1109     .Case("pure", 1)
1110     .Case("interrupt", true && (T.getArch() == llvm::Triple::riscv32 || T.getArch() == llvm::Triple::riscv64) ? 1 : 0)
1111     .Case("randomize_layout", 1)
1112     .Case("regcall", 1)
1113     .Case("regparm", 1)
1114     .Case("malloc", 1)
1115     .Case("retain", 1)
1116     .Case("returns_nonnull", 1)
1117     .Case("returns_twice", 1)
1118     .Case("section", 1)
1119     .Case("selectany", 1)
1120     .Case("sentinel", 1)
1121     .Case("stdcall", 1)
1122     .Case("sysv_abi", 1)
1123     .Case("tls_model", 1)
1124     .Case("target", 1)
1125     .Case("target_clones", 1)
1126     .Case("target_version", true && (T.getArch() == llvm::Triple::aarch64 || T.getArch() == llvm::Triple::aarch64_be || T.getArch() == llvm::Triple::aarch64_32 || T.getArch() == llvm::Triple::riscv32 || T.getArch() == llvm::Triple::riscv64) ? 1 : 0)
1127     .Case("thiscall", 1)
1128     .Case("transparent_union", 1)
1129     .Case("unused", 1)
1130     .Case("used", 1)
1131     .Case("vector_size", 1)
1132     .Case("visibility", 1)
1133     .Case("warn_unused", 1)
1134     .Case("warn_unused_result", 1)
1135     .Case("weak", 1)
1136     .Case("weakref", 1)
1137     .Case("force_align_arg_pointer", true && (T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64) ? 1 : 0)
1138     .Case("zero_call_used_regs", 1)
1139     .Default(0);
1140 } else if (ScopeName == "msvc") {
1141   return llvm::StringSwitch<int>(Name)
1142     .Case("noinline", 1)
1143     .Default(0);
1144 } else if (ScopeName == "riscv") {
1145   return llvm::StringSwitch<int>(Name)
1146     .Case("vector_cc", true && (T.getArch() == llvm::Triple::riscv32 || T.getArch() == llvm::Triple::riscv64) ? 1 : 0)
1147     .Default(0);
1148 }
1149 } break;
1150 case AttributeCommonInfo::Syntax::AS_Keyword:
1151 case AttributeCommonInfo::Syntax::AS_ContextSensitiveKeyword:
1152   llvm_unreachable("hasAttribute not supported for keyword");
1153   return 0;
1154 case AttributeCommonInfo::Syntax::AS_Implicit:
1155   llvm_unreachable ("hasAttribute not supported for AS_Implicit");
1156   return 0;
1157 }