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 }