/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
|*                                                                            *|
|* Code to implement the __has_attribute logic                                *|
|*                                                                            *|
|* Automatically generated file, do not edit!                                 *|
|*                                                                            *|
\*===----------------------------------------------------------------------===*/

const llvm::Triple &T = Target.getTriple();
switch (Syntax) {
case AttrSyntax::GNU:
  return llvm::StringSwitch<int>(Name)
    .Case("amdgpu_num_sgpr", 1)
    .Case("amdgpu_num_vgpr", 1)
    .Case("interrupt", (T.getArch() == llvm::Triple::arm || T.getArch() == llvm::Triple::thumb) ? 1 : 0)
    .Case("acquire_capability", 1)
    .Case("acquire_shared_capability", 1)
    .Case("exclusive_lock_function", 1)
    .Case("shared_lock_function", 1)
    .Case("acquire_capability", 1)
    .Case("acquire_shared_capability", 1)
    .Case("exclusive_lock_function", 1)
    .Case("shared_lock_function", 1)
    .Case("acquire_capability", 1)
    .Case("acquire_shared_capability", 1)
    .Case("exclusive_lock_function", 1)
    .Case("shared_lock_function", 1)
    .Case("acquire_capability", 1)
    .Case("acquire_shared_capability", 1)
    .Case("exclusive_lock_function", 1)
    .Case("shared_lock_function", 1)
    .Case("acquired_after", 1)
    .Case("acquired_before", 1)
    .Case("address_space", 1)
    .Case("alias", 1)
    .Case("align_value", 1)
    .Case("aligned", 1)
    .Case("always_inline", 1)
    .Case("analyzer_noreturn", 1)
    .Case("annotate", 1)
    .Case("objc_arc_weak_reference_unavailable", 1)
    .Case("argument_with_type_tag", 1)
    .Case("pointer_with_type_tag", 1)
    .Case("argument_with_type_tag", 1)
    .Case("pointer_with_type_tag", 1)
    .Case("assert_capability", 1)
    .Case("assert_shared_capability", 1)
    .Case("assert_capability", 1)
    .Case("assert_shared_capability", 1)
    .Case("assert_exclusive_lock", 1)
    .Case("assert_shared_lock", 1)
    .Case("assume_aligned", 1)
    .Case("availability", 1)
    .Case("blocks", 1)
    .Case("bounded", 1)
    .Case("cdecl", 1)
    .Case("cf_audited_transfer", 1)
    .Case("cf_consumed", 1)
    .Case("cf_returns_not_retained", 1)
    .Case("cf_returns_retained", 1)
    .Case("cf_unknown_transfer", 1)
    .Case("constant", 1)
    .Case("cudart_builtin", 1)
    .Case("device", 1)
    .Case("device_builtin", 1)
    .Case("device_builtin_surface_type", 1)
    .Case("device_builtin_texture_type", 1)
    .Case("global", 1)
    .Case("host", 1)
    .Case("launch_bounds", 1)
    .Case("shared", 1)
    .Case("callable_when", 1)
    .Case("capability", 1)
    .Case("shared_capability", 1)
    .Case("capability", 1)
    .Case("shared_capability", 1)
    .Case("carries_dependency", 1)
    .Case("cleanup", 1)
    .Case("cold", 1)
    .Case("common", 1)
    .Case("const", 1)
    .Case("__const", 1)
    .Case("const", 1)
    .Case("__const", 1)
    .Case("constructor", 1)
    .Case("consumable", 1)
    .Case("consumable_auto_cast_state", 1)
    .Case("consumable_set_state_on_read", 1)
    .Case("dllexport", (T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64 || T.getArch() == llvm::Triple::arm || T.getArch() == llvm::Triple::thumb) && (T.getOS() == llvm::Triple::Win32) ? 1 : 0)
    .Case("dllimport", (T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64 || T.getArch() == llvm::Triple::arm || T.getArch() == llvm::Triple::thumb) && (T.getOS() == llvm::Triple::Win32) ? 1 : 0)
    .Case("deprecated", 1)
    .Case("destructor", 1)
    .Case("disable_tail_calls", 1)
    .Case("enable_if", 1)
    .Case("exclusive_trylock_function", 1)
    .Case("ext_vector_type", 1)
    .Case("fastcall", 1)
    .Case("flag_enum", 1)
    .Case("flatten", 1)
    .Case("format", 1)
    .Case("format_arg", 1)
    .Case("gnu_inline", 1)
    .Case("guarded_by", 1)
    .Case("guarded_var", 1)
    .Case("hot", 1)
    .Case("ibaction", 1)
    .Case("iboutlet", 1)
    .Case("iboutletcollection", 1)
    .Case("init_priority", 1)
    .Case("intel_ocl_bicc", 1)
    .Case("internal_linkage", 1)
    .Case("lock_returned", 1)
    .Case("lockable", 1)
    .Case("locks_excluded", 1)
    .Case("ms_abi", 1)
    .Case("interrupt", (T.getArch() == llvm::Triple::msp430) ? 1 : 0)
    .Case("ms_struct", 1)
    .Case("may_alias", 1)
    .Case("minsize", 1)
    .Case("mips16", (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel) ? 1 : 0)
    .Case("interrupt", (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel) ? 1 : 0)
    .Case("mode", 1)
    .Case("ns_consumed", 1)
    .Case("ns_consumes_self", 1)
    .Case("ns_returns_autoreleased", 1)
    .Case("ns_returns_not_retained", 1)
    .Case("ns_returns_retained", 1)
    .Case("naked", 1)
    .Case("neon_polyvector_type", 1)
    .Case("neon_vector_type", 1)
    .Case("nocommon", 1)
    .Case("nodebug", 1)
    .Case("noduplicate", 1)
    .Case("noinline", 1)
    .Case("no_instrument_function", 1)
    .Case("nomips16", (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel) ? 1 : 0)
    .Case("noreturn", 1)
    .Case("no_sanitize", 1)
    .Case("no_address_safety_analysis", 1)
    .Case("no_sanitize_address", 1)
    .Case("no_sanitize_thread", 1)
    .Case("no_sanitize_memory", 1)
    .Case("no_address_safety_analysis", 1)
    .Case("no_sanitize_address", 1)
    .Case("no_sanitize_thread", 1)
    .Case("no_sanitize_memory", 1)
    .Case("no_address_safety_analysis", 1)
    .Case("no_sanitize_address", 1)
    .Case("no_sanitize_thread", 1)
    .Case("no_sanitize_memory", 1)
    .Case("no_address_safety_analysis", 1)
    .Case("no_sanitize_address", 1)
    .Case("no_sanitize_thread", 1)
    .Case("no_sanitize_memory", 1)
    .Case("no_split_stack", 1)
    .Case("no_thread_safety_analysis", 1)
    .Case("nothrow", 1)
    .Case("nonnull", 1)
    .Case("not_tail_called", 1)
    .Case("nv_weak", 1)
    .Case("objc_boxable", 1)
    .Case("objc_bridge", 1)
    .Case("objc_bridge_mutable", 1)
    .Case("objc_bridge_related", 1)
    .Case("objc_designated_initializer", 1)
    .Case("objc_exception", 1)
    .Case("objc_protocol_requires_explicit_implementation", 1)
    .Case("objc_gc", 1)
    .Case("objc_independent_class", 1)
    .Case("objc_method_family", 1)
    .Case("NSObject", 1)
    .Case("objc_ownership", 1)
    .Case("objc_precise_lifetime", 1)
    .Case("objc_requires_property_definitions", 1)
    .Case("objc_requires_super", 1)
    .Case("objc_returns_inner_pointer", 1)
    .Case("objc_root_class", 1)
    .Case("objc_runtime_name", 1)
    .Case("optnone", 1)
    .Case("overloadable", 1)
    .Case("ownership_holds", 1)
    .Case("ownership_returns", 1)
    .Case("ownership_takes", 1)
    .Case("ownership_holds", 1)
    .Case("ownership_returns", 1)
    .Case("ownership_takes", 1)
    .Case("ownership_holds", 1)
    .Case("ownership_returns", 1)
    .Case("ownership_takes", 1)
    .Case("packed", 1)
    .Case("param_typestate", 1)
    .Case("pascal", 1)
    .Case("pass_object_size", 1)
    .Case("pcs", 1)
    .Case("pt_guarded_by", 1)
    .Case("pt_guarded_var", 1)
    .Case("pure", 1)
    .Case("regparm", 1)
    .Case("release_capability", 1)
    .Case("release_shared_capability", 1)
    .Case("release_generic_capability", 1)
    .Case("unlock_function", 1)
    .Case("release_capability", 1)
    .Case("release_shared_capability", 1)
    .Case("release_generic_capability", 1)
    .Case("unlock_function", 1)
    .Case("release_capability", 1)
    .Case("release_shared_capability", 1)
    .Case("release_generic_capability", 1)
    .Case("unlock_function", 1)
    .Case("release_capability", 1)
    .Case("release_shared_capability", 1)
    .Case("release_generic_capability", 1)
    .Case("unlock_function", 1)
    .Case("reqd_work_group_size", 1)
    .Case("requires_capability", 1)
    .Case("exclusive_locks_required", 1)
    .Case("requires_shared_capability", 1)
    .Case("shared_locks_required", 1)
    .Case("requires_capability", 1)
    .Case("exclusive_locks_required", 1)
    .Case("requires_shared_capability", 1)
    .Case("shared_locks_required", 1)
    .Case("requires_capability", 1)
    .Case("exclusive_locks_required", 1)
    .Case("requires_shared_capability", 1)
    .Case("shared_locks_required", 1)
    .Case("requires_capability", 1)
    .Case("exclusive_locks_required", 1)
    .Case("requires_shared_capability", 1)
    .Case("shared_locks_required", 1)
    .Case("malloc", 1)
    .Case("return_typestate", 1)
    .Case("returns_nonnull", 1)
    .Case("returns_twice", 1)
    .Case("scoped_lockable", 1)
    .Case("section", 1)
    .Case("sentinel", 1)
    .Case("set_typestate", 1)
    .Case("shared_trylock_function", 1)
    .Case("stdcall", 1)
    .Case("sysv_abi", 1)
    .Case("tls_model", 1)
    .Case("target", 1)
    .Case("test_typestate", 1)
    .Case("thiscall", 1)
    .Case("transparent_union", 1)
    .Case("try_acquire_capability", 1)
    .Case("try_acquire_shared_capability", 1)
    .Case("try_acquire_capability", 1)
    .Case("try_acquire_shared_capability", 1)
    .Case("type_tag_for_datatype", 1)
    .Case("type_visibility", 1)
    .Case("unavailable", 1)
    .Case("unused", 1)
    .Case("used", 1)
    .Case("vecreturn", 1)
    .Case("vec_type_hint", 1)
    .Case("vectorcall", 1)
    .Case("vector_size", 1)
    .Case("visibility", 1)
    .Case("warn_unused", 1)
    .Case("warn_unused_result", 1)
    .Case("weak", 1)
    .Case("weak_import", 1)
    .Case("weakref", 1)
    .Case("work_group_size_hint", 1)
    .Case("force_align_arg_pointer", (T.getArch() == llvm::Triple::x86) ? 1 : 0)
    .Default(0);
case AttrSyntax::Declspec:
  return llvm::StringSwitch<int>(Name)
    .Case("align", 1)
    .Case("dllexport", (T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64 || T.getArch() == llvm::Triple::arm || T.getArch() == llvm::Triple::thumb) && (T.getOS() == llvm::Triple::Win32) ? 1 : 0)
    .Case("dllimport", (T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64 || T.getArch() == llvm::Triple::arm || T.getArch() == llvm::Triple::thumb) && (T.getOS() == llvm::Triple::Win32) ? 1 : 0)
    .Case("deprecated", 1)
    .Case("novtable", (T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64 || T.getArch() == llvm::Triple::arm || T.getArch() == llvm::Triple::thumb) && (Target.getCXXABI().getKind() == TargetCXXABI::Microsoft) ? 1 : 0)
    .Case("naked", 1)
    .Case("noalias", 1)
    .Case("noinline", 1)
    .Case("noreturn", 1)
    .Case("nothrow", 1)
    .Case("restrict", 1)
    .Case("allocate", 1)
    .Case("selectany", 1)
    .Case("thread", 1)
    .Case("uuid", 1)
    .Case("property", 1)
    .Default(0);
case AttrSyntax::Pragma:
  return llvm::StringSwitch<int>(Name)
    .Case("init_seg", 1)
    .Case("loop", 1)
    .Case("unroll", 1)
    .Case("nounroll", 1)
    .Case("loop", 1)
    .Case("unroll", 1)
    .Case("nounroll", 1)
    .Case("loop", 1)
    .Case("unroll", 1)
    .Case("nounroll", 1)
    .Default(0);
case AttrSyntax::CXX: {
if (!Scope || Scope->getName() == "") {
  return llvm::StringSwitch<int>(Name)
    .Case("noreturn", LangOpts.CPlusPlus11 ? 200809 : 0)
    .Case("carries_dependency", LangOpts.CPlusPlus11 ? 200809 : 0)
    .Case("deprecated", LangOpts.CPlusPlus11 ? 201309 : 0)
    .Case("deprecated", LangOpts.CPlusPlus11 ? 201309 : 0)
    .Default(0);
} else if (Scope->getName() == "clang") {
  return llvm::StringSwitch<int>(Name)
    .Case("acquire_capability", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("acquire_shared_capability", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("acquire_capability", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("acquire_shared_capability", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("assert_capability", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("assert_shared_capability", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("assert_capability", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("assert_shared_capability", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("capability", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("shared_capability", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("capability", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("shared_capability", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("disable_tail_calls", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("fallthrough", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("internal_linkage", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("noduplicate", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("no_sanitize", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("not_tail_called", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("optnone", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("release_capability", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("release_shared_capability", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("release_generic_capability", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("release_capability", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("release_shared_capability", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("release_generic_capability", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("release_capability", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("release_shared_capability", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("release_generic_capability", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("requires_capability", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("requires_shared_capability", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("requires_capability", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("requires_shared_capability", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("try_acquire_capability", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("try_acquire_shared_capability", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("try_acquire_capability", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("try_acquire_shared_capability", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("type_visibility", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("warn_unused_result", LangOpts.CPlusPlus11 ? 1 : 0)
    .Default(0);
} else if (Scope->getName() == "gnu") {
  return llvm::StringSwitch<int>(Name)
    .Case("alias", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("aligned", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("always_inline", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("assume_aligned", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("cdecl", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("cleanup", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("cold", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("common", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("const", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("__const", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("const", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("__const", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("constructor", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("dllexport", (T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64 || T.getArch() == llvm::Triple::arm || T.getArch() == llvm::Triple::thumb) && (T.getOS() == llvm::Triple::Win32) && LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("dllimport", (T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64 || T.getArch() == llvm::Triple::arm || T.getArch() == llvm::Triple::thumb) && (T.getOS() == llvm::Triple::Win32) && LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("deprecated", LangOpts.CPlusPlus11 ? 201309 : 0)
    .Case("destructor", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("fastcall", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("flatten", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("format", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("format_arg", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("gnu_inline", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("hot", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("ms_abi", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("ms_struct", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("may_alias", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("mips16", (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel) && LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("mode", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("naked", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("nocommon", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("nodebug", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("noinline", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("no_instrument_function", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("nomips16", (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel) && LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("noreturn", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("no_address_safety_analysis", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("no_sanitize_address", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("no_sanitize_thread", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("no_address_safety_analysis", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("no_sanitize_address", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("no_sanitize_thread", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("no_address_safety_analysis", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("no_sanitize_address", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("no_sanitize_thread", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("no_split_stack", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("nothrow", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("nonnull", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("packed", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("pcs", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("pure", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("regparm", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("malloc", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("returns_nonnull", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("returns_twice", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("section", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("sentinel", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("stdcall", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("sysv_abi", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("tls_model", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("target", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("thiscall", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("transparent_union", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("unused", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("used", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("vector_size", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("visibility", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("warn_unused_result", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("weak", LangOpts.CPlusPlus11 ? 1 : 0)
    .Case("weakref", LangOpts.CPlusPlus11 ? 1 : 0)
    .Default(0);
}
}
}
