| /*===- 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_flat_work_group_size", 1) |
| .Case("amdgpu_num_sgpr", 1) |
| .Case("amdgpu_num_vgpr", 1) |
| .Case("amdgpu_waves_per_eu", 1) |
| .Case("interrupt", (T.getArch() == llvm::Triple::arm || T.getArch() == llvm::Triple::thumb || T.getArch() == llvm::Triple::armeb || T.getArch() == llvm::Triple::thumbeb) ? 1 : 0) |
| .Case("interrupt", (T.getArch() == llvm::Triple::avr) ? 1 : 0) |
| .Case("signal", (T.getArch() == llvm::Triple::avr) ? 1 : 0) |
| .Case("abi_tag", 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("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("alloc_align", 1) |
| .Case("alloc_size", 1) |
| .Case("always_inline", 1) |
| .Case("analyzer_noreturn", 1) |
| .Case("annotate", 1) |
| .Case("interrupt", (T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64) ? 1 : 0) |
| .Case("no_caller_saved_registers", (T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64) ? 1 : 0) |
| .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("convergent", 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.getArch() == llvm::Triple::aarch64) && (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.getArch() == llvm::Triple::aarch64) && (T.getOS() == llvm::Triple::Win32) ? 1 : 0) |
| .Case("deprecated", 1) |
| .Case("destructor", 1) |
| .Case("diagnose_if", 1) |
| .Case("disable_tail_calls", 1) |
| .Case("enable_if", 1) |
| .Case("enum_extensibility", 1) |
| .Case("exclusive_trylock_function", 1) |
| .Case("ext_vector_type", 1) |
| .Case("external_source_symbol", 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("ifunc", 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("micromips", (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel) ? 1 : 0) |
| .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("long_call", (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel || T.getArch() == llvm::Triple::mips64 || T.getArch() == llvm::Triple::mips64el) ? 1 : 0) |
| .Case("far", (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel || T.getArch() == llvm::Triple::mips64 || T.getArch() == llvm::Triple::mips64el) ? 1 : 0) |
| .Case("long_call", (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel || T.getArch() == llvm::Triple::mips64 || T.getArch() == llvm::Triple::mips64el) ? 1 : 0) |
| .Case("far", (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel || T.getArch() == llvm::Triple::mips64 || T.getArch() == llvm::Triple::mips64el) ? 1 : 0) |
| .Case("short_call", (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel || T.getArch() == llvm::Triple::mips64 || T.getArch() == llvm::Triple::mips64el) ? 1 : 0) |
| .Case("near", (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel || T.getArch() == llvm::Triple::mips64 || T.getArch() == llvm::Triple::mips64el) ? 1 : 0) |
| .Case("short_call", (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel || T.getArch() == llvm::Triple::mips64 || T.getArch() == llvm::Triple::mips64el) ? 1 : 0) |
| .Case("near", (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel || T.getArch() == llvm::Triple::mips64 || T.getArch() == llvm::Triple::mips64el) ? 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("noescape", 1) |
| .Case("noinline", 1) |
| .Case("no_instrument_function", 1) |
| .Case("nomicromips", (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel) ? 1 : 0) |
| .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("objc_runtime_visible", 1) |
| .Case("objc_subclassing_restricted", 1) |
| .Case("intel_reqd_sub_group_size", 1) |
| .Case("nosvm", 1) |
| .Case("opencl_unroll_hint", 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("preserve_all", 1) |
| .Case("preserve_most", 1) |
| .Case("pt_guarded_by", 1) |
| .Case("pt_guarded_var", 1) |
| .Case("pure", 1) |
| .Case("regcall", 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("kernel", 1) |
| .Case("reqd_work_group_size", 1) |
| .Case("require_constant_initialization", 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("selectany", 1) |
| .Case("sentinel", 1) |
| .Case("set_typestate", 1) |
| .Case("shared_trylock_function", 1) |
| .Case("stdcall", 1) |
| .Case("swiftcall", 1) |
| .Case("swift_context", 1) |
| .Case("swift_error_result", 1) |
| .Case("swift_indirect_result", 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 || T.getArch() == llvm::Triple::x86_64) ? 1 : 0) |
| .Case("xray_always_instrument", 1) |
| .Case("xray_never_instrument", 1) |
| .Case("xray_always_instrument", 1) |
| .Case("xray_never_instrument", 1) |
| .Case("xray_log_args", 1) |
| .Default(0); |
| case AttrSyntax::Declspec: |
| return llvm::StringSwitch<int>(Name) |
| .Case("align", 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("dllexport", (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) && (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.getArch() == llvm::Triple::aarch64) && (T.getOS() == llvm::Triple::Win32) ? 1 : 0) |
| .Case("deprecated", 1) |
| .Case("empty_bases", (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().getKind() == TargetCXXABI::Microsoft) ? 1 : 0) |
| .Case("layout_version", (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().getKind() == TargetCXXABI::Microsoft) ? 1 : 0) |
| .Case("novtable", (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().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::Microsoft: |
| return llvm::StringSwitch<int>(Name) |
| .Case("uuid", 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) |
| .Case("declare simd", 1) |
| .Case("declare target", 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) |
| .Case("fallthrough", LangOpts.CPlusPlus11 ? 201603 : 0) |
| .Case("fallthrough", LangOpts.CPlusPlus11 ? 201603 : 0) |
| .Case("maybe_unused", LangOpts.CPlusPlus11 ? 201603 : 0) |
| .Case("unused", LangOpts.CPlusPlus11 ? 201603 : 0) |
| .Case("nodiscard", LangOpts.CPlusPlus11 ? 201603 : 0) |
| .Case("warn_unused_result", LangOpts.CPlusPlus11 ? 201603 : 0) |
| .Case("warn_unused_result", LangOpts.CPlusPlus11 ? 201603 : 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("convergent", LangOpts.CPlusPlus11 ? 1 : 0) |
| .Case("disable_tail_calls", LangOpts.CPlusPlus11 ? 1 : 0) |
| .Case("enum_extensibility", LangOpts.CPlusPlus11 ? 1 : 0) |
| .Case("external_source_symbol", LangOpts.CPlusPlus11 ? 1 : 0) |
| .Case("fallthrough", LangOpts.CPlusPlus11 ? 201603 : 0) |
| .Case("internal_linkage", LangOpts.CPlusPlus11 ? 1 : 0) |
| .Case("lto_visibility_public", LangOpts.CPlusPlus11 ? 1 : 0) |
| .Case("noduplicate", LangOpts.CPlusPlus11 ? 1 : 0) |
| .Case("noescape", 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("require_constant_initialization", 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 ? 201603 : 0) |
| .Case("xray_always_instrument", LangOpts.CPlusPlus11 ? 1 : 0) |
| .Case("xray_never_instrument", LangOpts.CPlusPlus11 ? 1 : 0) |
| .Case("xray_always_instrument", LangOpts.CPlusPlus11 ? 1 : 0) |
| .Case("xray_never_instrument", LangOpts.CPlusPlus11 ? 1 : 0) |
| .Case("xray_log_args", LangOpts.CPlusPlus11 ? 1 : 0) |
| .Default(0); |
| } else if (Scope->getName() == "gnu") { |
| return llvm::StringSwitch<int>(Name) |
| .Case("interrupt", (T.getArch() == llvm::Triple::arm || T.getArch() == llvm::Triple::thumb || T.getArch() == llvm::Triple::armeb || T.getArch() == llvm::Triple::thumbeb) && LangOpts.CPlusPlus11 ? 1 : 0) |
| .Case("interrupt", (T.getArch() == llvm::Triple::avr) && LangOpts.CPlusPlus11 ? 1 : 0) |
| .Case("signal", (T.getArch() == llvm::Triple::avr) && LangOpts.CPlusPlus11 ? 1 : 0) |
| .Case("abi_tag", LangOpts.CPlusPlus11 ? 1 : 0) |
| .Case("alias", LangOpts.CPlusPlus11 ? 1 : 0) |
| .Case("aligned", LangOpts.CPlusPlus11 ? 1 : 0) |
| .Case("alloc_align", LangOpts.CPlusPlus11 ? 1 : 0) |
| .Case("alloc_size", LangOpts.CPlusPlus11 ? 1 : 0) |
| .Case("always_inline", LangOpts.CPlusPlus11 ? 1 : 0) |
| .Case("interrupt", (T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64) && LangOpts.CPlusPlus11 ? 1 : 0) |
| .Case("no_caller_saved_registers", (T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64) && 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.getArch() == llvm::Triple::aarch64) && (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.getArch() == llvm::Triple::aarch64) && (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("ifunc", LangOpts.CPlusPlus11 ? 1 : 0) |
| .Case("init_priority", LangOpts.CPlusPlus11 ? 1 : 0) |
| .Case("ms_abi", LangOpts.CPlusPlus11 ? 1 : 0) |
| .Case("interrupt", (T.getArch() == llvm::Triple::msp430) && LangOpts.CPlusPlus11 ? 1 : 0) |
| .Case("ms_struct", LangOpts.CPlusPlus11 ? 1 : 0) |
| .Case("may_alias", LangOpts.CPlusPlus11 ? 1 : 0) |
| .Case("micromips", (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel) && LangOpts.CPlusPlus11 ? 1 : 0) |
| .Case("mips16", (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel) && LangOpts.CPlusPlus11 ? 1 : 0) |
| .Case("interrupt", (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel) && LangOpts.CPlusPlus11 ? 1 : 0) |
| .Case("long_call", (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel || T.getArch() == llvm::Triple::mips64 || T.getArch() == llvm::Triple::mips64el) && LangOpts.CPlusPlus11 ? 1 : 0) |
| .Case("far", (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel || T.getArch() == llvm::Triple::mips64 || T.getArch() == llvm::Triple::mips64el) && LangOpts.CPlusPlus11 ? 1 : 0) |
| .Case("long_call", (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel || T.getArch() == llvm::Triple::mips64 || T.getArch() == llvm::Triple::mips64el) && LangOpts.CPlusPlus11 ? 1 : 0) |
| .Case("far", (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel || T.getArch() == llvm::Triple::mips64 || T.getArch() == llvm::Triple::mips64el) && LangOpts.CPlusPlus11 ? 1 : 0) |
| .Case("short_call", (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel || T.getArch() == llvm::Triple::mips64 || T.getArch() == llvm::Triple::mips64el) && LangOpts.CPlusPlus11 ? 1 : 0) |
| .Case("near", (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel || T.getArch() == llvm::Triple::mips64 || T.getArch() == llvm::Triple::mips64el) && LangOpts.CPlusPlus11 ? 1 : 0) |
| .Case("short_call", (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel || T.getArch() == llvm::Triple::mips64 || T.getArch() == llvm::Triple::mips64el) && LangOpts.CPlusPlus11 ? 1 : 0) |
| .Case("near", (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel || T.getArch() == llvm::Triple::mips64 || T.getArch() == llvm::Triple::mips64el) && 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("nomicromips", (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel) && 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("regcall", 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("selectany", 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 ? 201603 : 0) |
| .Case("used", LangOpts.CPlusPlus11 ? 1 : 0) |
| .Case("vector_size", LangOpts.CPlusPlus11 ? 1 : 0) |
| .Case("visibility", LangOpts.CPlusPlus11 ? 1 : 0) |
| .Case("warn_unused", LangOpts.CPlusPlus11 ? 1 : 0) |
| .Case("warn_unused_result", LangOpts.CPlusPlus11 ? 201603 : 0) |
| .Case("weak", LangOpts.CPlusPlus11 ? 1 : 0) |
| .Case("weakref", LangOpts.CPlusPlus11 ? 1 : 0) |
| .Case("force_align_arg_pointer", (T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64) && LangOpts.CPlusPlus11 ? 1 : 0) |
| .Default(0); |
| } else if (Scope->getName() == "gsl") { |
| return llvm::StringSwitch<int>(Name) |
| .Case("suppress", LangOpts.CPlusPlus11 ? 1 : 0) |
| .Default(0); |
| } |
| } break; |
| case AttrSyntax::C: { |
| if (!Scope || Scope->getName() == "") { |
| return llvm::StringSwitch<int>(Name) |
| .Case("deprecated", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) |
| .Case("fallthrough", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) |
| .Case("maybe_unused", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) |
| .Case("nodiscard", LangOpts.DoubleSquareBracketAttributes ? 1 : 0) |
| .Default(0); |
| } |
| } break; |
| } |