1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
| /*===- 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("aarch64_vector_pcs", 1)
.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", true && (T.getArch() == llvm::Triple::arm || T.getArch() == llvm::Triple::thumb || T.getArch() == llvm::Triple::armeb || T.getArch() == llvm::Triple::thumbeb) ? 1 : 0)
.Case("interrupt", true && (T.getArch() == llvm::Triple::avr) ? 1 : 0)
.Case("signal", true && (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_destroy", 1)
.Case("always_inline", 1)
.Case("analyzer_noreturn", 1)
.Case("annotate", 1)
.Case("interrupt", true && (T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64) ? 1 : 0)
.Case("no_caller_saved_registers", true && (T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64) ? 1 : 0)
.Case("nocf_check", true && (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("__clang_arm_mve_alias", true && (T.getArch() == llvm::Triple::arm || T.getArch() == llvm::Triple::thumb || T.getArch() == llvm::Triple::armeb || T.getArch() == llvm::Triple::thumbeb) ? 1 : 0)
.Case("artificial", 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("cfi_canonical_jump_table", 1)
.Case("cf_returns_not_retained", 1)
.Case("cf_returns_retained", 1)
.Case("cf_unknown_transfer", 1)
.Case("cpu_dispatch", 1)
.Case("cpu_specific", 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("callback", 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("require_constant_initialization", 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", 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) && (T.getOS() == llvm::Triple::Win32) ? 1 : 0)
.Case("dllimport", 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) && (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("exclude_from_explicit_instantiation", 1)
.Case("exclusive_trylock_function", 1)
.Case("ext_vector_type", 1)
.Case("external_source_symbol", 1)
.Case("fallthrough", 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("hip_pinned_shadow", 1)
.Case("hot", 1)
.Case("ibaction", 1)
.Case("iboutlet", 1)
.Case("iboutletcollection", 1)
.Case("ifunc", true && (T.getObjectFormat() == llvm::Triple::ELF) ? 1 : 0)
.Case("init_priority", 1)
.Case("intel_ocl_bicc", 1)
.Case("internal_linkage", 1)
.Case("lto_visibility_public", 1)
.Case("lifetimebound", 1)
.Case("lock_returned", 1)
.Case("lockable", 1)
.Case("locks_excluded", 1)
.Case("mig_server_routine", 1)
.Case("ms_abi", 1)
.Case("interrupt", true && (T.getArch() == llvm::Triple::msp430) ? 1 : 0)
.Case("ms_struct", 1)
.Case("may_alias", 1)
.Case("micromips", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel) ? 1 : 0)
.Case("minsize", 1)
.Case("min_vector_width", 1)
.Case("mips16", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel) ? 1 : 0)
.Case("interrupt", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel) ? 1 : 0)
.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)
.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)
.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)
.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)
.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)
.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)
.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)
.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)
.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("noderef", 1)
.Case("no_destroy", 1)
.Case("noduplicate", 1)
.Case("noescape", 1)
.Case("noinline", 1)
.Case("no_instrument_function", 1)
.Case("nomicromips", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel) ? 1 : 0)
.Case("nomips16", true && (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_speculative_load_hardening", 1)
.Case("no_split_stack", 1)
.Case("no_stack_protector", 1)
.Case("no_thread_safety_analysis", 1)
.Case("nothrow", 1)
.Case("nonnull", 1)
.Case("not_tail_called", 1)
.Case("nv_weak", 1)
.Case("os_consumed", 1)
.Case("os_consumes_this", 1)
.Case("os_returns_not_retained", 1)
.Case("os_returns_retained", 1)
.Case("os_returns_retained_on_non_zero", 1)
.Case("os_returns_retained_on_zero", 1)
.Case("objc_boxable", 1)
.Case("objc_bridge", 1)
.Case("objc_bridge_mutable", 1)
.Case("objc_bridge_related", 1)
.Case("objc_class_stub", 1)
.Case("objc_designated_initializer", 1)
.Case("objc_exception", 1)
.Case("objc_protocol_requires_explicit_implementation", 1)
.Case("objc_externally_retained", 1)
.Case("objc_gc", 1)
.Case("objc_independent_class", 1)
.Case("objc_method_family", 1)
.Case("NSObject", 1)
.Case("objc_nonlazy_class", 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("pass_dynamic_object_size", 1)
.Case("pass_object_size", 1)
.Case("pass_dynamic_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("interrupt", true && (T.getArch() == llvm::Triple::riscv32 || T.getArch() == llvm::Triple::riscv64) ? 1 : 0)
.Case("regcall", 1)
.Case("regparm", 1)
.Case("reinitializes", 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("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("speculative_load_hardening", 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("trivial_abi", 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("uninitialized", 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("import_module", true && (T.getArch() == llvm::Triple::wasm32 || T.getArch() == llvm::Triple::wasm64) ? 1 : 0)
.Case("import_name", true && (T.getArch() == llvm::Triple::wasm32 || T.getArch() == llvm::Triple::wasm64) ? 1 : 0)
.Case("work_group_size_hint", 1)
.Case("force_align_arg_pointer", true && (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("cpu_dispatch", 1)
.Case("cpu_specific", 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("code_seg", 1)
.Case("dllexport", 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) && (T.getOS() == llvm::Triple::Win32) ? 1 : 0)
.Case("dllimport", 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) && (T.getOS() == llvm::Triple::Win32) ? 1 : 0)
.Case("deprecated", 1)
.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)
.Case("__hip_pinned_shadow__", 1)
.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)
.Case("allocator", 1)
.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)
.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("unroll_and_jam", 1)
.Case("nounroll_and_jam", 1)
.Case("loop", 1)
.Case("unroll", 1)
.Case("nounroll", 1)
.Case("unroll_and_jam", 1)
.Case("nounroll_and_jam", 1)
.Case("loop", 1)
.Case("unroll", 1)
.Case("nounroll", 1)
.Case("unroll_and_jam", 1)
.Case("nounroll_and_jam", 1)
.Case("loop", 1)
.Case("unroll", 1)
.Case("nounroll", 1)
.Case("unroll_and_jam", 1)
.Case("nounroll_and_jam", 1)
.Case("loop", 1)
.Case("unroll", 1)
.Case("nounroll", 1)
.Case("unroll_and_jam", 1)
.Case("nounroll_and_jam", 1)
.Case("declare simd", 1)
.Case("declare target", 1)
.Case("declare variant", 1)
.Default(0);
case AttrSyntax::CXX: {
if (ScopeName == "") {
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("fallthrough", LangOpts.CPlusPlus11 ? 201603 : 0)
.Case("no_unique_address", true && ( Target.getCXXABI().isItaniumFamily() ) && LangOpts.CPlusPlus11 ? 201803 : 0)
.Case("maybe_unused", LangOpts.CPlusPlus11 ? 201603 : 0)
.Case("unused", LangOpts.CPlusPlus11 ? 201603 : 0)
.Case("nodiscard", LangOpts.CPlusPlus11 ? 201907 : 0)
.Case("warn_unused_result", LangOpts.CPlusPlus11 ? 201907 : 0)
.Case("warn_unused_result", LangOpts.CPlusPlus11 ? 201907 : 0)
.Default(0);
} else if (ScopeName == "clang") {
return llvm::StringSwitch<int>(Name)
.Case("aarch64_vector_pcs", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("amdgpu_flat_work_group_size", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("amdgpu_num_sgpr", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("amdgpu_num_vgpr", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("amdgpu_waves_per_eu", LangOpts.CPlusPlus11 ? 1 : 0)
.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("address_space", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("always_destroy", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("annotate", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("objc_arc_weak_reference_unavailable", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("argument_with_type_tag", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("pointer_with_type_tag", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("argument_with_type_tag", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("pointer_with_type_tag", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("__clang_arm_mve_alias", true && (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("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("availability", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("blocks", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("cf_audited_transfer", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("cf_consumed", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("cfi_canonical_jump_table", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("cf_returns_not_retained", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("cf_returns_retained", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("cf_unknown_transfer", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("cpu_dispatch", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("cpu_specific", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("callable_when", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("callback", 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("require_constant_initialization", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("consumable", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("consumable_auto_cast_state", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("consumable_set_state_on_read", 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("exclude_from_explicit_instantiation", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("external_source_symbol", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("fallthrough", LangOpts.CPlusPlus11 ? 201603 : 0)
.Case("flag_enum", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("guarded_var", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("ibaction", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("iboutlet", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("iboutletcollection", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("intel_ocl_bicc", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("internal_linkage", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("lto_visibility_public", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("lifetimebound", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("mig_server_routine", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("minsize", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("min_vector_width", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("ns_consumed", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("ns_consumes_self", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("ns_returns_autoreleased", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("ns_returns_not_retained", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("ns_returns_retained", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("neon_polyvector_type", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("neon_vector_type", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("noderef", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("no_destroy", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("noduplicate", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("noescape", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("no_sanitize", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("no_sanitize_memory", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("no_speculative_load_hardening", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("no_stack_protector", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("no_thread_safety_analysis", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("not_tail_called", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("os_consumed", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("os_consumes_this", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("os_returns_not_retained", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("os_returns_retained", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("os_returns_retained_on_non_zero", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("os_returns_retained_on_zero", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("objc_boxable", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("objc_bridge", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("objc_bridge_mutable", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("objc_bridge_related", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("objc_class_stub", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("objc_designated_initializer", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("objc_exception", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("objc_protocol_requires_explicit_implementation", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("objc_externally_retained", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("objc_gc", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("objc_independent_class", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("objc_method_family", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("NSObject", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("objc_nonlazy_class", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("objc_ownership", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("objc_precise_lifetime", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("objc_requires_property_definitions", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("objc_requires_super", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("objc_returns_inner_pointer", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("objc_root_class", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("objc_runtime_name", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("objc_runtime_visible", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("objc_subclassing_restricted", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("optnone", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("overloadable", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("ownership_holds", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("ownership_returns", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("ownership_takes", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("ownership_holds", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("ownership_returns", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("ownership_takes", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("ownership_holds", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("ownership_returns", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("ownership_takes", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("param_typestate", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("pascal", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("pass_object_size", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("pass_dynamic_object_size", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("pass_object_size", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("pass_dynamic_object_size", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("preserve_all", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("preserve_most", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("pt_guarded_var", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("reinitializes", 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("unlock_function", 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("unlock_function", 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("unlock_function", 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("unlock_function", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("requires_capability", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("exclusive_locks_required", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("requires_shared_capability", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("shared_locks_required", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("requires_capability", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("exclusive_locks_required", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("requires_shared_capability", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("shared_locks_required", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("requires_capability", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("exclusive_locks_required", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("requires_shared_capability", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("shared_locks_required", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("requires_capability", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("exclusive_locks_required", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("requires_shared_capability", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("shared_locks_required", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("return_typestate", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("scoped_lockable", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("set_typestate", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("speculative_load_hardening", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("swiftcall", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("swift_context", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("swift_error_result", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("swift_indirect_result", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("test_typestate", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("trivial_abi", 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_tag_for_datatype", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("type_visibility", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("unavailable", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("uninitialized", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("vecreturn", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("vectorcall", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("warn_unused_result", LangOpts.CPlusPlus11 ? 201907 : 0)
.Case("weak_import", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("import_module", true && (T.getArch() == llvm::Triple::wasm32 || T.getArch() == llvm::Triple::wasm64) && LangOpts.CPlusPlus11 ? 1 : 0)
.Case("import_name", true && (T.getArch() == llvm::Triple::wasm32 || T.getArch() == llvm::Triple::wasm64) && LangOpts.CPlusPlus11 ? 1 : 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 (ScopeName == "gnu") {
return llvm::StringSwitch<int>(Name)
.Case("interrupt", true && (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", true && (T.getArch() == llvm::Triple::avr) && LangOpts.CPlusPlus11 ? 1 : 0)
.Case("signal", true && (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", true && (T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64) && LangOpts.CPlusPlus11 ? 1 : 0)
.Case("no_caller_saved_registers", true && (T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64) && LangOpts.CPlusPlus11 ? 1 : 0)
.Case("nocf_check", true && (T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64) && LangOpts.CPlusPlus11 ? 1 : 0)
.Case("artificial", 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", 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) && (T.getOS() == llvm::Triple::Win32) && LangOpts.CPlusPlus11 ? 1 : 0)
.Case("dllimport", 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) && (T.getOS() == llvm::Triple::Win32) && LangOpts.CPlusPlus11 ? 1 : 0)
.Case("deprecated", LangOpts.CPlusPlus11 ? 201309 : 0)
.Case("destructor", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("fallthrough", LangOpts.CPlusPlus11 ? 201603 : 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", true && (T.getObjectFormat() == llvm::Triple::ELF) && LangOpts.CPlusPlus11 ? 1 : 0)
.Case("init_priority", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("ms_abi", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("interrupt", true && (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", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel) && LangOpts.CPlusPlus11 ? 1 : 0)
.Case("mips16", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel) && LangOpts.CPlusPlus11 ? 1 : 0)
.Case("interrupt", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel) && LangOpts.CPlusPlus11 ? 1 : 0)
.Case("long_call", true && (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", true && (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", true && (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", true && (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", true && (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", true && (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", true && (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", true && (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", true && (T.getArch() == llvm::Triple::mips || T.getArch() == llvm::Triple::mipsel) && LangOpts.CPlusPlus11 ? 1 : 0)
.Case("nomips16", true && (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("interrupt", true && (T.getArch() == llvm::Triple::riscv32 || T.getArch() == llvm::Triple::riscv64) && 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 ? 201907 : 0)
.Case("weak", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("weakref", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("force_align_arg_pointer", true && (T.getArch() == llvm::Triple::x86 || T.getArch() == llvm::Triple::x86_64) && LangOpts.CPlusPlus11 ? 1 : 0)
.Default(0);
} else if (ScopeName == "gsl") {
return llvm::StringSwitch<int>(Name)
.Case("Owner", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("Pointer", LangOpts.CPlusPlus11 ? 1 : 0)
.Case("suppress", LangOpts.CPlusPlus11 ? 1 : 0)
.Default(0);
}
} break;
case AttrSyntax::C: {
if (ScopeName == "") {
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);
} else if (ScopeName == "clang") {
return llvm::StringSwitch<int>(Name)
.Case("aarch64_vector_pcs", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("address_space", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("annotate", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("objc_arc_weak_reference_unavailable", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("argument_with_type_tag", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("pointer_with_type_tag", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("argument_with_type_tag", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("pointer_with_type_tag", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("__clang_arm_mve_alias", true && (T.getArch() == llvm::Triple::arm || T.getArch() == llvm::Triple::thumb || T.getArch() == llvm::Triple::armeb || T.getArch() == llvm::Triple::thumbeb) && LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("availability", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("blocks", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("cf_audited_transfer", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("cf_consumed", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("cfi_canonical_jump_table", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("cf_returns_not_retained", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("cf_returns_retained", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("cf_unknown_transfer", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("cpu_dispatch", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("cpu_specific", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("callback", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("convergent", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("disable_tail_calls", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("enum_extensibility", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("exclude_from_explicit_instantiation", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("external_source_symbol", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("flag_enum", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("ibaction", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("iboutlet", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("iboutletcollection", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("internal_linkage", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("lto_visibility_public", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("mig_server_routine", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("minsize", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("min_vector_width", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("ns_consumed", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("ns_consumes_self", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("ns_returns_autoreleased", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("ns_returns_not_retained", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("ns_returns_retained", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("neon_polyvector_type", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("neon_vector_type", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("noderef", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("noduplicate", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("noescape", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("no_sanitize", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("no_sanitize_memory", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("no_speculative_load_hardening", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("no_stack_protector", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("no_thread_safety_analysis", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("not_tail_called", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("os_consumed", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("os_consumes_this", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("os_returns_not_retained", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("os_returns_retained", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("os_returns_retained_on_non_zero", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("os_returns_retained_on_zero", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("objc_boxable", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("objc_bridge", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("objc_bridge_mutable", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("objc_bridge_related", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("objc_class_stub", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("objc_designated_initializer", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("objc_exception", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("objc_protocol_requires_explicit_implementation", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("objc_externally_retained", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("objc_gc", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("objc_independent_class", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("objc_method_family", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("NSObject", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("objc_nonlazy_class", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("objc_ownership", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("objc_precise_lifetime", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("objc_requires_property_definitions", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("objc_requires_super", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("objc_returns_inner_pointer", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("objc_root_class", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("objc_runtime_name", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("objc_runtime_visible", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("objc_subclassing_restricted", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("optnone", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("overloadable", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("ownership_holds", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("ownership_returns", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("ownership_takes", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("ownership_holds", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("ownership_returns", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("ownership_takes", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("ownership_holds", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("ownership_returns", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("ownership_takes", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("pascal", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("pass_object_size", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("pass_dynamic_object_size", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("pass_object_size", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("pass_dynamic_object_size", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("preserve_all", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("preserve_most", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("speculative_load_hardening", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("swiftcall", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("swift_context", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("swift_error_result", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("swift_indirect_result", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("type_tag_for_datatype", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("type_visibility", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("unavailable", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("vectorcall", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("weak_import", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("import_module", true && (T.getArch() == llvm::Triple::wasm32 || T.getArch() == llvm::Triple::wasm64) && LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("import_name", true && (T.getArch() == llvm::Triple::wasm32 || T.getArch() == llvm::Triple::wasm64) && LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("xray_always_instrument", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("xray_never_instrument", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("xray_always_instrument", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("xray_never_instrument", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Case("xray_log_args", LangOpts.DoubleSquareBracketAttributes ? 1 : 0)
.Default(0);
}
} break;
}
|