Advertisement
Guest User

Untitled

a guest
May 21st, 2025
30
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 53.47 KB | None | 0 0
  1. /*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
  2. |* *|
  3. |* Code to implement the __has_attribute logic *|
  4. |* *|
  5. |* Automatically generated file, do not edit! *|
  6. |* From: Attr.td *|
  7. |* *|
  8. \*===----------------------------------------------------------------------===*/
  9.  
  10. const llvm::Triple &T = Target.getTriple();
  11. switch (Syntax) {
  12. case AttributeCommonInfo::Syntax::AS_GNU:
  13. return llvm::StringSwitch<int>(Name)
  14. .Case("aarch64_sve_pcs", 1)
  15. .Case("aarch64_vector_pcs", 1)
  16. .Case("amdgpu_flat_work_group_size", 1)
  17. .Case("amdgpu_kernel", 1)
  18. .Case("amdgpu_max_num_work_groups", 1)
  19. .Case("amdgpu_num_sgpr", 1)
  20. .Case("amdgpu_num_vgpr", 1)
  21. .Case("amdgpu_waves_per_eu", 1)
  22. .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)
  23. .Case("interrupt_save_fp", true && (T.getArch() == llvm::Triple::arm || T.getArch() == llvm::Triple::thumb || T.getArch() == llvm::Triple::armeb || T.getArch() == llvm::Triple::thumbeb) ? 1 : 0)
  24. .Case("interrupt", true && (T.getArch() == llvm::Triple::avr) ? 1 : 0)
  25. .Case("signal", true && (T.getArch() == llvm::Triple::avr) ? 1 : 0)
  26. .Case("abi_tag", 1)
  27. .Case("acquire_capability", 1)
  28. .Case("acquire_shared_capability", 1)
  29. .Case("exclusive_lock_function", 1)
  30. .Case("shared_lock_function", 1)
  31. .Case("acquire_handle", 1)
  32. .Case("acquired_after", 1)
  33. .Case("acquired_before", 1)
  34. .Case("address_space", 1)
  35. .Case("alias", 1)
  36. .Case("align_value", 1)
  37. .Case("aligned", 1)
  38. .Case("alloc_align", 1)
  39. .Case("alloc_size", 1)
  40. .Case("allocating", 1)
  41. .Case("always_destroy", 1)
  42. .Case("always_inline", 1)
  43. .Case("analyzer_noreturn", 1)
  44. .Case("annotate", 1)
  45. .Case("interrupt", true && (T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64) ? 1 : 0)
  46. .Case("no_caller_saved_registers", true && (T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64) ? 1 : 0)
  47. .Case("nocf_check", true && (T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64) ? 1 : 0)
  48. .Case("objc_arc_weak_reference_unavailable", 1)
  49. .Case("argument_with_type_tag", 1)
  50. .Case("pointer_with_type_tag", 1)
  51. .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)
  52. .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)
  53. .Case("arm_sve_vector_bits", 1)
  54. .Case("artificial", 1)
  55. .Case("assert_capability", 1)
  56. .Case("assert_shared_capability", 1)
  57. .Case("assert_exclusive_lock", 1)
  58. .Case("assert_shared_lock", 1)
  59. .Case("assume_aligned", 1)
  60. .Case("atomic", 1)
  61. .Case("availability", 1)
  62. .Case("available_only_in_default_eval_method", 1)
  63. .Case("bpf_fastcall", true && (T.getArch() == llvm::Triple::bpfel || T.getArch() == llvm::Triple::bpfeb) ? 1 : 0)
  64. .Case("preserve_access_index", true && (T.getArch() == llvm::Triple::bpfel || T.getArch() == llvm::Triple::bpfeb) ? 1 : 0)
  65. .Case("preserve_static_offset", true && (T.getArch() == llvm::Triple::bpfel || T.getArch() == llvm::Triple::bpfeb) ? 1 : 0)
  66. .Case("btf_decl_tag", 1)
  67. .Case("btf_type_tag", 1)
  68. .Case("blocking", 1)
  69. .Case("blocks", 1)
  70. .Case("bounded", 1)
  71. .Case("clang_builtin_alias", 1)
  72. .Case("cdecl", 1)
  73. .Case("cf_audited_transfer", 1)
  74. .Case("cf_consumed", 1)
  75. .Case("guard", true && (T.getOS() == llvm::Triple::Win32) ? 1 : 0)
  76. .Case("cfi_canonical_jump_table", 1)
  77. .Case("cf_returns_not_retained", 1)
  78. .Case("cf_returns_retained", 1)
  79. .Case("cf_unknown_transfer", 1)
  80. .Case("cpu_dispatch", 1)
  81. .Case("cpu_specific", 1)
  82. .Case("constant", 1)
  83. .Case("cudart_builtin", 1)
  84. .Case("device", 1)
  85. .Case("device_builtin", 1)
  86. .Case("device_builtin_surface_type", 1)
  87. .Case("device_builtin_texture_type", 1)
  88. .Case("global", 1)
  89. .Case("grid_constant", 1)
  90. .Case("host", 1)
  91. .Case("launch_bounds", 1)
  92. .Case("shared", 1)
  93. .Case("assume", 1)
  94. .Case("callable_when", 1)
  95. .Case("callback", 1)
  96. .Case("called_once", 1)
  97. .Case("capability", 1)
  98. .Case("shared_capability", 1)
  99. .Case("carries_dependency", 1)
  100. .Case("cleanup", 1)
  101. .Case("clspv_libclc_builtin", 1)
  102. .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)
  103. .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)
  104. .Case("code_align", 1)
  105. .Case("model", true && (T.getArch() == llvm::Triple::loongarch32 || T.getArch() == llvm::Triple::loongarch64 || T.getArch() == llvm::Triple::x86_64 || T.getArch() == llvm::Triple::nvptx || T.getArch() == llvm::Triple::nvptx64 || T.getArch() == llvm::Triple::amdgcn || T.getArch() == llvm::Triple::r600 || T.getArch() == llvm::Triple::spirv || T.getArch() == llvm::Triple::spirv32 || T.getArch() == llvm::Triple::spirv64) ? 1 : 0)
  106. .Case("cold", 1)
  107. .Case("common", 1)
  108. .Case("const", 1)
  109. .Case("__const", 1)
  110. .Case("require_constant_initialization", 1)
  111. .Case("constructor", 1)
  112. .Case("consumable", 1)
  113. .Case("consumable_auto_cast_state", 1)
  114. .Case("consumable_set_state_on_read", 1)
  115. .Case("convergent", 1)
  116. .Case("coro_await_elidable", 1)
  117. .Case("coro_await_elidable_argument", 1)
  118. .Case("coro_disable_lifetimebound", 1)
  119. .Case("coro_lifetimebound", 1)
  120. .Case("coro_only_destroy_when_complete", 1)
  121. .Case("coro_return_type", 1)
  122. .Case("coro_wrapper", 1)
  123. .Case("counted_by", 1)
  124. .Case("counted_by_or_null", 1)
  125. .Case("dllexport", true && ( Target.getTriple().hasDLLImportExport() ) ? 1 : 0)
  126. .Case("dllimport", true && ( Target.getTriple().hasDLLImportExport() ) ? 1 : 0)
  127. .Case("deprecated", 1)
  128. .Case("destructor", 1)
  129. .Case("diagnose_as_builtin", 1)
  130. .Case("diagnose_if", 1)
  131. .Case("disable_sanitizer_instrumentation", 1)
  132. .Case("disable_tail_calls", 1)
  133. .Case("enable_if", 1)
  134. .Case("enforce_tcb", 1)
  135. .Case("enforce_tcb_leaf", 1)
  136. .Case("enum_extensibility", 1)
  137. .Case("error", 1)
  138. .Case("warning", 1)
  139. .Case("exclude_from_explicit_instantiation", 1)
  140. .Case("require_explicit_initialization", 1)
  141. .Case("ext_vector_type", 1)
  142. .Case("external_source_symbol", 20230206)
  143. .Case("fallthrough", 1)
  144. .Case("fastcall", 1)
  145. .Case("flag_enum", 1)
  146. .Case("flatten", 1)
  147. .Case("format", 1)
  148. .Case("format_arg", 1)
  149. .Case("format_matches", 1)
  150. .Case("function_return", true && (T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64) ? 1 : 0)
  151. .Case("gnu_inline", 1)
  152. .Case("guarded_by", 1)
  153. .Case("guarded_var", 1)
  154. .Case("managed", 1)
  155. .Case("hot", 1)
  156. .Case("hybrid_patchable", true && ( Target.getTriple().isWindowsArm64EC() ) ? 1 : 0)
  157. .Case("ibaction", 1)
  158. .Case("iboutlet", 1)
  159. .Case("iboutletcollection", 1)
  160. .Case("ifunc", true && ( Target.supportsIFunc() ) ? 1 : 0)
  161. .Case("init_priority", true && ( !Target.getTriple().isOSzOS() ) ? 1 : 0)
  162. .Case("intel_ocl_bicc", 1)
  163. .Case("internal_linkage", 1)
  164. .Case("lto_visibility_public", 1)
  165. .Case("leaf", 1)
  166. .Case("lifetimebound", 1)
  167. .Case("lifetime_capture_by", 1)
  168. .Case("loader_uninitialized", 1)
  169. .Case("lock_returned", 1)
  170. .Case("lockable", 1)
  171. .Case("locks_excluded", 1)
  172. .Case("interrupt", true && (T.getArch() == llvm::Triple::m68k) ? 1 : 0)
  173. .Case("m68k_rtd", 1)
  174. .Case("mig_server_routine", 1)
  175. .Case("ms_abi", 1)
  176. .Case("interrupt", true && (T.getArch() == llvm::Triple::msp430) ? 1 : 0)
  177. .Case("ms_struct", 1)
  178. .Case("matrix_type", 1)
  179. .Case("may_alias", 1)
  180. .Case("maybe_undef", 1)
  181. .Case("micromips", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel) ? 1 : 0)
  182. .Case("minsize", 1)
  183. .Case("min_vector_width", 1)
  184. .Case("mips16", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel) ? 1 : 0)
  185. .Case("interrupt", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel) ? 1 : 0)
  186. .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)
  187. .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)
  188. .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)
  189. .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)
  190. .Case("mode", 1)
  191. .Case("musttail", 1)
  192. .Case("ns_consumed", 1)
  193. .Case("ns_consumes_self", 1)
  194. .Case("ns_error_domain", 1)
  195. .Case("ns_returns_autoreleased", 1)
  196. .Case("ns_returns_not_retained", 1)
  197. .Case("ns_returns_retained", 1)
  198. .Case("nvptx_kernel", true && (T.getArch() == llvm::Triple::nvptx || T.getArch() == llvm::Triple::nvptx64) ? 1 : 0)
  199. .Case("naked", 1)
  200. .Case("neon_polyvector_type", 1)
  201. .Case("neon_vector_type", 1)
  202. .Case("no_builtin", 1)
  203. .Case("nocommon", 1)
  204. .Case("noconvergent", 1)
  205. .Case("nodebug", 1)
  206. .Case("noderef", 1)
  207. .Case("no_destroy", 1)
  208. .Case("noduplicate", 1)
  209. .Case("noescape", 1)
  210. .Case("noinline", 1)
  211. .Case("no_instrument_function", 1)
  212. .Case("nomerge", 1)
  213. .Case("nomicromips", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel) ? 1 : 0)
  214. .Case("nomips16", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel) ? 1 : 0)
  215. .Case("no_profile_instrument_function", 1)
  216. .Case("no_randomize_layout", 1)
  217. .Case("noreturn", 1)
  218. .Case("no_sanitize", 1)
  219. .Case("no_address_safety_analysis", 1)
  220. .Case("no_sanitize_address", 1)
  221. .Case("no_sanitize_thread", 1)
  222. .Case("no_sanitize_memory", 1)
  223. .Case("no_specializations", 1)
  224. .Case("no_speculative_load_hardening", 1)
  225. .Case("no_split_stack", 1)
  226. .Case("no_stack_protector", 1)
  227. .Case("no_thread_safety_analysis", 1)
  228. .Case("nothrow", 1)
  229. .Case("nouwtable", 1)
  230. .Case("nonallocating", 1)
  231. .Case("nonblocking", 1)
  232. .Case("nonnull", 1)
  233. .Case("nonstring", 1)
  234. .Case("not_tail_called", 1)
  235. .Case("nv_weak", 1)
  236. .Case("os_consumed", 1)
  237. .Case("os_consumes_this", 1)
  238. .Case("os_returns_not_retained", 1)
  239. .Case("os_returns_retained", 1)
  240. .Case("os_returns_retained_on_non_zero", 1)
  241. .Case("os_returns_retained_on_zero", 1)
  242. .Case("objc_boxable", 1)
  243. .Case("objc_bridge", 1)
  244. .Case("objc_bridge_mutable", 1)
  245. .Case("objc_bridge_related", 1)
  246. .Case("objc_class_stub", 1)
  247. .Case("objc_designated_initializer", 1)
  248. .Case("objc_direct", 1)
  249. .Case("objc_direct_members", 1)
  250. .Case("objc_exception", 1)
  251. .Case("objc_protocol_requires_explicit_implementation", 1)
  252. .Case("objc_externally_retained", 1)
  253. .Case("objc_gc", 1)
  254. .Case("objc_independent_class", 1)
  255. .Case("objc_method_family", 1)
  256. .Case("NSObject", 1)
  257. .Case("objc_nonlazy_class", 1)
  258. .Case("objc_non_runtime_protocol", 1)
  259. .Case("objc_ownership", 1)
  260. .Case("objc_precise_lifetime", 1)
  261. .Case("objc_requires_property_definitions", 1)
  262. .Case("objc_requires_super", 1)
  263. .Case("objc_returns_inner_pointer", 1)
  264. .Case("objc_root_class", 1)
  265. .Case("objc_runtime_name", 1)
  266. .Case("objc_runtime_visible", 1)
  267. .Case("objc_subclassing_restricted", 1)
  268. .Case("opencl_constant", 1)
  269. .Case("opencl_generic", 1)
  270. .Case("opencl_global", 1)
  271. .Case("opencl_global_device", 1)
  272. .Case("opencl_global_host", 1)
  273. .Case("intel_reqd_sub_group_size", 1)
  274. .Case("opencl_local", 1)
  275. .Case("nosvm", 1)
  276. .Case("opencl_private", 1)
  277. .Case("opencl_unroll_hint", 1)
  278. .Case("optnone", 1)
  279. .Case("overloadable", 1)
  280. .Case("ownership_holds", 1)
  281. .Case("ownership_returns", 1)
  282. .Case("ownership_takes", 1)
  283. .Case("packed", 1)
  284. .Case("param_typestate", 1)
  285. .Case("pascal", 1)
  286. .Case("pass_object_size", 1)
  287. .Case("pass_dynamic_object_size", 1)
  288. .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)
  289. .Case("pcs", 1)
  290. .Case("preferred_name", 1)
  291. .Case("preferred_type", 1)
  292. .Case("preserve_all", 1)
  293. .Case("preserve_most", 1)
  294. .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)
  295. .Case("pt_guarded_by", 1)
  296. .Case("pt_guarded_var", 1)
  297. .Case("pure", 1)
  298. .Case("interrupt", true && (T.getArch() == llvm::Triple::riscv32 || T.getArch() == llvm::Triple::riscv64) ? 1 : 0)
  299. .Case("riscv_rvv_vector_bits", 1)
  300. .Case("riscv_vls_cc", true && (T.getArch() == llvm::Triple::riscv32 || T.getArch() == llvm::Triple::riscv64) ? 1 : 0)
  301. .Case("riscv_vector_cc", true && (T.getArch() == llvm::Triple::riscv32 || T.getArch() == llvm::Triple::riscv64) ? 1 : 0)
  302. .Case("randomize_layout", 1)
  303. .Case("enforce_read_only_placement", 1)
  304. .Case("regcall", 1)
  305. .Case("regparm", 1)
  306. .Case("reinitializes", 1)
  307. .Case("release_capability", 1)
  308. .Case("release_shared_capability", 1)
  309. .Case("release_generic_capability", 1)
  310. .Case("unlock_function", 1)
  311. .Case("release_handle", 1)
  312. .Case("reqd_work_group_size", 1)
  313. .Case("requires_capability", 1)
  314. .Case("exclusive_locks_required", 1)
  315. .Case("requires_shared_capability", 1)
  316. .Case("shared_locks_required", 1)
  317. .Case("malloc", 1)
  318. .Case("retain", 1)
  319. .Case("return_typestate", 1)
  320. .Case("returns_nonnull", 1)
  321. .Case("returns_twice", 1)
  322. .Case("sycl_kernel", 1)
  323. .Case("sycl_kernel_entry_point", 1)
  324. .Case("sycl_special_class", 1)
  325. .Case("scoped_lockable", 1)
  326. .Case("section", 1)
  327. .Case("selectany", 1)
  328. .Case("sentinel", 1)
  329. .Case("set_typestate", 1)
  330. .Case("sized_by", 1)
  331. .Case("sized_by_or_null", 1)
  332. .Case("speculative_load_hardening", 1)
  333. .Case("standalone_debug", 1)
  334. .Case("stdcall", 1)
  335. .Case("suppress", 1)
  336. .Case("swift_async", 1)
  337. .Case("swiftasynccall", 1)
  338. .Case("swift_async_context", 1)
  339. .Case("swift_async_error", 1)
  340. .Case("swift_async_name", 1)
  341. .Case("swift_attr", 1)
  342. .Case("swift_bridge", 1)
  343. .Case("swift_bridged_typedef", 1)
  344. .Case("swiftcall", 1)
  345. .Case("swift_context", 1)
  346. .Case("swift_error", 1)
  347. .Case("swift_error_result", 1)
  348. .Case("swift_indirect_result", 1)
  349. .Case("swift_name", 1)
  350. .Case("swift_newtype", 1)
  351. .Case("swift_wrapper", 1)
  352. .Case("swift_objc_members", 1)
  353. .Case("swift_private", 1)
  354. .Case("sysv_abi", 1)
  355. .Case("tls_model", 1)
  356. .Case("target", 1)
  357. .Case("target_clones", 1)
  358. .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)
  359. .Case("test_typestate", 1)
  360. .Case("thiscall", 1)
  361. .Case("transparent_union", 1)
  362. .Case("trivial_abi", 1)
  363. .Case("try_acquire_capability", 1)
  364. .Case("try_acquire_shared_capability", 1)
  365. .Case("exclusive_trylock_function", 1)
  366. .Case("shared_trylock_function", 1)
  367. .Case("type_tag_for_datatype", 1)
  368. .Case("type_visibility", 1)
  369. .Case("unavailable", 1)
  370. .Case("uninitialized", 1)
  371. .Case("unsafe_buffer_usage", 1)
  372. .Case("unused", 1)
  373. .Case("use_handle", 1)
  374. .Case("used", 1)
  375. .Case("using_if_exists", 1)
  376. .Case("ptrauth_vtable_pointer", 1)
  377. .Case("vecreturn", 1)
  378. .Case("vec_type_hint", 1)
  379. .Case("vectorcall", 1)
  380. .Case("vector_size", 1)
  381. .Case("visibility", 1)
  382. .Case("warn_unused", 1)
  383. .Case("warn_unused_result", 1)
  384. .Case("weak", 1)
  385. .Case("weak_import", 1)
  386. .Case("weakref", 1)
  387. .Case("export_name", true && (T.getArch() == llvm::Triple::wasm32 || T.getArch() == llvm::Triple::wasm64) ? 1 : 0)
  388. .Case("import_module", true && (T.getArch() == llvm::Triple::wasm32 || T.getArch() == llvm::Triple::wasm64) ? 1 : 0)
  389. .Case("import_name", true && (T.getArch() == llvm::Triple::wasm32 || T.getArch() == llvm::Triple::wasm64) ? 1 : 0)
  390. .Case("work_group_size_hint", 1)
  391. .Case("force_align_arg_pointer", true && (T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64) ? 1 : 0)
  392. .Case("xray_always_instrument", 1)
  393. .Case("xray_never_instrument", 1)
  394. .Case("xray_log_args", 1)
  395. .Case("zero_call_used_regs", 1)
  396. .Default(0);
  397. case AttributeCommonInfo::Syntax::AS_Declspec:
  398. return llvm::StringSwitch<int>(Name)
  399. .Case("align", 1)
  400. .Case("guard", true && (T.getOS() == llvm::Triple::Win32) ? 1 : 0)
  401. .Case("cpu_dispatch", 1)
  402. .Case("cpu_specific", 1)
  403. .Case("__constant__", 1)
  404. .Case("__cudart_builtin__", 1)
  405. .Case("__device__", 1)
  406. .Case("__device_builtin__", 1)
  407. .Case("__device_builtin_surface_type__", 1)
  408. .Case("__device_builtin_texture_type__", 1)
  409. .Case("__global__", 1)
  410. .Case("__grid_constant__", 1)
  411. .Case("__host__", 1)
  412. .Case("__launch_bounds__", 1)
  413. .Case("__shared__", 1)
  414. .Case("code_seg", 1)
  415. .Case("dllexport", true && ( Target.getTriple().hasDLLImportExport() ) ? 1 : 0)
  416. .Case("dllimport", true && ( Target.getTriple().hasDLLImportExport() ) ? 1 : 0)
  417. .Case("deprecated", 1)
  418. .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)
  419. .Case("__managed__", 1)
  420. .Case("hybrid_patchable", true && ( Target.getTriple().isWindowsArm64EC() ) ? 1 : 0)
  421. .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)
  422. .Case("allocator", 1)
  423. .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)
  424. .Case("naked", 1)
  425. .Case("noalias", 1)
  426. .Case("noconvergent", 1)
  427. .Case("noinline", 1)
  428. .Case("noreturn", 1)
  429. .Case("safebuffers", 1)
  430. .Case("nothrow", 1)
  431. .Case("no_init_all", 1)
  432. .Case("restrict", 1)
  433. .Case("allocate", 1)
  434. .Case("selectany", 1)
  435. .Case("strict_gs_check", 1)
  436. .Case("thread", 1)
  437. .Case("uuid", 1)
  438. .Case("property", 1)
  439. .Default(0);
  440. case AttributeCommonInfo::Syntax::AS_Microsoft:
  441. return llvm::StringSwitch<int>(Name)
  442. .Case("branch", 1)
  443. .Case("flatten", 1)
  444. .Case("unroll", 1)
  445. .Case("loop", 1)
  446. .Case("numthreads", 1)
  447. .Case("shader", 1)
  448. .Case("WaveSize", 1)
  449. .Case("RootSignature", 1)
  450. .Case("uuid", 1)
  451. .Default(0);
  452. case AttributeCommonInfo::Syntax::AS_Pragma:
  453. return llvm::StringSwitch<int>(Name)
  454. .Case("init_seg", 1)
  455. .Case("loop", 1)
  456. .Case("unroll", 1)
  457. .Case("nounroll", 1)
  458. .Case("unroll_and_jam", 1)
  459. .Case("nounroll_and_jam", 1)
  460. .Case("declare simd", 1)
  461. .Case("declare target", 1)
  462. .Case("declare variant", 1)
  463. .Case("routine", 1)
  464. .Default(0);
  465. case AttributeCommonInfo::Syntax::AS_HLSLAnnotation:
  466. return llvm::StringSwitch<int>(Name)
  467. .Case("packoffset", 1)
  468. .Case("register", 1)
  469. .Case("sv_dispatchthreadid", 1)
  470. .Case("sv_groupid", 1)
  471. .Case("sv_groupindex", 1)
  472. .Case("sv_groupthreadid", 1)
  473. .Default(0);
  474. case AttributeCommonInfo::Syntax::AS_CXX11: {
  475. if (ScopeName == "") {
  476. return llvm::StringSwitch<int>(Name)
  477. .Case("noreturn", 200809)
  478. .Case("assume", 202207)
  479. .Case("carries_dependency", 200809)
  480. .Case("deprecated", 201309)
  481. .Case("fallthrough", 201603)
  482. .Case("likely", 201803)
  483. .Case("no_unique_address", true && ( Target.getCXXABI().isItaniumFamily() ) ? 201803 : 0)
  484. .Case("unlikely", 201803)
  485. .Case("maybe_unused", 201603)
  486. .Case("nodiscard", 201907)
  487. .Default(0);
  488. } else if (ScopeName == "clang") {
  489. return llvm::StringSwitch<int>(Name)
  490. .Case("aarch64_sve_pcs", 1)
  491. .Case("aarch64_vector_pcs", 1)
  492. .Case("amdgpu_flat_work_group_size", 1)
  493. .Case("amdgpu_kernel", 1)
  494. .Case("amdgpu_max_num_work_groups", 1)
  495. .Case("amdgpu_num_sgpr", 1)
  496. .Case("amdgpu_num_vgpr", 1)
  497. .Case("amdgpu_waves_per_eu", 1)
  498. .Case("acquire_capability", 1)
  499. .Case("acquire_shared_capability", 1)
  500. .Case("acquire_handle", 1)
  501. .Case("address_space", 1)
  502. .Case("allocating", 1)
  503. .Case("always_destroy", 1)
  504. .Case("always_inline", 1)
  505. .Case("annotate", 1)
  506. .Case("annotate_type", 1)
  507. .Case("objc_arc_weak_reference_unavailable", 1)
  508. .Case("argument_with_type_tag", 1)
  509. .Case("pointer_with_type_tag", 1)
  510. .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)
  511. .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)
  512. .Case("assert_capability", 1)
  513. .Case("assert_shared_capability", 1)
  514. .Case("atomic", 1)
  515. .Case("availability", 1)
  516. .Case("available_only_in_default_eval_method", 1)
  517. .Case("bpf_fastcall", true && (T.getArch() == llvm::Triple::bpfel || T.getArch() == llvm::Triple::bpfeb) ? 1 : 0)
  518. .Case("preserve_access_index", true && (T.getArch() == llvm::Triple::bpfel || T.getArch() == llvm::Triple::bpfeb) ? 1 : 0)
  519. .Case("preserve_static_offset", true && (T.getArch() == llvm::Triple::bpfel || T.getArch() == llvm::Triple::bpfeb) ? 1 : 0)
  520. .Case("btf_decl_tag", 1)
  521. .Case("btf_type_tag", 1)
  522. .Case("blocking", 1)
  523. .Case("blocks", 1)
  524. .Case("builtin_alias", 1)
  525. .Case("cf_audited_transfer", 1)
  526. .Case("cf_consumed", 1)
  527. .Case("guard", true && (T.getOS() == llvm::Triple::Win32) ? 1 : 0)
  528. .Case("cfi_canonical_jump_table", 1)
  529. .Case("cf_returns_not_retained", 1)
  530. .Case("cf_returns_retained", 1)
  531. .Case("cf_unknown_transfer", 1)
  532. .Case("cpu_dispatch", 1)
  533. .Case("cpu_specific", 1)
  534. .Case("assume", 1)
  535. .Case("callable_when", 1)
  536. .Case("callback", 1)
  537. .Case("called_once", 1)
  538. .Case("capability", 1)
  539. .Case("shared_capability", 1)
  540. .Case("clspv_libclc_builtin", 1)
  541. .Case("code_align", 1)
  542. .Case("require_constant_initialization", 1)
  543. .Case("consumable", 1)
  544. .Case("consumable_auto_cast_state", 1)
  545. .Case("consumable_set_state_on_read", 1)
  546. .Case("convergent", 1)
  547. .Case("coro_await_elidable", 1)
  548. .Case("coro_await_elidable_argument", 1)
  549. .Case("coro_disable_lifetimebound", 1)
  550. .Case("coro_lifetimebound", 1)
  551. .Case("coro_only_destroy_when_complete", 1)
  552. .Case("coro_return_type", 1)
  553. .Case("coro_wrapper", 1)
  554. .Case("counted_by", 1)
  555. .Case("counted_by_or_null", 1)
  556. .Case("diagnose_as_builtin", 1)
  557. .Case("disable_sanitizer_instrumentation", 1)
  558. .Case("disable_tail_calls", 1)
  559. .Case("enforce_tcb", 1)
  560. .Case("enforce_tcb_leaf", 1)
  561. .Case("enum_extensibility", 1)
  562. .Case("exclude_from_explicit_instantiation", 1)
  563. .Case("require_explicit_initialization", 1)
  564. .Case("ext_vector_type", 1)
  565. .Case("external_source_symbol", 20230206)
  566. .Case("fallthrough", 1)
  567. .Case("flag_enum", 1)
  568. .Case("guarded_var", 1)
  569. .Case("hybrid_patchable", true && ( Target.getTriple().isWindowsArm64EC() ) ? 1 : 0)
  570. .Case("ibaction", 1)
  571. .Case("iboutlet", 1)
  572. .Case("iboutletcollection", 1)
  573. .Case("intel_ocl_bicc", 1)
  574. .Case("internal_linkage", 1)
  575. .Case("lto_visibility_public", 1)
  576. .Case("lifetimebound", 1)
  577. .Case("lifetime_capture_by", 1)
  578. .Case("loader_uninitialized", 1)
  579. .Case("m68k_rtd", 1)
  580. .Case("mig_server_routine", 1)
  581. .Case("matrix_type", 1)
  582. .Case("maybe_undef", 1)
  583. .Case("minsize", 1)
  584. .Case("min_vector_width", 1)
  585. .Case("musttail", 1)
  586. .Case("ns_consumed", 1)
  587. .Case("ns_consumes_self", 1)
  588. .Case("ns_returns_autoreleased", 1)
  589. .Case("ns_returns_not_retained", 1)
  590. .Case("ns_returns_retained", 1)
  591. .Case("nvptx_kernel", true && (T.getArch() == llvm::Triple::nvptx || T.getArch() == llvm::Triple::nvptx64) ? 1 : 0)
  592. .Case("neon_polyvector_type", 1)
  593. .Case("neon_vector_type", 1)
  594. .Case("no_builtin", 1)
  595. .Case("noconvergent", 1)
  596. .Case("noderef", 1)
  597. .Case("no_destroy", 1)
  598. .Case("noduplicate", 1)
  599. .Case("noescape", 1)
  600. .Case("noinline", 1)
  601. .Case("nomerge", 1)
  602. .Case("no_sanitize", 1)
  603. .Case("no_sanitize_memory", 1)
  604. .Case("no_specializations", 1)
  605. .Case("no_speculative_load_hardening", 1)
  606. .Case("no_stack_protector", 1)
  607. .Case("no_thread_safety_analysis", 1)
  608. .Case("nouwtable", 1)
  609. .Case("nonallocating", 1)
  610. .Case("nonblocking", 1)
  611. .Case("not_tail_called", 1)
  612. .Case("os_consumed", 1)
  613. .Case("os_consumes_this", 1)
  614. .Case("os_returns_not_retained", 1)
  615. .Case("os_returns_retained", 1)
  616. .Case("os_returns_retained_on_non_zero", 1)
  617. .Case("os_returns_retained_on_zero", 1)
  618. .Case("objc_boxable", 1)
  619. .Case("objc_bridge", 1)
  620. .Case("objc_bridge_mutable", 1)
  621. .Case("objc_bridge_related", 1)
  622. .Case("objc_class_stub", 1)
  623. .Case("objc_designated_initializer", 1)
  624. .Case("objc_direct", 1)
  625. .Case("objc_direct_members", 1)
  626. .Case("objc_exception", 1)
  627. .Case("objc_protocol_requires_explicit_implementation", 1)
  628. .Case("objc_externally_retained", 1)
  629. .Case("objc_gc", 1)
  630. .Case("objc_independent_class", 1)
  631. .Case("objc_method_family", 1)
  632. .Case("NSObject", 1)
  633. .Case("objc_nonlazy_class", 1)
  634. .Case("objc_non_runtime_protocol", 1)
  635. .Case("objc_ownership", 1)
  636. .Case("objc_precise_lifetime", 1)
  637. .Case("objc_requires_property_definitions", 1)
  638. .Case("objc_requires_super", 1)
  639. .Case("objc_returns_inner_pointer", 1)
  640. .Case("objc_root_class", 1)
  641. .Case("objc_runtime_name", 1)
  642. .Case("objc_runtime_visible", 1)
  643. .Case("objc_subclassing_restricted", 1)
  644. .Case("opencl_constant", 1)
  645. .Case("opencl_generic", 1)
  646. .Case("opencl_global", 1)
  647. .Case("opencl_global_device", 1)
  648. .Case("opencl_global_host", 1)
  649. .Case("opencl_local", 1)
  650. .Case("opencl_private", 1)
  651. .Case("optnone", 1)
  652. .Case("overloadable", 1)
  653. .Case("ownership_holds", 1)
  654. .Case("ownership_returns", 1)
  655. .Case("ownership_takes", 1)
  656. .Case("param_typestate", 1)
  657. .Case("pascal", 1)
  658. .Case("pass_object_size", 1)
  659. .Case("pass_dynamic_object_size", 1)
  660. .Case("preferred_name", 1)
  661. .Case("preferred_type", 1)
  662. .Case("preserve_all", 1)
  663. .Case("preserve_most", 1)
  664. .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)
  665. .Case("pt_guarded_var", 1)
  666. .Case("riscv_vls_cc", true && (T.getArch() == llvm::Triple::riscv32 || T.getArch() == llvm::Triple::riscv64) ? 1 : 0)
  667. .Case("riscv_vector_cc", true && (T.getArch() == llvm::Triple::riscv32 || T.getArch() == llvm::Triple::riscv64) ? 1 : 0)
  668. .Case("enforce_read_only_placement", 1)
  669. .Case("reinitializes", 1)
  670. .Case("release_capability", 1)
  671. .Case("release_shared_capability", 1)
  672. .Case("release_generic_capability", 1)
  673. .Case("unlock_function", 1)
  674. .Case("release_handle", 1)
  675. .Case("requires_capability", 1)
  676. .Case("exclusive_locks_required", 1)
  677. .Case("requires_shared_capability", 1)
  678. .Case("shared_locks_required", 1)
  679. .Case("return_typestate", 1)
  680. .Case("sycl_kernel", 1)
  681. .Case("sycl_kernel_entry_point", 1)
  682. .Case("sycl_special_class", 1)
  683. .Case("scoped_lockable", 1)
  684. .Case("set_typestate", 1)
  685. .Case("sized_by", 1)
  686. .Case("sized_by_or_null", 1)
  687. .Case("speculative_load_hardening", 1)
  688. .Case("standalone_debug", 1)
  689. .Case("suppress", 1)
  690. .Case("swift_async", 1)
  691. .Case("swiftasynccall", 1)
  692. .Case("swift_async_context", 1)
  693. .Case("swift_async_error", 1)
  694. .Case("swiftcall", 1)
  695. .Case("swift_context", 1)
  696. .Case("swift_error_result", 1)
  697. .Case("swift_indirect_result", 1)
  698. .Case("test_typestate", 1)
  699. .Case("trivial_abi", 1)
  700. .Case("try_acquire_capability", 1)
  701. .Case("try_acquire_shared_capability", 1)
  702. .Case("type_tag_for_datatype", 1)
  703. .Case("type_visibility", 1)
  704. .Case("unavailable", 1)
  705. .Case("uninitialized", 1)
  706. .Case("unsafe_buffer_usage", 1)
  707. .Case("use_handle", 1)
  708. .Case("using_if_exists", 1)
  709. .Case("ptrauth_vtable_pointer", 1)
  710. .Case("vecreturn", 1)
  711. .Case("vectorcall", 1)
  712. .Case("warn_unused_result", 1)
  713. .Case("weak_import", 1)
  714. .Case("export_name", true && (T.getArch() == llvm::Triple::wasm32 || T.getArch() == llvm::Triple::wasm64) ? 1 : 0)
  715. .Case("import_module", true && (T.getArch() == llvm::Triple::wasm32 || T.getArch() == llvm::Triple::wasm64) ? 1 : 0)
  716. .Case("import_name", true && (T.getArch() == llvm::Triple::wasm32 || T.getArch() == llvm::Triple::wasm64) ? 1 : 0)
  717. .Case("xray_always_instrument", 1)
  718. .Case("xray_never_instrument", 1)
  719. .Case("xray_log_args", 1)
  720. .Default(0);
  721. } else if (ScopeName == "gnu") {
  722. return llvm::StringSwitch<int>(Name)
  723. .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)
  724. .Case("interrupt", true && (T.getArch() == llvm::Triple::avr) ? 1 : 0)
  725. .Case("signal", true && (T.getArch() == llvm::Triple::avr) ? 1 : 0)
  726. .Case("abi_tag", 1)
  727. .Case("alias", 1)
  728. .Case("aligned", 1)
  729. .Case("alloc_align", 1)
  730. .Case("alloc_size", 1)
  731. .Case("always_inline", 1)
  732. .Case("interrupt", true && (T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64) ? 1 : 0)
  733. .Case("no_caller_saved_registers", true && (T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64) ? 1 : 0)
  734. .Case("nocf_check", true && (T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64) ? 1 : 0)
  735. .Case("artificial", 1)
  736. .Case("assume_aligned", 1)
  737. .Case("cdecl", 1)
  738. .Case("cleanup", 1)
  739. .Case("model", true && (T.getArch() == llvm::Triple::loongarch32 || T.getArch() == llvm::Triple::loongarch64 || T.getArch() == llvm::Triple::x86_64 || T.getArch() == llvm::Triple::nvptx || T.getArch() == llvm::Triple::nvptx64 || T.getArch() == llvm::Triple::amdgcn || T.getArch() == llvm::Triple::r600 || T.getArch() == llvm::Triple::spirv || T.getArch() == llvm::Triple::spirv32 || T.getArch() == llvm::Triple::spirv64) ? 1 : 0)
  740. .Case("cold", 1)
  741. .Case("common", 1)
  742. .Case("const", 1)
  743. .Case("__const", 1)
  744. .Case("constructor", 1)
  745. .Case("dllexport", true && ( Target.getTriple().hasDLLImportExport() ) ? 1 : 0)
  746. .Case("dllimport", true && ( Target.getTriple().hasDLLImportExport() ) ? 1 : 0)
  747. .Case("deprecated", 1)
  748. .Case("destructor", 1)
  749. .Case("error", 1)
  750. .Case("warning", 1)
  751. .Case("fallthrough", 1)
  752. .Case("fastcall", 1)
  753. .Case("flatten", 1)
  754. .Case("format", 1)
  755. .Case("format_arg", 1)
  756. .Case("format_matches", 1)
  757. .Case("function_return", true && (T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64) ? 1 : 0)
  758. .Case("gnu_inline", 1)
  759. .Case("hot", 1)
  760. .Case("ifunc", true && ( Target.supportsIFunc() ) ? 1 : 0)
  761. .Case("init_priority", true && ( !Target.getTriple().isOSzOS() ) ? 1 : 0)
  762. .Case("leaf", 1)
  763. .Case("ms_abi", 1)
  764. .Case("interrupt", true && (T.getArch() == llvm::Triple::msp430) ? 1 : 0)
  765. .Case("ms_struct", 1)
  766. .Case("may_alias", 1)
  767. .Case("micromips", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel) ? 1 : 0)
  768. .Case("mips16", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel) ? 1 : 0)
  769. .Case("interrupt", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel) ? 1 : 0)
  770. .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)
  771. .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)
  772. .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)
  773. .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)
  774. .Case("mode", 1)
  775. .Case("naked", 1)
  776. .Case("nocommon", 1)
  777. .Case("nodebug", 1)
  778. .Case("noinline", 1)
  779. .Case("no_instrument_function", 1)
  780. .Case("nomicromips", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel) ? 1 : 0)
  781. .Case("nomips16", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel) ? 1 : 0)
  782. .Case("no_profile_instrument_function", 1)
  783. .Case("no_randomize_layout", 1)
  784. .Case("noreturn", 1)
  785. .Case("no_sanitize", 1)
  786. .Case("no_address_safety_analysis", 1)
  787. .Case("no_sanitize_address", 1)
  788. .Case("no_sanitize_thread", 1)
  789. .Case("no_split_stack", 1)
  790. .Case("no_stack_protector", 1)
  791. .Case("nothrow", 1)
  792. .Case("nonnull", 1)
  793. .Case("nonstring", 1)
  794. .Case("packed", 1)
  795. .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)
  796. .Case("pcs", 1)
  797. .Case("pure", 1)
  798. .Case("interrupt", true && (T.getArch() == llvm::Triple::riscv32 || T.getArch() == llvm::Triple::riscv64) ? 1 : 0)
  799. .Case("randomize_layout", 1)
  800. .Case("regcall", 1)
  801. .Case("regparm", 1)
  802. .Case("malloc", 1)
  803. .Case("retain", 1)
  804. .Case("returns_nonnull", 1)
  805. .Case("returns_twice", 1)
  806. .Case("section", 1)
  807. .Case("selectany", 1)
  808. .Case("sentinel", 1)
  809. .Case("stdcall", 1)
  810. .Case("sysv_abi", 1)
  811. .Case("tls_model", 1)
  812. .Case("target", 1)
  813. .Case("target_clones", 1)
  814. .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)
  815. .Case("thiscall", 1)
  816. .Case("transparent_union", 1)
  817. .Case("unused", 1)
  818. .Case("used", 1)
  819. .Case("vector_size", 1)
  820. .Case("visibility", 1)
  821. .Case("warn_unused", 1)
  822. .Case("warn_unused_result", 1)
  823. .Case("weak", 1)
  824. .Case("weakref", 1)
  825. .Case("force_align_arg_pointer", true && (T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64) ? 1 : 0)
  826. .Case("zero_call_used_regs", 1)
  827. .Default(0);
  828. } else if (ScopeName == "gsl") {
  829. return llvm::StringSwitch<int>(Name)
  830. .Case("Owner", 1)
  831. .Case("Pointer", 1)
  832. .Case("suppress", 1)
  833. .Default(0);
  834. } else if (ScopeName == "hlsl") {
  835. return llvm::StringSwitch<int>(Name)
  836. .Case("contained_type", 1)
  837. .Case("is_rov", 1)
  838. .Case("raw_buffer", 1)
  839. .Case("resource_class", 1)
  840. .Default(0);
  841. } else if (ScopeName == "msvc") {
  842. return llvm::StringSwitch<int>(Name)
  843. .Case("constexpr", 1)
  844. .Case("noinline", 1)
  845. .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)
  846. .Default(0);
  847. } else if (ScopeName == "omp") {
  848. return llvm::StringSwitch<int>(Name)
  849. .Case("assume", 1)
  850. .Default(0);
  851. } else if (ScopeName == "riscv") {
  852. return llvm::StringSwitch<int>(Name)
  853. .Case("vls_cc", true && (T.getArch() == llvm::Triple::riscv32 || T.getArch() == llvm::Triple::riscv64) ? 1 : 0)
  854. .Case("vector_cc", true && (T.getArch() == llvm::Triple::riscv32 || T.getArch() == llvm::Triple::riscv64) ? 1 : 0)
  855. .Default(0);
  856. }
  857. } break;
  858. case AttributeCommonInfo::Syntax::AS_C23: {
  859. if (ScopeName == "") {
  860. return llvm::StringSwitch<int>(Name)
  861. .Case("noreturn", 202202)
  862. .Case("_Noreturn", 202202)
  863. .Case("deprecated", 201904)
  864. .Case("fallthrough", 201910)
  865. .Case("maybe_unused", 202106)
  866. .Case("nodiscard", 202003)
  867. .Default(0);
  868. } else if (ScopeName == "clang") {
  869. return llvm::StringSwitch<int>(Name)
  870. .Case("aarch64_sve_pcs", 1)
  871. .Case("aarch64_vector_pcs", 1)
  872. .Case("amdgpu_kernel", 1)
  873. .Case("acquire_handle", 1)
  874. .Case("address_space", 1)
  875. .Case("allocating", 1)
  876. .Case("always_inline", 1)
  877. .Case("annotate", 1)
  878. .Case("annotate_type", 1)
  879. .Case("objc_arc_weak_reference_unavailable", 1)
  880. .Case("argument_with_type_tag", 1)
  881. .Case("pointer_with_type_tag", 1)
  882. .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)
  883. .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)
  884. .Case("atomic", 1)
  885. .Case("availability", 1)
  886. .Case("available_only_in_default_eval_method", 1)
  887. .Case("bpf_fastcall", true && (T.getArch() == llvm::Triple::bpfel || T.getArch() == llvm::Triple::bpfeb) ? 1 : 0)
  888. .Case("preserve_access_index", true && (T.getArch() == llvm::Triple::bpfel || T.getArch() == llvm::Triple::bpfeb) ? 1 : 0)
  889. .Case("preserve_static_offset", true && (T.getArch() == llvm::Triple::bpfel || T.getArch() == llvm::Triple::bpfeb) ? 1 : 0)
  890. .Case("btf_decl_tag", 1)
  891. .Case("btf_type_tag", 1)
  892. .Case("blocking", 1)
  893. .Case("blocks", 1)
  894. .Case("builtin_alias", 1)
  895. .Case("cf_audited_transfer", 1)
  896. .Case("cf_consumed", 1)
  897. .Case("guard", true && (T.getOS() == llvm::Triple::Win32) ? 1 : 0)
  898. .Case("cfi_canonical_jump_table", 1)
  899. .Case("cf_returns_not_retained", 1)
  900. .Case("cf_returns_retained", 1)
  901. .Case("cf_unknown_transfer", 1)
  902. .Case("cpu_dispatch", 1)
  903. .Case("cpu_specific", 1)
  904. .Case("assume", 1)
  905. .Case("callback", 1)
  906. .Case("called_once", 1)
  907. .Case("clspv_libclc_builtin", 1)
  908. .Case("code_align", 1)
  909. .Case("convergent", 1)
  910. .Case("coro_await_elidable", 1)
  911. .Case("coro_await_elidable_argument", 1)
  912. .Case("coro_disable_lifetimebound", 1)
  913. .Case("coro_lifetimebound", 1)
  914. .Case("coro_only_destroy_when_complete", 1)
  915. .Case("coro_return_type", 1)
  916. .Case("coro_wrapper", 1)
  917. .Case("counted_by", 1)
  918. .Case("counted_by_or_null", 1)
  919. .Case("diagnose_as_builtin", 1)
  920. .Case("disable_sanitizer_instrumentation", 1)
  921. .Case("disable_tail_calls", 1)
  922. .Case("enforce_tcb", 1)
  923. .Case("enforce_tcb_leaf", 1)
  924. .Case("enum_extensibility", 1)
  925. .Case("exclude_from_explicit_instantiation", 1)
  926. .Case("require_explicit_initialization", 1)
  927. .Case("ext_vector_type", 1)
  928. .Case("external_source_symbol", 20230206)
  929. .Case("flag_enum", 1)
  930. .Case("hybrid_patchable", true && ( Target.getTriple().isWindowsArm64EC() ) ? 1 : 0)
  931. .Case("ibaction", 1)
  932. .Case("iboutlet", 1)
  933. .Case("iboutletcollection", 1)
  934. .Case("internal_linkage", 1)
  935. .Case("lto_visibility_public", 1)
  936. .Case("likely", 1)
  937. .Case("loader_uninitialized", 1)
  938. .Case("m68k_rtd", 1)
  939. .Case("mig_server_routine", 1)
  940. .Case("matrix_type", 1)
  941. .Case("maybe_undef", 1)
  942. .Case("minsize", 1)
  943. .Case("min_vector_width", 1)
  944. .Case("musttail", 1)
  945. .Case("ns_consumed", 1)
  946. .Case("ns_consumes_self", 1)
  947. .Case("ns_returns_autoreleased", 1)
  948. .Case("ns_returns_not_retained", 1)
  949. .Case("ns_returns_retained", 1)
  950. .Case("nvptx_kernel", true && (T.getArch() == llvm::Triple::nvptx || T.getArch() == llvm::Triple::nvptx64) ? 1 : 0)
  951. .Case("neon_polyvector_type", 1)
  952. .Case("neon_vector_type", 1)
  953. .Case("no_builtin", 1)
  954. .Case("noconvergent", 1)
  955. .Case("noderef", 1)
  956. .Case("noduplicate", 1)
  957. .Case("noescape", 1)
  958. .Case("noinline", 1)
  959. .Case("nomerge", 1)
  960. .Case("no_sanitize", 1)
  961. .Case("no_sanitize_memory", 1)
  962. .Case("no_speculative_load_hardening", 1)
  963. .Case("no_stack_protector", 1)
  964. .Case("no_thread_safety_analysis", 1)
  965. .Case("nouwtable", 1)
  966. .Case("nonallocating", 1)
  967. .Case("nonblocking", 1)
  968. .Case("not_tail_called", 1)
  969. .Case("os_consumed", 1)
  970. .Case("os_consumes_this", 1)
  971. .Case("os_returns_not_retained", 1)
  972. .Case("os_returns_retained", 1)
  973. .Case("os_returns_retained_on_non_zero", 1)
  974. .Case("os_returns_retained_on_zero", 1)
  975. .Case("objc_boxable", 1)
  976. .Case("objc_bridge", 1)
  977. .Case("objc_bridge_mutable", 1)
  978. .Case("objc_bridge_related", 1)
  979. .Case("objc_class_stub", 1)
  980. .Case("objc_designated_initializer", 1)
  981. .Case("objc_direct", 1)
  982. .Case("objc_direct_members", 1)
  983. .Case("objc_exception", 1)
  984. .Case("objc_protocol_requires_explicit_implementation", 1)
  985. .Case("objc_externally_retained", 1)
  986. .Case("objc_gc", 1)
  987. .Case("objc_independent_class", 1)
  988. .Case("objc_method_family", 1)
  989. .Case("NSObject", 1)
  990. .Case("objc_nonlazy_class", 1)
  991. .Case("objc_non_runtime_protocol", 1)
  992. .Case("objc_ownership", 1)
  993. .Case("objc_precise_lifetime", 1)
  994. .Case("objc_requires_property_definitions", 1)
  995. .Case("objc_requires_super", 1)
  996. .Case("objc_returns_inner_pointer", 1)
  997. .Case("objc_root_class", 1)
  998. .Case("objc_runtime_name", 1)
  999. .Case("objc_runtime_visible", 1)
  1000. .Case("objc_subclassing_restricted", 1)
  1001. .Case("opencl_constant", 1)
  1002. .Case("opencl_generic", 1)
  1003. .Case("opencl_global", 1)
  1004. .Case("opencl_global_device", 1)
  1005. .Case("opencl_global_host", 1)
  1006. .Case("opencl_local", 1)
  1007. .Case("opencl_private", 1)
  1008. .Case("optnone", 1)
  1009. .Case("overloadable", 1)
  1010. .Case("ownership_holds", 1)
  1011. .Case("ownership_returns", 1)
  1012. .Case("ownership_takes", 1)
  1013. .Case("pascal", 1)
  1014. .Case("pass_object_size", 1)
  1015. .Case("pass_dynamic_object_size", 1)
  1016. .Case("preferred_type", 1)
  1017. .Case("preserve_all", 1)
  1018. .Case("preserve_most", 1)
  1019. .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)
  1020. .Case("riscv_vls_cc", true && (T.getArch() == llvm::Triple::riscv32 || T.getArch() == llvm::Triple::riscv64) ? 1 : 0)
  1021. .Case("riscv_vector_cc", true && (T.getArch() == llvm::Triple::riscv32 || T.getArch() == llvm::Triple::riscv64) ? 1 : 0)
  1022. .Case("enforce_read_only_placement", 1)
  1023. .Case("release_handle", 1)
  1024. .Case("sycl_kernel", 1)
  1025. .Case("sycl_kernel_entry_point", 1)
  1026. .Case("sycl_special_class", 1)
  1027. .Case("sized_by", 1)
  1028. .Case("sized_by_or_null", 1)
  1029. .Case("speculative_load_hardening", 1)
  1030. .Case("suppress", 1)
  1031. .Case("swift_async", 1)
  1032. .Case("swiftasynccall", 1)
  1033. .Case("swift_async_context", 1)
  1034. .Case("swift_async_error", 1)
  1035. .Case("swiftcall", 1)
  1036. .Case("swift_context", 1)
  1037. .Case("swift_error_result", 1)
  1038. .Case("swift_indirect_result", 1)
  1039. .Case("type_tag_for_datatype", 1)
  1040. .Case("type_visibility", 1)
  1041. .Case("unavailable", 1)
  1042. .Case("unlikely", 1)
  1043. .Case("unsafe_buffer_usage", 1)
  1044. .Case("use_handle", 1)
  1045. .Case("ptrauth_vtable_pointer", 1)
  1046. .Case("vectorcall", 1)
  1047. .Case("weak_import", 1)
  1048. .Case("export_name", true && (T.getArch() == llvm::Triple::wasm32 || T.getArch() == llvm::Triple::wasm64) ? 1 : 0)
  1049. .Case("import_module", true && (T.getArch() == llvm::Triple::wasm32 || T.getArch() == llvm::Triple::wasm64) ? 1 : 0)
  1050. .Case("import_name", true && (T.getArch() == llvm::Triple::wasm32 || T.getArch() == llvm::Triple::wasm64) ? 1 : 0)
  1051. .Case("xray_always_instrument", 1)
  1052. .Case("xray_never_instrument", 1)
  1053. .Case("xray_log_args", 1)
  1054. .Default(0);
  1055. } else if (ScopeName == "gnu") {
  1056. return llvm::StringSwitch<int>(Name)
  1057. .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)
  1058. .Case("interrupt", true && (T.getArch() == llvm::Triple::avr) ? 1 : 0)
  1059. .Case("signal", true && (T.getArch() == llvm::Triple::avr) ? 1 : 0)
  1060. .Case("alias", 1)
  1061. .Case("aligned", 1)
  1062. .Case("alloc_align", 1)
  1063. .Case("alloc_size", 1)
  1064. .Case("always_inline", 1)
  1065. .Case("interrupt", true && (T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64) ? 1 : 0)
  1066. .Case("no_caller_saved_registers", true && (T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64) ? 1 : 0)
  1067. .Case("nocf_check", true && (T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64) ? 1 : 0)
  1068. .Case("artificial", 1)
  1069. .Case("assume_aligned", 1)
  1070. .Case("cdecl", 1)
  1071. .Case("cleanup", 1)
  1072. .Case("model", true && (T.getArch() == llvm::Triple::loongarch32 || T.getArch() == llvm::Triple::loongarch64 || T.getArch() == llvm::Triple::x86_64 || T.getArch() == llvm::Triple::nvptx || T.getArch() == llvm::Triple::nvptx64 || T.getArch() == llvm::Triple::amdgcn || T.getArch() == llvm::Triple::r600 || T.getArch() == llvm::Triple::spirv || T.getArch() == llvm::Triple::spirv32 || T.getArch() == llvm::Triple::spirv64) ? 1 : 0)
  1073. .Case("cold", 1)
  1074. .Case("common", 1)
  1075. .Case("const", 1)
  1076. .Case("__const", 1)
  1077. .Case("constructor", 1)
  1078. .Case("dllexport", true && ( Target.getTriple().hasDLLImportExport() ) ? 1 : 0)
  1079. .Case("dllimport", true && ( Target.getTriple().hasDLLImportExport() ) ? 1 : 0)
  1080. .Case("deprecated", 1)
  1081. .Case("destructor", 1)
  1082. .Case("error", 1)
  1083. .Case("warning", 1)
  1084. .Case("fallthrough", 1)
  1085. .Case("fastcall", 1)
  1086. .Case("flatten", 1)
  1087. .Case("format", 1)
  1088. .Case("format_arg", 1)
  1089. .Case("format_matches", 1)
  1090. .Case("function_return", true && (T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64) ? 1 : 0)
  1091. .Case("gnu_inline", 1)
  1092. .Case("hot", 1)
  1093. .Case("ifunc", true && ( Target.supportsIFunc() ) ? 1 : 0)
  1094. .Case("leaf", 1)
  1095. .Case("ms_abi", 1)
  1096. .Case("interrupt", true && (T.getArch() == llvm::Triple::msp430) ? 1 : 0)
  1097. .Case("ms_struct", 1)
  1098. .Case("may_alias", 1)
  1099. .Case("micromips", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel) ? 1 : 0)
  1100. .Case("mips16", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel) ? 1 : 0)
  1101. .Case("interrupt", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel) ? 1 : 0)
  1102. .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)
  1103. .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)
  1104. .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)
  1105. .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)
  1106. .Case("mode", 1)
  1107. .Case("naked", 1)
  1108. .Case("nocommon", 1)
  1109. .Case("nodebug", 1)
  1110. .Case("noinline", 1)
  1111. .Case("no_instrument_function", 1)
  1112. .Case("nomicromips", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel) ? 1 : 0)
  1113. .Case("nomips16", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel) ? 1 : 0)
  1114. .Case("no_profile_instrument_function", 1)
  1115. .Case("no_randomize_layout", 1)
  1116. .Case("noreturn", 1)
  1117. .Case("no_sanitize", 1)
  1118. .Case("no_address_safety_analysis", 1)
  1119. .Case("no_sanitize_address", 1)
  1120. .Case("no_sanitize_thread", 1)
  1121. .Case("no_split_stack", 1)
  1122. .Case("no_stack_protector", 1)
  1123. .Case("nothrow", 1)
  1124. .Case("nonnull", 1)
  1125. .Case("nonstring", 1)
  1126. .Case("packed", 1)
  1127. .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)
  1128. .Case("pcs", 1)
  1129. .Case("pure", 1)
  1130. .Case("interrupt", true && (T.getArch() == llvm::Triple::riscv32 || T.getArch() == llvm::Triple::riscv64) ? 1 : 0)
  1131. .Case("randomize_layout", 1)
  1132. .Case("regcall", 1)
  1133. .Case("regparm", 1)
  1134. .Case("malloc", 1)
  1135. .Case("retain", 1)
  1136. .Case("returns_nonnull", 1)
  1137. .Case("returns_twice", 1)
  1138. .Case("section", 1)
  1139. .Case("selectany", 1)
  1140. .Case("sentinel", 1)
  1141. .Case("stdcall", 1)
  1142. .Case("sysv_abi", 1)
  1143. .Case("tls_model", 1)
  1144. .Case("target", 1)
  1145. .Case("target_clones", 1)
  1146. .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)
  1147. .Case("thiscall", 1)
  1148. .Case("transparent_union", 1)
  1149. .Case("unused", 1)
  1150. .Case("used", 1)
  1151. .Case("vector_size", 1)
  1152. .Case("visibility", 1)
  1153. .Case("warn_unused", 1)
  1154. .Case("warn_unused_result", 1)
  1155. .Case("weak", 1)
  1156. .Case("weakref", 1)
  1157. .Case("force_align_arg_pointer", true && (T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64) ? 1 : 0)
  1158. .Case("zero_call_used_regs", 1)
  1159. .Default(0);
  1160. } else if (ScopeName == "msvc") {
  1161. return llvm::StringSwitch<int>(Name)
  1162. .Case("noinline", 1)
  1163. .Default(0);
  1164. } else if (ScopeName == "riscv") {
  1165. return llvm::StringSwitch<int>(Name)
  1166. .Case("vls_cc", true && (T.getArch() == llvm::Triple::riscv32 || T.getArch() == llvm::Triple::riscv64) ? 1 : 0)
  1167. .Case("vector_cc", true && (T.getArch() == llvm::Triple::riscv32 || T.getArch() == llvm::Triple::riscv64) ? 1 : 0)
  1168. .Default(0);
  1169. }
  1170. } break;
  1171. case AttributeCommonInfo::Syntax::AS_Keyword:
  1172. case AttributeCommonInfo::Syntax::AS_ContextSensitiveKeyword:
  1173. llvm_unreachable("hasAttribute not supported for keyword");
  1174. return 0;
  1175. case AttributeCommonInfo::Syntax::AS_Implicit:
  1176. llvm_unreachable ("hasAttribute not supported for AS_Implicit");
  1177. return 0;
  1178. }
  1179.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement