Line data Source code
1 : /*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
2 : |* *|
3 : |* Attribute name matcher *|
4 : |* *|
5 : |* Automatically generated file, do not edit! *|
6 : |* *|
7 : \*===----------------------------------------------------------------------===*/
8 :
9 43025539 : static ParsedAttr::Kind getAttrKind(StringRef Name, ParsedAttr::Syntax Syntax) {
10 43025539 : if (ParsedAttr::AS_GNU == Syntax) {
11 42456131 : switch (Name.size()) {
12 : default: break;
13 91 : case 3: // 3 strings to match.
14 : switch (Name[0]) {
15 : default: break;
16 : case 'f': // 1 string to match.
17 14 : if (memcmp(Name.data()+1, "ar", 2) != 0)
18 : break;
19 14 : return ParsedAttr::AT_MipsLongCall; // "far"
20 : case 'h': // 1 string to match.
21 4 : if (memcmp(Name.data()+1, "ot", 2) != 0)
22 : break;
23 4 : return ParsedAttr::AT_Hot; // "hot"
24 : case 'p': // 1 string to match.
25 73 : if (memcmp(Name.data()+1, "cs", 2) != 0)
26 : break;
27 73 : return ParsedAttr::AT_Pcs; // "pcs"
28 : }
29 : break;
30 349167 : case 4: // 7 strings to match.
31 : switch (Name[0]) {
32 : default: break;
33 : case 'c': // 1 string to match.
34 27 : if (memcmp(Name.data()+1, "old", 3) != 0)
35 : break;
36 27 : return ParsedAttr::AT_Cold; // "cold"
37 : case 'h': // 1 string to match.
38 608 : if (memcmp(Name.data()+1, "ost", 3) != 0)
39 : break;
40 608 : return ParsedAttr::AT_CUDAHost; // "host"
41 : case 'm': // 1 string to match.
42 79158 : if (memcmp(Name.data()+1, "ode", 3) != 0)
43 : break;
44 79158 : return ParsedAttr::AT_Mode; // "mode"
45 : case 'n': // 1 string to match.
46 14 : if (memcmp(Name.data()+1, "ear", 3) != 0)
47 : break;
48 14 : return ParsedAttr::AT_MipsShortCall; // "near"
49 : case 'p': // 1 string to match.
50 268038 : if (memcmp(Name.data()+1, "ure", 3) != 0)
51 : break;
52 268038 : return ParsedAttr::AT_Pure; // "pure"
53 : case 'u': // 1 string to match.
54 110 : if (memcmp(Name.data()+1, "sed", 3) != 0)
55 : break;
56 110 : return ParsedAttr::AT_Used; // "used"
57 : case 'w': // 1 string to match.
58 1211 : if (memcmp(Name.data()+1, "eak", 3) != 0)
59 : break;
60 1211 : return ParsedAttr::AT_Weak; // "weak"
61 : }
62 : break;
63 548105 : case 5: // 6 strings to match.
64 : switch (Name[0]) {
65 : default: break;
66 : case 'a': // 1 string to match.
67 188 : if (memcmp(Name.data()+1, "lias", 4) != 0)
68 : break;
69 188 : return ParsedAttr::AT_Alias; // "alias"
70 547863 : case 'c': // 2 strings to match.
71 : switch (Name[1]) {
72 : default: break;
73 : case 'd': // 1 string to match.
74 97 : if (memcmp(Name.data()+2, "ecl", 3) != 0)
75 : break;
76 97 : return ParsedAttr::AT_CDecl; // "cdecl"
77 : case 'o': // 1 string to match.
78 547766 : if (memcmp(Name.data()+2, "nst", 3) != 0)
79 : break;
80 547766 : return ParsedAttr::AT_Const; // "const"
81 : }
82 : break;
83 : case 'i': // 1 string to match.
84 24 : if (memcmp(Name.data()+1, "func", 4) != 0)
85 : break;
86 24 : return ParsedAttr::AT_IFunc; // "ifunc"
87 30 : case 'n': // 2 strings to match.
88 : switch (Name[1]) {
89 : default: break;
90 : case 'a': // 1 string to match.
91 25 : if (memcmp(Name.data()+2, "ked", 3) != 0)
92 : break;
93 25 : return ParsedAttr::AT_Naked; // "naked"
94 : case 'o': // 1 string to match.
95 5 : if (memcmp(Name.data()+2, "svm", 3) != 0)
96 : break;
97 5 : return ParsedAttr::AT_OpenCLNoSVM; // "nosvm"
98 : }
99 : break;
100 : }
101 : break;
102 1216273 : case 6: // 15 strings to match.
103 : switch (Name[0]) {
104 : default: break;
105 : case 'b': // 1 string to match.
106 1158 : if (memcmp(Name.data()+1, "locks", 5) != 0)
107 : break;
108 1158 : return ParsedAttr::AT_Blocks; // "blocks"
109 : case 'c': // 1 string to match.
110 9 : if (memcmp(Name.data()+1, "ommon", 5) != 0)
111 : break;
112 9 : return ParsedAttr::AT_Common; // "common"
113 : case 'd': // 1 string to match.
114 1318 : if (memcmp(Name.data()+1, "evice", 5) != 0)
115 : break;
116 1318 : return ParsedAttr::AT_CUDADevice; // "device"
117 : case 'f': // 1 string to match.
118 109161 : if (memcmp(Name.data()+1, "ormat", 5) != 0)
119 : break;
120 109160 : return ParsedAttr::AT_Format; // "format"
121 : case 'g': // 1 string to match.
122 157 : if (memcmp(Name.data()+1, "lobal", 5) != 0)
123 : break;
124 157 : return ParsedAttr::AT_CUDAGlobal; // "global"
125 : case 'k': // 1 string to match.
126 4 : if (memcmp(Name.data()+1, "ernel", 5) != 0)
127 : break;
128 4 : return ParsedAttr::AT_RenderScriptKernel; // "kernel"
129 58552 : case 'm': // 3 strings to match.
130 : switch (Name[1]) {
131 : default: break;
132 : case 'a': // 1 string to match.
133 58499 : if (memcmp(Name.data()+2, "lloc", 4) != 0)
134 : break;
135 58499 : return ParsedAttr::AT_Restrict; // "malloc"
136 : case 'i': // 1 string to match.
137 17 : if (memcmp(Name.data()+2, "ps16", 4) != 0)
138 : break;
139 17 : return ParsedAttr::AT_Mips16; // "mips16"
140 : case 's': // 1 string to match.
141 36 : if (memcmp(Name.data()+2, "_abi", 4) != 0)
142 : break;
143 36 : return ParsedAttr::AT_MSABI; // "ms_abi"
144 : }
145 : break;
146 6920 : case 'p': // 2 strings to match.
147 6920 : if (Name[1] != 'a')
148 : break;
149 : switch (Name[2]) {
150 : default: break;
151 : case 'c': // 1 string to match.
152 6919 : if (memcmp(Name.data()+3, "ked", 3) != 0)
153 : break;
154 6919 : return ParsedAttr::AT_Packed; // "packed"
155 : case 's': // 1 string to match.
156 1 : if (memcmp(Name.data()+3, "cal", 3) != 0)
157 : break;
158 1 : return ParsedAttr::AT_Pascal; // "pascal"
159 : }
160 : break;
161 213 : case 's': // 2 strings to match.
162 : switch (Name[1]) {
163 : default: break;
164 : case 'h': // 1 string to match.
165 207 : if (memcmp(Name.data()+2, "ared", 4) != 0)
166 : break;
167 207 : return ParsedAttr::AT_CUDAShared; // "shared"
168 : case 'i': // 1 string to match.
169 5 : if (memcmp(Name.data()+2, "gnal", 4) != 0)
170 : break;
171 5 : return ParsedAttr::AT_AVRSignal; // "signal"
172 : }
173 : break;
174 : case 't': // 1 string to match.
175 1037440 : if (memcmp(Name.data()+1, "arget", 5) != 0)
176 : break;
177 1037440 : return ParsedAttr::AT_Target; // "target"
178 : case 'u': // 1 string to match.
179 1335 : if (memcmp(Name.data()+1, "nused", 5) != 0)
180 : break;
181 1335 : return ParsedAttr::AT_Unused; // "unused"
182 : }
183 : break;
184 2875620 : case 7: // 18 strings to match.
185 : switch (Name[0]) {
186 : default: break;
187 : case '_': // 1 string to match.
188 5 : if (memcmp(Name.data()+1, "_const", 6) != 0)
189 : break;
190 5 : return ParsedAttr::AT_Const; // "__const"
191 34779 : case 'a': // 2 strings to match.
192 : switch (Name[1]) {
193 : default: break;
194 : case 'b': // 1 string to match.
195 3404 : if (memcmp(Name.data()+2, "i_tag", 5) != 0)
196 : break;
197 3404 : return ParsedAttr::AT_AbiTag; // "abi_tag"
198 : case 'l': // 1 string to match.
199 31375 : if (memcmp(Name.data()+2, "igned", 5) != 0)
200 : break;
201 31375 : return ParsedAttr::AT_Aligned; // "aligned"
202 : }
203 : break;
204 : case 'b': // 1 string to match.
205 12 : if (memcmp(Name.data()+1, "ounded", 6) != 0)
206 : break;
207 12 : return ParsedAttr::IgnoredAttribute; // "bounded"
208 : case 'c': // 1 string to match.
209 114 : if (memcmp(Name.data()+1, "leanup", 6) != 0)
210 : break;
211 114 : return ParsedAttr::AT_Cleanup; // "cleanup"
212 : case 'f': // 1 string to match.
213 10 : if (memcmp(Name.data()+1, "latten", 6) != 0)
214 : break;
215 10 : return ParsedAttr::AT_Flatten; // "flatten"
216 : case 'm': // 1 string to match.
217 25 : if (memcmp(Name.data()+1, "insize", 6) != 0)
218 : break;
219 25 : return ParsedAttr::AT_MinSize; // "minsize"
220 2834784 : case 'n': // 4 strings to match.
221 : switch (Name[1]) {
222 : default: break;
223 2834778 : case 'o': // 3 strings to match.
224 : switch (Name[2]) {
225 : default: break;
226 : case 'd': // 1 string to match.
227 725186 : if (memcmp(Name.data()+3, "ebug", 4) != 0)
228 : break;
229 725186 : return ParsedAttr::AT_NoDebug; // "nodebug"
230 : case 'n': // 1 string to match.
231 2057428 : if (memcmp(Name.data()+3, "null", 4) != 0)
232 : break;
233 2057428 : return ParsedAttr::AT_NonNull; // "nonnull"
234 : case 't': // 1 string to match.
235 52164 : if (memcmp(Name.data()+3, "hrow", 4) != 0)
236 : break;
237 52164 : return ParsedAttr::AT_NoThrow; // "nothrow"
238 : }
239 : break;
240 : case 'v': // 1 string to match.
241 6 : if (memcmp(Name.data()+2, "_weak", 5) != 0)
242 : break;
243 6 : return ParsedAttr::IgnoredAttribute; // "nv_weak"
244 : }
245 : break;
246 712 : case 'o': // 2 strings to match.
247 : switch (Name[1]) {
248 : default: break;
249 : case 'b': // 1 string to match.
250 643 : if (memcmp(Name.data()+2, "jc_gc", 5) != 0)
251 : break;
252 643 : return ParsedAttr::AT_ObjCGC; // "objc_gc"
253 : case 'p': // 1 string to match.
254 69 : if (memcmp(Name.data()+2, "tnone", 5) != 0)
255 : break;
256 69 : return ParsedAttr::AT_OptimizeNone; // "optnone"
257 : }
258 : break;
259 : case 'r': // 2 strings to match.
260 153 : if (memcmp(Name.data()+1, "eg", 2) != 0)
261 : break;
262 : switch (Name[3]) {
263 : default: break;
264 : case 'c': // 1 string to match.
265 11 : if (memcmp(Name.data()+4, "all", 3) != 0)
266 : break;
267 11 : return ParsedAttr::AT_RegCall; // "regcall"
268 : case 'p': // 1 string to match.
269 142 : if (memcmp(Name.data()+4, "arm", 3) != 0)
270 : break;
271 142 : return ParsedAttr::AT_Regparm; // "regparm"
272 : }
273 : break;
274 249 : case 's': // 2 strings to match.
275 : switch (Name[1]) {
276 : default: break;
277 : case 'e': // 1 string to match.
278 142 : if (memcmp(Name.data()+2, "ction", 5) != 0)
279 : break;
280 142 : return ParsedAttr::AT_Section; // "section"
281 : case 't': // 1 string to match.
282 107 : if (memcmp(Name.data()+2, "dcall", 5) != 0)
283 : break;
284 107 : return ParsedAttr::AT_StdCall; // "stdcall"
285 : }
286 : break;
287 : case 'w': // 1 string to match.
288 4777 : if (memcmp(Name.data()+1, "eakref", 6) != 0)
289 : break;
290 4777 : return ParsedAttr::AT_WeakRef; // "weakref"
291 : }
292 : break;
293 44420 : case 8: // 15 strings to match.
294 : switch (Name[0]) {
295 : default: break;
296 : case 'N': // 1 string to match.
297 17 : if (memcmp(Name.data()+1, "SObject", 7) != 0)
298 : break;
299 17 : return ParsedAttr::AT_ObjCNSObject; // "NSObject"
300 : case 'a': // 1 string to match.
301 488 : if (memcmp(Name.data()+1, "nnotate", 7) != 0)
302 : break;
303 488 : return ParsedAttr::AT_Annotate; // "annotate"
304 : case 'c': // 1 string to match.
305 120 : if (memcmp(Name.data()+1, "onstant", 7) != 0)
306 : break;
307 120 : return ParsedAttr::AT_CUDAConstant; // "constant"
308 : case 'f': // 1 string to match.
309 93 : if (memcmp(Name.data()+1, "astcall", 7) != 0)
310 : break;
311 93 : return ParsedAttr::AT_FastCall; // "fastcall"
312 102 : case 'i': // 2 strings to match.
313 102 : if (Name[1] != 'b')
314 : break;
315 : switch (Name[2]) {
316 : default: break;
317 : case 'a': // 1 string to match.
318 57 : if (memcmp(Name.data()+3, "ction", 5) != 0)
319 : break;
320 57 : return ParsedAttr::AT_IBAction; // "ibaction"
321 : case 'o': // 1 string to match.
322 45 : if (memcmp(Name.data()+3, "utlet", 5) != 0)
323 : break;
324 45 : return ParsedAttr::AT_IBOutlet; // "iboutlet"
325 : }
326 : break;
327 : case 'l': // 1 string to match.
328 64 : if (memcmp(Name.data()+1, "ockable", 7) != 0)
329 : break;
330 64 : return ParsedAttr::AT_Lockable; // "lockable"
331 43088 : case 'n': // 5 strings to match.
332 43088 : if (Name[1] != 'o')
333 : break;
334 : switch (Name[2]) {
335 : default: break;
336 : case 'c': // 1 string to match.
337 4 : if (memcmp(Name.data()+3, "ommon", 5) != 0)
338 : break;
339 4 : return ParsedAttr::AT_NoCommon; // "nocommon"
340 : case 'e': // 1 string to match.
341 93 : if (memcmp(Name.data()+3, "scape", 5) != 0)
342 : break;
343 93 : return ParsedAttr::AT_NoEscape; // "noescape"
344 : case 'i': // 1 string to match.
345 357 : if (memcmp(Name.data()+3, "nline", 5) != 0)
346 : break;
347 357 : return ParsedAttr::AT_NoInline; // "noinline"
348 : case 'm': // 1 string to match.
349 10 : if (memcmp(Name.data()+3, "ips16", 5) != 0)
350 : break;
351 10 : return ParsedAttr::AT_NoMips16; // "nomips16"
352 : case 'r': // 1 string to match.
353 42624 : if (memcmp(Name.data()+3, "eturn", 5) != 0)
354 : break;
355 42624 : return ParsedAttr::AT_NoReturn; // "noreturn"
356 : }
357 : break;
358 428 : case 's': // 2 strings to match.
359 : switch (Name[1]) {
360 : default: break;
361 : case 'e': // 1 string to match.
362 415 : if (memcmp(Name.data()+2, "ntinel", 6) != 0)
363 : break;
364 415 : return ParsedAttr::AT_Sentinel; // "sentinel"
365 : case 'y': // 1 string to match.
366 13 : if (memcmp(Name.data()+2, "sv_abi", 6) != 0)
367 : break;
368 13 : return ParsedAttr::AT_SysVABI; // "sysv_abi"
369 : }
370 : break;
371 : case 't': // 1 string to match.
372 20 : if (memcmp(Name.data()+1, "hiscall", 7) != 0)
373 : break;
374 19 : return ParsedAttr::AT_ThisCall; // "thiscall"
375 : }
376 : break;
377 114128 : case 9: // 13 strings to match.
378 : switch (Name[0]) {
379 : default: break;
380 : case 'd': // 2 strings to match.
381 918 : if (memcmp(Name.data()+1, "ll", 2) != 0)
382 : break;
383 : switch (Name[3]) {
384 : default: break;
385 : case 'e': // 1 string to match.
386 335 : if (memcmp(Name.data()+4, "xport", 5) != 0)
387 : break;
388 335 : return ParsedAttr::AT_DLLExport; // "dllexport"
389 : case 'i': // 1 string to match.
390 583 : if (memcmp(Name.data()+4, "mport", 5) != 0)
391 : break;
392 583 : return ParsedAttr::AT_DLLImport; // "dllimport"
393 : }
394 : break;
395 : case 'e': // 1 string to match.
396 104864 : if (memcmp(Name.data()+1, "nable_if", 8) != 0)
397 : break;
398 104864 : return ParsedAttr::AT_EnableIf; // "enable_if"
399 : case 'f': // 1 string to match.
400 13 : if (memcmp(Name.data()+1, "lag_enum", 8) != 0)
401 : break;
402 13 : return ParsedAttr::AT_FlagEnum; // "flag_enum"
403 : case 'i': // 1 string to match.
404 447 : if (memcmp(Name.data()+1, "nterrupt", 8) != 0)
405 : break;
406 447 : return ParsedAttr::AT_Interrupt; // "interrupt"
407 : case 'l': // 1 string to match.
408 14 : if (memcmp(Name.data()+1, "ong_call", 8) != 0)
409 : break;
410 14 : return ParsedAttr::AT_MipsLongCall; // "long_call"
411 6640 : case 'm': // 3 strings to match.
412 : switch (Name[1]) {
413 : default: break;
414 : case 'a': // 1 string to match.
415 6557 : if (memcmp(Name.data()+2, "y_alias", 7) != 0)
416 : break;
417 6557 : return ParsedAttr::AT_MayAlias; // "may_alias"
418 : case 'i': // 1 string to match.
419 8 : if (memcmp(Name.data()+2, "cromips", 7) != 0)
420 : break;
421 8 : return ParsedAttr::AT_MicroMips; // "micromips"
422 : case 's': // 1 string to match.
423 75 : if (memcmp(Name.data()+2, "_struct", 7) != 0)
424 : break;
425 75 : return ParsedAttr::AT_MSStruct; // "ms_struct"
426 : }
427 : break;
428 1184 : case 's': // 2 strings to match.
429 : switch (Name[1]) {
430 : default: break;
431 : case 'e': // 1 string to match.
432 3 : if (memcmp(Name.data()+2, "lectany", 7) != 0)
433 : break;
434 3 : return ParsedAttr::AT_SelectAny; // "selectany"
435 : case 'w': // 1 string to match.
436 1180 : if (memcmp(Name.data()+2, "iftcall", 7) != 0)
437 : break;
438 1180 : return ParsedAttr::AT_SwiftCall; // "swiftcall"
439 : }
440 : break;
441 : case 't': // 1 string to match.
442 36 : if (memcmp(Name.data()+1, "ls_model", 8) != 0)
443 : break;
444 36 : return ParsedAttr::AT_TLSModel; // "tls_model"
445 : case 'v': // 1 string to match.
446 11 : if (memcmp(Name.data()+1, "ecreturn", 8) != 0)
447 : break;
448 11 : return ParsedAttr::AT_VecReturn; // "vecreturn"
449 : }
450 : break;
451 21313339 : case 10: // 15 strings to match.
452 : switch (Name[0]) {
453 : default: break;
454 114 : case 'a': // 2 strings to match.
455 : switch (Name[1]) {
456 : default: break;
457 : case 'l': // 1 string to match.
458 77 : if (memcmp(Name.data()+2, "loc_size", 8) != 0)
459 : break;
460 77 : return ParsedAttr::AT_AllocSize; // "alloc_size"
461 : case 'r': // 1 string to match.
462 37 : if (memcmp(Name.data()+2, "tificial", 8) != 0)
463 : break;
464 37 : return ParsedAttr::AT_Artificial; // "artificial"
465 : }
466 : break;
467 3293 : case 'c': // 3 strings to match.
468 : switch (Name[1]) {
469 : default: break;
470 : case 'a': // 1 string to match.
471 69 : if (memcmp(Name.data()+2, "pability", 8) != 0)
472 : break;
473 69 : return ParsedAttr::AT_Capability; // "capability"
474 3224 : case 'o': // 2 strings to match.
475 3224 : if (Name[2] != 'n')
476 : break;
477 : switch (Name[3]) {
478 : default: break;
479 : case 's': // 1 string to match.
480 26 : if (memcmp(Name.data()+4, "umable", 6) != 0)
481 : break;
482 26 : return ParsedAttr::AT_Consumable; // "consumable"
483 : case 'v': // 1 string to match.
484 3198 : if (memcmp(Name.data()+4, "ergent", 6) != 0)
485 : break;
486 3198 : return ParsedAttr::AT_Convergent; // "convergent"
487 : }
488 : break;
489 : }
490 : break;
491 6386 : case 'd': // 2 strings to match.
492 6386 : if (Name[1] != 'e')
493 : break;
494 : switch (Name[2]) {
495 : default: break;
496 : case 'p': // 1 string to match.
497 6349 : if (memcmp(Name.data()+3, "recated", 7) != 0)
498 : break;
499 6349 : return ParsedAttr::AT_Deprecated; // "deprecated"
500 : case 's': // 1 string to match.
501 37 : if (memcmp(Name.data()+3, "tructor", 7) != 0)
502 : break;
503 37 : return ParsedAttr::AT_Destructor; // "destructor"
504 : }
505 : break;
506 : case 'f': // 1 string to match.
507 1373 : if (memcmp(Name.data()+1, "ormat_arg", 9) != 0)
508 : break;
509 1373 : return ParsedAttr::AT_FormatArg; // "format_arg"
510 8740 : case 'g': // 2 strings to match.
511 : switch (Name[1]) {
512 : default: break;
513 : case 'n': // 1 string to match.
514 7116 : if (memcmp(Name.data()+2, "u_inline", 8) != 0)
515 : break;
516 7116 : return ParsedAttr::AT_GNUInline; // "gnu_inline"
517 : case 'u': // 1 string to match.
518 1624 : if (memcmp(Name.data()+2, "arded_by", 8) != 0)
519 : break;
520 1624 : return ParsedAttr::AT_GuardedBy; // "guarded_by"
521 : }
522 : break;
523 11 : case 'n': // 2 strings to match.
524 11 : if (Name[1] != 'o')
525 : break;
526 : switch (Name[2]) {
527 : default: break;
528 : case '_': // 1 string to match.
529 0 : if (memcmp(Name.data()+3, "destroy", 7) != 0)
530 : break;
531 0 : return ParsedAttr::AT_NoDestroy; // "no_destroy"
532 : case 'c': // 1 string to match.
533 11 : if (memcmp(Name.data()+3, "f_check", 7) != 0)
534 : break;
535 11 : return ParsedAttr::AT_AnyX86NoCfCheck; // "nocf_check"
536 : }
537 : break;
538 : case 's': // 1 string to match.
539 14 : if (memcmp(Name.data()+1, "hort_call", 9) != 0)
540 : break;
541 14 : return ParsedAttr::AT_MipsShortCall; // "short_call"
542 21293408 : case 'v': // 2 strings to match.
543 : switch (Name[1]) {
544 : default: break;
545 : case 'e': // 1 string to match.
546 17 : if (memcmp(Name.data()+2, "ctorcall", 8) != 0)
547 : break;
548 17 : return ParsedAttr::AT_VectorCall; // "vectorcall"
549 : case 'i': // 1 string to match.
550 21293391 : if (memcmp(Name.data()+2, "sibility", 8) != 0)
551 : break;
552 21293391 : return ParsedAttr::AT_Visibility; // "visibility"
553 : }
554 : break;
555 : }
556 : break;
557 412178 : case 11: // 16 strings to match.
558 : switch (Name[0]) {
559 : default: break;
560 361 : case 'a': // 2 strings to match.
561 361 : if (Name[1] != 'l')
562 : break;
563 : switch (Name[2]) {
564 : default: break;
565 : case 'i': // 1 string to match.
566 313 : if (memcmp(Name.data()+3, "gn_value", 8) != 0)
567 : break;
568 313 : return ParsedAttr::AT_AlignValue; // "align_value"
569 : case 'l': // 1 string to match.
570 48 : if (memcmp(Name.data()+3, "oc_align", 8) != 0)
571 : break;
572 48 : return ParsedAttr::AT_AllocAlign; // "alloc_align"
573 : }
574 : break;
575 332 : case 'c': // 2 strings to match.
576 : switch (Name[1]) {
577 : default: break;
578 : case 'f': // 1 string to match.
579 298 : if (memcmp(Name.data()+2, "_consumed", 9) != 0)
580 : break;
581 298 : return ParsedAttr::AT_CFConsumed; // "cf_consumed"
582 : case 'o': // 1 string to match.
583 34 : if (memcmp(Name.data()+2, "nstructor", 9) != 0)
584 : break;
585 34 : return ParsedAttr::AT_Constructor; // "constructor"
586 : }
587 : break;
588 : case 'd': // 1 string to match.
589 233225 : if (memcmp(Name.data()+1, "iagnose_if", 10) != 0)
590 : break;
591 233225 : return ParsedAttr::AT_DiagnoseIf; // "diagnose_if"
592 : case 'g': // 1 string to match.
593 37 : if (memcmp(Name.data()+1, "uarded_var", 10) != 0)
594 : break;
595 37 : return ParsedAttr::AT_GuardedVar; // "guarded_var"
596 137994 : case 'n': // 4 strings to match.
597 : switch (Name[1]) {
598 : default: break;
599 137882 : case 'o': // 3 strings to match.
600 : switch (Name[2]) {
601 : default: break;
602 : case '_': // 1 string to match.
603 137871 : if (memcmp(Name.data()+3, "sanitize", 8) != 0)
604 : break;
605 137871 : return ParsedAttr::AT_NoSanitize; // "no_sanitize"
606 : case 'd': // 1 string to match.
607 6 : if (memcmp(Name.data()+3, "uplicate", 8) != 0)
608 : break;
609 6 : return ParsedAttr::AT_NoDuplicate; // "noduplicate"
610 : case 'm': // 1 string to match.
611 5 : if (memcmp(Name.data()+3, "icromips", 8) != 0)
612 : break;
613 5 : return ParsedAttr::AT_NoMicroMips; // "nomicromips"
614 : }
615 : break;
616 : case 's': // 1 string to match.
617 112 : if (memcmp(Name.data()+2, "_consumed", 9) != 0)
618 : break;
619 112 : return ParsedAttr::AT_NSConsumed; // "ns_consumed"
620 : }
621 : break;
622 : case 'o': // 1 string to match.
623 208 : if (memcmp(Name.data()+1, "bjc_bridge", 10) != 0)
624 : break;
625 208 : return ParsedAttr::AT_ObjCBridge; // "objc_bridge"
626 : case 't': // 1 string to match.
627 33 : if (memcmp(Name.data()+1, "rivial_abi", 10) != 0)
628 : break;
629 33 : return ParsedAttr::AT_TrivialABI; // "trivial_abi"
630 : case 'u': // 1 string to match.
631 1610 : if (memcmp(Name.data()+1, "navailable", 10) != 0)
632 : break;
633 1610 : return ParsedAttr::AT_Unavailable; // "unavailable"
634 : case 'v': // 1 string to match.
635 38318 : if (memcmp(Name.data()+1, "ector_size", 10) != 0)
636 : break;
637 38318 : return ParsedAttr::AT_VectorSize; // "vector_size"
638 60 : case 'w': // 2 strings to match.
639 : switch (Name[1]) {
640 : default: break;
641 : case 'a': // 1 string to match.
642 7 : if (memcmp(Name.data()+2, "rn_unused", 9) != 0)
643 : break;
644 7 : return ParsedAttr::AT_WarnUnused; // "warn_unused"
645 : case 'e': // 1 string to match.
646 53 : if (memcmp(Name.data()+2, "ak_import", 9) != 0)
647 : break;
648 53 : return ParsedAttr::AT_WeakImport; // "weak_import"
649 : }
650 : break;
651 : }
652 : break;
653 292343 : case 12: // 6 strings to match.
654 : switch (Name[0]) {
655 : default: break;
656 : case 'a': // 1 string to match.
657 1699 : if (memcmp(Name.data()+1, "vailability", 11) != 0)
658 : break;
659 1699 : return ParsedAttr::AT_Availability; // "availability"
660 : case 'c': // 2 strings to match.
661 226 : if (memcmp(Name.data()+1, "pu_", 3) != 0)
662 : break;
663 : switch (Name[4]) {
664 : default: break;
665 : case 'd': // 1 string to match.
666 59 : if (memcmp(Name.data()+5, "ispatch", 7) != 0)
667 : break;
668 59 : return ParsedAttr::AT_CPUDispatch; // "cpu_dispatch"
669 : case 's': // 1 string to match.
670 167 : if (memcmp(Name.data()+5, "pecific", 7) != 0)
671 : break;
672 167 : return ParsedAttr::AT_CPUSpecific; // "cpu_specific"
673 : }
674 : break;
675 290382 : case 'o': // 2 strings to match.
676 : switch (Name[1]) {
677 : default: break;
678 : case 'b': // 1 string to match.
679 57 : if (memcmp(Name.data()+2, "jc_boxable", 10) != 0)
680 : break;
681 57 : return ParsedAttr::AT_ObjCBoxable; // "objc_boxable"
682 : case 'v': // 1 string to match.
683 290325 : if (memcmp(Name.data()+2, "erloadable", 10) != 0)
684 : break;
685 290325 : return ParsedAttr::AT_Overloadable; // "overloadable"
686 : }
687 : break;
688 : case 'p': // 1 string to match.
689 36 : if (memcmp(Name.data()+1, "reserve_all", 11) != 0)
690 : break;
691 36 : return ParsedAttr::AT_PreserveAll; // "preserve_all"
692 : }
693 : break;
694 10441787 : case 13: // 15 strings to match.
695 : switch (Name[0]) {
696 : default: break;
697 10439542 : case 'a': // 2 strings to match.
698 : switch (Name[1]) {
699 : default: break;
700 : case 'd': // 1 string to match.
701 498 : if (memcmp(Name.data()+2, "dress_space", 11) != 0)
702 : break;
703 498 : return ParsedAttr::AT_AddressSpace; // "address_space"
704 : case 'l': // 1 string to match.
705 10439044 : if (memcmp(Name.data()+2, "ways_inline", 11) != 0)
706 : break;
707 10439044 : return ParsedAttr::AT_AlwaysInline; // "always_inline"
708 : }
709 : break;
710 : case 'c': // 1 string to match.
711 37 : if (memcmp(Name.data()+1, "allable_when", 12) != 0)
712 : break;
713 37 : return ParsedAttr::AT_CallableWhen; // "callable_when"
714 : case 'i': // 1 string to match.
715 1210 : if (memcmp(Name.data()+1, "nit_priority", 12) != 0)
716 : break;
717 1210 : return ParsedAttr::AT_InitPriority; // "init_priority"
718 344 : case 'l': // 3 strings to match.
719 : switch (Name[1]) {
720 : default: break;
721 : case 'a': // 1 string to match.
722 74 : if (memcmp(Name.data()+2, "unch_bounds", 11) != 0)
723 : break;
724 74 : return ParsedAttr::AT_CUDALaunchBounds; // "launch_bounds"
725 : case 'i': // 1 string to match.
726 0 : if (memcmp(Name.data()+2, "fetimebound", 11) != 0)
727 : break;
728 0 : return ParsedAttr::AT_LifetimeBound; // "lifetimebound"
729 : case 'o': // 1 string to match.
730 270 : if (memcmp(Name.data()+2, "ck_returned", 11) != 0)
731 : break;
732 270 : return ParsedAttr::AT_LockReturned; // "lock_returned"
733 : }
734 : break;
735 507 : case 'p': // 2 strings to match.
736 : switch (Name[1]) {
737 : default: break;
738 : case 'r': // 1 string to match.
739 48 : if (memcmp(Name.data()+2, "eserve_most", 11) != 0)
740 : break;
741 48 : return ParsedAttr::AT_PreserveMost; // "preserve_most"
742 : case 't': // 1 string to match.
743 459 : if (memcmp(Name.data()+2, "_guarded_by", 11) != 0)
744 : break;
745 459 : return ParsedAttr::AT_PtGuardedBy; // "pt_guarded_by"
746 : }
747 : break;
748 14 : case 'r': // 2 strings to match.
749 14 : if (Name[1] != 'e')
750 : break;
751 : switch (Name[2]) {
752 : default: break;
753 : case 'i': // 1 string to match.
754 1 : if (memcmp(Name.data()+3, "nitializes", 10) != 0)
755 : break;
756 1 : return ParsedAttr::AT_Reinitializes; // "reinitializes"
757 : case 't': // 1 string to match.
758 13 : if (memcmp(Name.data()+3, "urns_twice", 10) != 0)
759 : break;
760 13 : return ParsedAttr::AT_ReturnsTwice; // "returns_twice"
761 : }
762 : break;
763 94 : case 's': // 2 strings to match.
764 : switch (Name[1]) {
765 : default: break;
766 : case 'e': // 1 string to match.
767 38 : if (memcmp(Name.data()+2, "t_typestate", 11) != 0)
768 : break;
769 38 : return ParsedAttr::AT_SetTypestate; // "set_typestate"
770 : case 'w': // 1 string to match.
771 56 : if (memcmp(Name.data()+2, "ift_context", 11) != 0)
772 : break;
773 56 : return ParsedAttr::AT_SwiftContext; // "swift_context"
774 : }
775 : break;
776 : case 'v': // 1 string to match.
777 21 : if (memcmp(Name.data()+1, "ec_type_hint", 12) != 0)
778 : break;
779 21 : return ParsedAttr::AT_VecTypeHint; // "vec_type_hint"
780 : case 'x': // 1 string to match.
781 18 : if (memcmp(Name.data()+1, "ray_log_args", 12) != 0)
782 : break;
783 18 : return ParsedAttr::AT_XRayLogArgs; // "xray_log_args"
784 : }
785 : break;
786 7225 : case 14: // 12 strings to match.
787 : switch (Name[0]) {
788 : default: break;
789 484 : case 'a': // 3 strings to match.
790 : switch (Name[1]) {
791 : default: break;
792 : case 'c': // 1 string to match.
793 438 : if (memcmp(Name.data()+2, "quired_after", 12) != 0)
794 : break;
795 438 : return ParsedAttr::AT_AcquiredAfter; // "acquired_after"
796 : case 'l': // 1 string to match.
797 0 : if (memcmp(Name.data()+2, "ways_destroy", 12) != 0)
798 : break;
799 0 : return ParsedAttr::AT_AlwaysDestroy; // "always_destroy"
800 : case 's': // 1 string to match.
801 46 : if (memcmp(Name.data()+2, "sume_aligned", 12) != 0)
802 : break;
803 46 : return ParsedAttr::AT_AssumeAligned; // "assume_aligned"
804 : }
805 : break;
806 : case 'c': // 1 string to match.
807 6 : if (memcmp(Name.data()+1, "udart_builtin", 13) != 0)
808 : break;
809 6 : return ParsedAttr::IgnoredAttribute; // "cudart_builtin"
810 : case 'd': // 1 string to match.
811 24 : if (memcmp(Name.data()+1, "evice_builtin", 13) != 0)
812 : break;
813 24 : return ParsedAttr::IgnoredAttribute; // "device_builtin"
814 : case 'i': // 1 string to match.
815 6 : if (memcmp(Name.data()+1, "ntel_ocl_bicc", 13) != 0)
816 : break;
817 6 : return ParsedAttr::AT_IntelOclBicc; // "intel_ocl_bicc"
818 : case 'l': // 1 string to match.
819 425 : if (memcmp(Name.data()+1, "ocks_excluded", 13) != 0)
820 : break;
821 425 : return ParsedAttr::AT_LocksExcluded; // "locks_excluded"
822 : case 'n': // 1 string to match.
823 11 : if (memcmp(Name.data()+1, "o_split_stack", 13) != 0)
824 : break;
825 11 : return ParsedAttr::AT_NoSplitStack; // "no_split_stack"
826 : case 'o': // 2 strings to match.
827 6190 : if (memcmp(Name.data()+1, "bjc_", 4) != 0)
828 : break;
829 : switch (Name[5]) {
830 : default: break;
831 : case 'e': // 1 string to match.
832 29 : if (memcmp(Name.data()+6, "xception", 8) != 0)
833 : break;
834 29 : return ParsedAttr::AT_ObjCException; // "objc_exception"
835 : case 'o': // 1 string to match.
836 6161 : if (memcmp(Name.data()+6, "wnership", 8) != 0)
837 : break;
838 6161 : return ParsedAttr::AT_ObjCOwnership; // "objc_ownership"
839 : }
840 : break;
841 : case 'p': // 1 string to match.
842 53 : if (memcmp(Name.data()+1, "t_guarded_var", 13) != 0)
843 : break;
844 53 : return ParsedAttr::AT_PtGuardedVar; // "pt_guarded_var"
845 : case 't': // 1 string to match.
846 26 : if (memcmp(Name.data()+1, "est_typestate", 13) != 0)
847 : break;
848 26 : return ParsedAttr::AT_TestTypestate; // "test_typestate"
849 : }
850 : break;
851 3822626 : case 15: // 13 strings to match.
852 : switch (Name[0]) {
853 : default: break;
854 605 : case 'a': // 3 strings to match.
855 : switch (Name[1]) {
856 : default: break;
857 : case 'c': // 1 string to match.
858 317 : if (memcmp(Name.data()+2, "quired_before", 13) != 0)
859 : break;
860 317 : return ParsedAttr::AT_AcquiredBefore; // "acquired_before"
861 : case 'm': // 2 strings to match.
862 288 : if (memcmp(Name.data()+2, "dgpu_num_", 9) != 0)
863 : break;
864 : switch (Name[11]) {
865 : default: break;
866 : case 's': // 1 string to match.
867 144 : if (memcmp(Name.data()+12, "gpr", 3) != 0)
868 : break;
869 144 : return ParsedAttr::AT_AMDGPUNumSGPR; // "amdgpu_num_sgpr"
870 : case 'v': // 1 string to match.
871 144 : if (memcmp(Name.data()+12, "gpr", 3) != 0)
872 : break;
873 144 : return ParsedAttr::AT_AMDGPUNumVGPR; // "amdgpu_num_vgpr"
874 : }
875 : break;
876 : }
877 : break;
878 : case 'e': // 1 string to match.
879 3573 : if (memcmp(Name.data()+1, "xt_vector_type", 14) != 0)
880 : break;
881 3573 : return ParsedAttr::AT_ExtVectorType; // "ext_vector_type"
882 : case 'n': // 1 string to match.
883 8 : if (memcmp(Name.data()+1, "ot_tail_called", 14) != 0)
884 : break;
885 8 : return ParsedAttr::AT_NotTailCalled; // "not_tail_called"
886 264 : case 'o': // 3 strings to match.
887 : switch (Name[1]) {
888 : default: break;
889 : case 'b': // 1 string to match.
890 166 : if (memcmp(Name.data()+2, "jc_root_class", 13) != 0)
891 : break;
892 166 : return ParsedAttr::AT_ObjCRootClass; // "objc_root_class"
893 : case 'w': // 2 strings to match.
894 98 : if (memcmp(Name.data()+2, "nership_", 8) != 0)
895 : break;
896 : switch (Name[10]) {
897 : default: break;
898 : case 'h': // 1 string to match.
899 54 : if (memcmp(Name.data()+11, "olds", 4) != 0)
900 : break;
901 54 : return ParsedAttr::AT_Ownership; // "ownership_holds"
902 : case 't': // 1 string to match.
903 44 : if (memcmp(Name.data()+11, "akes", 4) != 0)
904 : break;
905 44 : return ParsedAttr::AT_Ownership; // "ownership_takes"
906 : }
907 : break;
908 : }
909 : break;
910 : case 'p': // 1 string to match.
911 21 : if (memcmp(Name.data()+1, "aram_typestate", 14) != 0)
912 : break;
913 21 : return ParsedAttr::AT_ParamTypestate; // "param_typestate"
914 : case 'r': // 1 string to match.
915 28 : if (memcmp(Name.data()+1, "eturns_nonnull", 14) != 0)
916 : break;
917 28 : return ParsedAttr::AT_ReturnsNonNull; // "returns_nonnull"
918 : case 's': // 1 string to match.
919 85 : if (memcmp(Name.data()+1, "coped_lockable", 14) != 0)
920 : break;
921 85 : return ParsedAttr::AT_ScopedLockable; // "scoped_lockable"
922 : case 't': // 1 string to match.
923 3817214 : if (memcmp(Name.data()+1, "ype_visibility", 14) != 0)
924 : break;
925 3817214 : return ParsedAttr::AT_TypeVisibility; // "type_visibility"
926 : case 'u': // 1 string to match.
927 828 : if (memcmp(Name.data()+1, "nlock_function", 14) != 0)
928 : break;
929 828 : return ParsedAttr::AT_ReleaseCapability; // "unlock_function"
930 : }
931 : break;
932 990537 : case 16: // 6 strings to match.
933 : switch (Name[0]) {
934 : default: break;
935 : case 'i': // 1 string to match.
936 36 : if (memcmp(Name.data()+1, "nternal_linkage", 15) != 0)
937 : break;
938 36 : return ParsedAttr::AT_InternalLinkage; // "internal_linkage"
939 : case 'm': // 1 string to match.
940 985493 : if (memcmp(Name.data()+1, "in_vector_width", 15) != 0)
941 : break;
942 985493 : return ParsedAttr::AT_MinVectorWidth; // "min_vector_width"
943 4742 : case 'n': // 2 strings to match.
944 : switch (Name[1]) {
945 : default: break;
946 : case 'e': // 1 string to match.
947 4728 : if (memcmp(Name.data()+2, "on_vector_type", 14) != 0)
948 : break;
949 4728 : return ParsedAttr::AT_NeonVectorType; // "neon_vector_type"
950 : case 's': // 1 string to match.
951 14 : if (memcmp(Name.data()+2, "_consumes_self", 14) != 0)
952 : break;
953 14 : return ParsedAttr::AT_NSConsumesSelf; // "ns_consumes_self"
954 : }
955 : break;
956 : case 'p': // 1 string to match.
957 228 : if (memcmp(Name.data()+1, "ass_object_size", 15) != 0)
958 : break;
959 228 : return ParsedAttr::AT_PassObjectSize; // "pass_object_size"
960 : case 'r': // 1 string to match.
961 38 : if (memcmp(Name.data()+1, "eturn_typestate", 15) != 0)
962 : break;
963 38 : return ParsedAttr::AT_ReturnTypestate; // "return_typestate"
964 : }
965 : break;
966 249 : case 17: // 6 strings to match.
967 : switch (Name[0]) {
968 : default: break;
969 51 : case 'a': // 2 strings to match.
970 : switch (Name[1]) {
971 : default: break;
972 : case 'n': // 1 string to match.
973 6 : if (memcmp(Name.data()+2, "alyzer_noreturn", 15) != 0)
974 : break;
975 6 : return ParsedAttr::AT_AnalyzerNoReturn; // "analyzer_noreturn"
976 : case 's': // 1 string to match.
977 45 : if (memcmp(Name.data()+2, "sert_capability", 15) != 0)
978 : break;
979 45 : return ParsedAttr::AT_AssertCapability; // "assert_capability"
980 : }
981 : break;
982 130 : case 'o': // 2 strings to match.
983 : switch (Name[1]) {
984 : default: break;
985 : case 'b': // 1 string to match.
986 79 : if (memcmp(Name.data()+2, "jc_runtime_name", 15) != 0)
987 : break;
988 79 : return ParsedAttr::AT_ObjCRuntimeName; // "objc_runtime_name"
989 : case 'w': // 1 string to match.
990 51 : if (memcmp(Name.data()+2, "nership_returns", 15) != 0)
991 : break;
992 51 : return ParsedAttr::AT_Ownership; // "ownership_returns"
993 : }
994 : break;
995 : case 's': // 1 string to match.
996 11 : if (memcmp(Name.data()+1, "hared_capability", 16) != 0)
997 : break;
998 11 : return ParsedAttr::AT_Capability; // "shared_capability"
999 : case 't': // 1 string to match.
1000 54 : if (memcmp(Name.data()+1, "ransparent_union", 16) != 0)
1001 : break;
1002 54 : return ParsedAttr::AT_TransparentUnion; // "transparent_union"
1003 : }
1004 : break;
1005 20591 : case 18: // 14 strings to match.
1006 : switch (Name[0]) {
1007 : default: break;
1008 375 : case 'a': // 2 strings to match.
1009 : switch (Name[1]) {
1010 : default: break;
1011 : case 'c': // 1 string to match.
1012 343 : if (memcmp(Name.data()+2, "quire_capability", 16) != 0)
1013 : break;
1014 343 : return ParsedAttr::AT_AcquireCapability; // "acquire_capability"
1015 : case 's': // 1 string to match.
1016 32 : if (memcmp(Name.data()+2, "sert_shared_lock", 16) != 0)
1017 : break;
1018 32 : return ParsedAttr::AT_AssertSharedLock; // "assert_shared_lock"
1019 : }
1020 : break;
1021 : case 'c': // 1 string to match.
1022 0 : if (memcmp(Name.data()+1, "arries_dependency", 17) != 0)
1023 : break;
1024 0 : return ParsedAttr::AT_CarriesDependency; // "carries_dependency"
1025 : case 'd': // 1 string to match.
1026 10 : if (memcmp(Name.data()+1, "isable_tail_calls", 17) != 0)
1027 : break;
1028 10 : return ParsedAttr::AT_DisableTailCalls; // "disable_tail_calls"
1029 : case 'e': // 1 string to match.
1030 711 : if (memcmp(Name.data()+1, "num_extensibility", 17) != 0)
1031 : break;
1032 37 : return ParsedAttr::AT_EnumExtensibility; // "enum_extensibility"
1033 : case 'i': // 1 string to match.
1034 74 : if (memcmp(Name.data()+1, "boutletcollection", 17) != 0)
1035 : break;
1036 74 : return ParsedAttr::AT_IBOutletCollection; // "iboutletcollection"
1037 : case 'n': // 3 strings to match.
1038 45 : if (memcmp(Name.data()+1, "o_s", 3) != 0)
1039 : break;
1040 : switch (Name[4]) {
1041 : default: break;
1042 : case 'a': // 2 strings to match.
1043 32 : if (memcmp(Name.data()+5, "nitize_", 7) != 0)
1044 : break;
1045 : switch (Name[12]) {
1046 : default: break;
1047 : case 'm': // 1 string to match.
1048 12 : if (memcmp(Name.data()+13, "emory", 5) != 0)
1049 : break;
1050 12 : return ParsedAttr::AT_NoSanitizeSpecific; // "no_sanitize_memory"
1051 : case 't': // 1 string to match.
1052 20 : if (memcmp(Name.data()+13, "hread", 5) != 0)
1053 : break;
1054 20 : return ParsedAttr::AT_NoSanitizeSpecific; // "no_sanitize_thread"
1055 : }
1056 : break;
1057 : case 't': // 1 string to match.
1058 13 : if (memcmp(Name.data()+5, "ack_protector", 13) != 0)
1059 : break;
1060 13 : return ParsedAttr::AT_NoStackProtector; // "no_stack_protector"
1061 : }
1062 : break;
1063 76 : case 'o': // 2 strings to match.
1064 : switch (Name[1]) {
1065 : default: break;
1066 : case 'b': // 1 string to match.
1067 37 : if (memcmp(Name.data()+2, "jc_method_family", 16) != 0)
1068 : break;
1069 37 : return ParsedAttr::AT_ObjCMethodFamily; // "objc_method_family"
1070 : case 'p': // 1 string to match.
1071 39 : if (memcmp(Name.data()+2, "encl_unroll_hint", 16) != 0)
1072 : break;
1073 39 : return ParsedAttr::AT_OpenCLUnrollHint; // "opencl_unroll_hint"
1074 : }
1075 : break;
1076 : case 'r': // 1 string to match.
1077 110 : if (memcmp(Name.data()+1, "elease_capability", 17) != 0)
1078 : break;
1079 110 : return ParsedAttr::AT_ReleaseCapability; // "release_capability"
1080 : case 's': // 1 string to match.
1081 34 : if (memcmp(Name.data()+1, "wift_error_result", 17) != 0)
1082 : break;
1083 34 : return ParsedAttr::AT_SwiftErrorResult; // "swift_error_result"
1084 : case 'w': // 1 string to match.
1085 19156 : if (memcmp(Name.data()+1, "arn_unused_result", 17) != 0)
1086 : break;
1087 19156 : return ParsedAttr::AT_WarnUnusedResult; // "warn_unused_result"
1088 : }
1089 : break;
1090 1582 : case 19: // 10 strings to match.
1091 : switch (Name[0]) {
1092 : default: break;
1093 : case 'a': // 1 string to match.
1094 236 : if (memcmp(Name.data()+1, "mdgpu_waves_per_eu", 18) != 0)
1095 : break;
1096 236 : return ParsedAttr::AT_AMDGPUWavesPerEU; // "amdgpu_waves_per_eu"
1097 : case 'c': // 3 strings to match.
1098 190 : if (memcmp(Name.data()+1, "f_", 2) != 0)
1099 : break;
1100 : switch (Name[3]) {
1101 : default: break;
1102 : case 'a': // 1 string to match.
1103 0 : if (memcmp(Name.data()+4, "udited_transfer", 15) != 0)
1104 : break;
1105 0 : return ParsedAttr::AT_CFAuditedTransfer; // "cf_audited_transfer"
1106 : case 'r': // 1 string to match.
1107 189 : if (memcmp(Name.data()+4, "eturns_retained", 15) != 0)
1108 : break;
1109 189 : return ParsedAttr::AT_CFReturnsRetained; // "cf_returns_retained"
1110 : case 'u': // 1 string to match.
1111 1 : if (memcmp(Name.data()+4, "nknown_transfer", 15) != 0)
1112 : break;
1113 1 : return ParsedAttr::AT_CFUnknownTransfer; // "cf_unknown_transfer"
1114 : }
1115 : break;
1116 339 : case 'n': // 2 strings to match.
1117 : switch (Name[1]) {
1118 : default: break;
1119 : case 'o': // 1 string to match.
1120 33 : if (memcmp(Name.data()+2, "_sanitize_address", 17) != 0)
1121 : break;
1122 33 : return ParsedAttr::AT_NoSanitizeSpecific; // "no_sanitize_address"
1123 : case 's': // 1 string to match.
1124 306 : if (memcmp(Name.data()+2, "_returns_retained", 17) != 0)
1125 : break;
1126 306 : return ParsedAttr::AT_NSReturnsRetained; // "ns_returns_retained"
1127 : }
1128 : break;
1129 : case 'o': // 3 strings to match.
1130 129 : if (memcmp(Name.data()+1, "bjc_", 4) != 0)
1131 : break;
1132 : switch (Name[5]) {
1133 : default: break;
1134 : case 'b': // 2 strings to match.
1135 76 : if (memcmp(Name.data()+6, "ridge_", 6) != 0)
1136 : break;
1137 : switch (Name[12]) {
1138 : default: break;
1139 : case 'm': // 1 string to match.
1140 20 : if (memcmp(Name.data()+13, "utable", 6) != 0)
1141 : break;
1142 20 : return ParsedAttr::AT_ObjCBridgeMutable; // "objc_bridge_mutable"
1143 : case 'r': // 1 string to match.
1144 56 : if (memcmp(Name.data()+13, "elated", 6) != 0)
1145 : break;
1146 56 : return ParsedAttr::AT_ObjCBridgeRelated; // "objc_bridge_related"
1147 : }
1148 : break;
1149 : case 'r': // 1 string to match.
1150 53 : if (memcmp(Name.data()+6, "equires_super", 13) != 0)
1151 : break;
1152 53 : return ParsedAttr::AT_ObjCRequiresSuper; // "objc_requires_super"
1153 : }
1154 : break;
1155 : case 'r': // 1 string to match.
1156 688 : if (memcmp(Name.data()+1, "equires_capability", 18) != 0)
1157 : break;
1158 688 : return ParsedAttr::AT_RequiresCapability; // "requires_capability"
1159 : }
1160 : break;
1161 1516 : case 20: // 5 strings to match.
1162 : switch (Name[0]) {
1163 : default: break;
1164 : case 'n': // 1 string to match.
1165 1178 : if (memcmp(Name.data()+1, "eon_polyvector_type", 19) != 0)
1166 : break;
1167 1178 : return ParsedAttr::AT_NeonPolyVectorType; // "neon_polyvector_type"
1168 : case 'o': // 1 string to match.
1169 4 : if (memcmp(Name.data()+1, "bjc_runtime_visible", 19) != 0)
1170 : break;
1171 4 : return ParsedAttr::AT_ObjCRuntimeVisible; // "objc_runtime_visible"
1172 : case 'r': // 1 string to match.
1173 30 : if (memcmp(Name.data()+1, "eqd_work_group_size", 19) != 0)
1174 : break;
1175 30 : return ParsedAttr::AT_ReqdWorkGroupSize; // "reqd_work_group_size"
1176 : case 's': // 1 string to match.
1177 288 : if (memcmp(Name.data()+1, "hared_lock_function", 19) != 0)
1178 : break;
1179 288 : return ParsedAttr::AT_AcquireCapability; // "shared_lock_function"
1180 : case 'w': // 1 string to match.
1181 16 : if (memcmp(Name.data()+1, "ork_group_size_hint", 19) != 0)
1182 : break;
1183 16 : return ParsedAttr::AT_WorkGroupSizeHint; // "work_group_size_hint"
1184 : }
1185 : break;
1186 1022 : case 21: // 8 strings to match.
1187 : switch (Name[0]) {
1188 : default: break;
1189 : case 'a': // 1 string to match.
1190 38 : if (memcmp(Name.data()+1, "ssert_exclusive_lock", 20) != 0)
1191 : break;
1192 38 : return ParsedAttr::AT_AssertExclusiveLock; // "assert_exclusive_lock"
1193 : case 'l': // 1 string to match.
1194 0 : if (memcmp(Name.data()+1, "to_visibility_public", 20) != 0)
1195 : break;
1196 0 : return ParsedAttr::AT_LTOVisibilityPublic; // "lto_visibility_public"
1197 : case 'o': // 1 string to match.
1198 10 : if (memcmp(Name.data()+1, "bjc_precise_lifetime", 20) != 0)
1199 : break;
1200 10 : return ParsedAttr::AT_ObjCPreciseLifetime; // "objc_precise_lifetime"
1201 : case 'p': // 1 string to match.
1202 258 : if (memcmp(Name.data()+1, "ointer_with_type_tag", 20) != 0)
1203 : break;
1204 258 : return ParsedAttr::AT_ArgumentWithTypeTag; // "pointer_with_type_tag"
1205 372 : case 's': // 2 strings to match.
1206 : switch (Name[1]) {
1207 : default: break;
1208 : case 'h': // 1 string to match.
1209 304 : if (memcmp(Name.data()+2, "ared_locks_required", 19) != 0)
1210 : break;
1211 304 : return ParsedAttr::AT_RequiresCapability; // "shared_locks_required"
1212 : case 'w': // 1 string to match.
1213 68 : if (memcmp(Name.data()+2, "ift_indirect_result", 19) != 0)
1214 : break;
1215 68 : return ParsedAttr::AT_SwiftIndirectResult; // "swift_indirect_result"
1216 : }
1217 : break;
1218 : case 't': // 1 string to match.
1219 344 : if (memcmp(Name.data()+1, "ype_tag_for_datatype", 20) != 0)
1220 : break;
1221 344 : return ParsedAttr::AT_TypeTagForDatatype; // "type_tag_for_datatype"
1222 : case 'x': // 1 string to match.
1223 0 : if (memcmp(Name.data()+1, "ray_never_instrument", 20) != 0)
1224 : break;
1225 0 : return ParsedAttr::AT_XRayInstrument; // "xray_never_instrument"
1226 : }
1227 : break;
1228 243 : case 22: // 6 strings to match.
1229 : switch (Name[0]) {
1230 : default: break;
1231 : case 'a': // 1 string to match.
1232 33 : if (memcmp(Name.data()+1, "rgument_with_type_tag", 21) != 0)
1233 : break;
1234 33 : return ParsedAttr::AT_ArgumentWithTypeTag; // "argument_with_type_tag"
1235 : case 'e': // 1 string to match.
1236 122 : if (memcmp(Name.data()+1, "xternal_source_symbol", 21) != 0)
1237 : break;
1238 122 : return ParsedAttr::AT_ExternalSourceSymbol; // "external_source_symbol"
1239 : case 'n': // 1 string to match.
1240 27 : if (memcmp(Name.data()+1, "o_instrument_function", 21) != 0)
1241 : break;
1242 27 : return ParsedAttr::AT_NoInstrumentFunction; // "no_instrument_function"
1243 : case 'o': // 1 string to match.
1244 9 : if (memcmp(Name.data()+1, "bjc_independent_class", 21) != 0)
1245 : break;
1246 9 : return ParsedAttr::AT_ObjCIndependentClass; // "objc_independent_class"
1247 : case 't': // 1 string to match.
1248 48 : if (memcmp(Name.data()+1, "ry_acquire_capability", 21) != 0)
1249 : break;
1250 48 : return ParsedAttr::AT_TryAcquireCapability; // "try_acquire_capability"
1251 : case 'x': // 1 string to match.
1252 4 : if (memcmp(Name.data()+1, "ray_always_instrument", 21) != 0)
1253 : break;
1254 4 : return ParsedAttr::AT_XRayInstrument; // "xray_always_instrument"
1255 : }
1256 : break;
1257 914 : case 23: // 6 strings to match.
1258 : switch (Name[0]) {
1259 : default: break;
1260 : case 'c': // 1 string to match.
1261 43 : if (memcmp(Name.data()+1, "f_returns_not_retained", 22) != 0)
1262 : break;
1263 43 : return ParsedAttr::AT_CFReturnsNotRetained; // "cf_returns_not_retained"
1264 : case 'e': // 1 string to match.
1265 568 : if (memcmp(Name.data()+1, "xclusive_lock_function", 22) != 0)
1266 : break;
1267 568 : return ParsedAttr::AT_AcquireCapability; // "exclusive_lock_function"
1268 : case 'f': // 1 string to match.
1269 10 : if (memcmp(Name.data()+1, "orce_align_arg_pointer", 22) != 0)
1270 : break;
1271 10 : return ParsedAttr::AT_X86ForceAlignArgPointer; // "force_align_arg_pointer"
1272 : case 'n': // 2 strings to match.
1273 114 : if (memcmp(Name.data()+1, "s_returns_", 10) != 0)
1274 : break;
1275 : switch (Name[11]) {
1276 : default: break;
1277 : case 'a': // 1 string to match.
1278 5 : if (memcmp(Name.data()+12, "utoreleased", 11) != 0)
1279 : break;
1280 5 : return ParsedAttr::AT_NSReturnsAutoreleased; // "ns_returns_autoreleased"
1281 : case 'n': // 1 string to match.
1282 109 : if (memcmp(Name.data()+12, "ot_retained", 11) != 0)
1283 : break;
1284 109 : return ParsedAttr::AT_NSReturnsNotRetained; // "ns_returns_not_retained"
1285 : }
1286 : break;
1287 : case 's': // 1 string to match.
1288 179 : if (memcmp(Name.data()+1, "hared_trylock_function", 22) != 0)
1289 : break;
1290 179 : return ParsedAttr::AT_SharedTrylockFunction; // "shared_trylock_function"
1291 : }
1292 : break;
1293 1018 : case 24: // 2 strings to match.
1294 : switch (Name[0]) {
1295 : default: break;
1296 : case 'a': // 1 string to match.
1297 31 : if (memcmp(Name.data()+1, "ssert_shared_capability", 23) != 0)
1298 : break;
1299 31 : return ParsedAttr::AT_AssertCapability; // "assert_shared_capability"
1300 : case 'e': // 1 string to match.
1301 987 : if (memcmp(Name.data()+1, "xclusive_locks_required", 23) != 0)
1302 : break;
1303 987 : return ParsedAttr::AT_RequiresCapability; // "exclusive_locks_required"
1304 : }
1305 : break;
1306 249 : case 25: // 5 strings to match.
1307 : switch (Name[0]) {
1308 : default: break;
1309 : case 'a': // 1 string to match.
1310 95 : if (memcmp(Name.data()+1, "cquire_shared_capability", 24) != 0)
1311 : break;
1312 95 : return ParsedAttr::AT_AcquireCapability; // "acquire_shared_capability"
1313 : case 'i': // 1 string to match.
1314 12 : if (memcmp(Name.data()+1, "ntel_reqd_sub_group_size", 24) != 0)
1315 : break;
1316 12 : return ParsedAttr::AT_OpenCLIntelReqdSubGroupSize; // "intel_reqd_sub_group_size"
1317 : case 'n': // 2 strings to match.
1318 94 : if (memcmp(Name.data()+1, "o_", 2) != 0)
1319 : break;
1320 : switch (Name[3]) {
1321 : default: break;
1322 : case 'c': // 1 string to match.
1323 27 : if (memcmp(Name.data()+4, "aller_saved_registers", 21) != 0)
1324 : break;
1325 27 : return ParsedAttr::AT_AnyX86NoCallerSavedRegisters; // "no_caller_saved_registers"
1326 : case 't': // 1 string to match.
1327 67 : if (memcmp(Name.data()+4, "hread_safety_analysis", 21) != 0)
1328 : break;
1329 67 : return ParsedAttr::AT_NoThreadSafetyAnalysis; // "no_thread_safety_analysis"
1330 : }
1331 : break;
1332 : case 'r': // 1 string to match.
1333 48 : if (memcmp(Name.data()+1, "elease_shared_capability", 24) != 0)
1334 : break;
1335 48 : return ParsedAttr::AT_ReleaseCapability; // "release_shared_capability"
1336 : }
1337 : break;
1338 349 : case 26: // 6 strings to match.
1339 : switch (Name[0]) {
1340 : default: break;
1341 : case 'c': // 1 string to match.
1342 2 : if (memcmp(Name.data()+1, "onsumable_auto_cast_state", 25) != 0)
1343 : break;
1344 2 : return ParsedAttr::AT_ConsumableAutoCast; // "consumable_auto_cast_state"
1345 : case 'e': // 1 string to match.
1346 195 : if (memcmp(Name.data()+1, "xclusive_trylock_function", 25) != 0)
1347 : break;
1348 195 : return ParsedAttr::AT_ExclusiveTrylockFunction; // "exclusive_trylock_function"
1349 : case 'n': // 1 string to match.
1350 1 : if (memcmp(Name.data()+1, "o_address_safety_analysis", 25) != 0)
1351 : break;
1352 1 : return ParsedAttr::AT_NoSanitizeSpecific; // "no_address_safety_analysis"
1353 : case 'o': // 1 string to match.
1354 24 : if (memcmp(Name.data()+1, "bjc_returns_inner_pointer", 25) != 0)
1355 : break;
1356 24 : return ParsedAttr::AT_ObjCReturnsInnerPointer; // "objc_returns_inner_pointer"
1357 127 : case 'r': // 2 strings to match.
1358 127 : if (Name[1] != 'e')
1359 : break;
1360 : switch (Name[2]) {
1361 : default: break;
1362 : case 'l': // 1 string to match.
1363 5 : if (memcmp(Name.data()+3, "ease_generic_capability", 23) != 0)
1364 : break;
1365 5 : return ParsedAttr::AT_ReleaseCapability; // "release_generic_capability"
1366 : case 'q': // 1 string to match.
1367 122 : if (memcmp(Name.data()+3, "uires_shared_capability", 23) != 0)
1368 : break;
1369 122 : return ParsedAttr::AT_RequiresCapability; // "requires_shared_capability"
1370 : }
1371 : break;
1372 : }
1373 : break;
1374 257 : case 27: // 5 strings to match.
1375 : switch (Name[0]) {
1376 : default: break;
1377 : case 'a': // 1 string to match.
1378 190 : if (memcmp(Name.data()+1, "mdgpu_flat_work_group_size", 26) != 0)
1379 : break;
1380 190 : return ParsedAttr::AT_AMDGPUFlatWorkGroupSize; // "amdgpu_flat_work_group_size"
1381 : case 'd': // 2 strings to match.
1382 12 : if (memcmp(Name.data()+1, "evice_builtin_", 14) != 0)
1383 : break;
1384 : switch (Name[15]) {
1385 : default: break;
1386 : case 's': // 1 string to match.
1387 6 : if (memcmp(Name.data()+16, "urface_type", 11) != 0)
1388 : break;
1389 6 : return ParsedAttr::IgnoredAttribute; // "device_builtin_surface_type"
1390 : case 't': // 1 string to match.
1391 6 : if (memcmp(Name.data()+16, "exture_type", 11) != 0)
1392 : break;
1393 6 : return ParsedAttr::IgnoredAttribute; // "device_builtin_texture_type"
1394 : }
1395 : break;
1396 : case 'o': // 2 strings to match.
1397 55 : if (memcmp(Name.data()+1, "bjc_", 4) != 0)
1398 : break;
1399 : switch (Name[5]) {
1400 : default: break;
1401 : case 'd': // 1 string to match.
1402 36 : if (memcmp(Name.data()+6, "esignated_initializer", 21) != 0)
1403 : break;
1404 36 : return ParsedAttr::AT_ObjCDesignatedInitializer; // "objc_designated_initializer"
1405 : case 's': // 1 string to match.
1406 19 : if (memcmp(Name.data()+6, "ubclassing_restricted", 21) != 0)
1407 : break;
1408 19 : return ParsedAttr::AT_ObjCSubclassingRestricted; // "objc_subclassing_restricted"
1409 : }
1410 : break;
1411 : }
1412 : break;
1413 : case 28: // 1 string to match.
1414 2 : if (memcmp(Name.data()+0, "consumable_set_state_on_read", 28) != 0)
1415 : break;
1416 2 : return ParsedAttr::AT_ConsumableSetOnRead; // "consumable_set_state_on_read"
1417 : case 29: // 1 string to match.
1418 22 : if (memcmp(Name.data()+0, "try_acquire_shared_capability", 29) != 0)
1419 : break;
1420 22 : return ParsedAttr::AT_TryAcquireCapability; // "try_acquire_shared_capability"
1421 : case 31: // 1 string to match.
1422 185 : if (memcmp(Name.data()+0, "require_constant_initialization", 31) != 0)
1423 : break;
1424 185 : return ParsedAttr::AT_RequireConstantInit; // "require_constant_initialization"
1425 : case 34: // 1 string to match.
1426 12 : if (memcmp(Name.data()+0, "objc_requires_property_definitions", 34) != 0)
1427 : break;
1428 12 : return ParsedAttr::AT_ObjCRequiresPropertyDefs; // "objc_requires_property_definitions"
1429 68 : case 35: // 2 strings to match.
1430 : switch (Name[0]) {
1431 : default: break;
1432 : case 'e': // 1 string to match.
1433 29 : if (memcmp(Name.data()+1, "xclude_from_explicit_instantiation", 34) != 0)
1434 : break;
1435 29 : return ParsedAttr::AT_ExcludeFromExplicitInstantiation; // "exclude_from_explicit_instantiation"
1436 : case 'o': // 1 string to match.
1437 39 : if (memcmp(Name.data()+1, "bjc_arc_weak_reference_unavailable", 34) != 0)
1438 : break;
1439 39 : return ParsedAttr::AT_ArcWeakrefUnavailable; // "objc_arc_weak_reference_unavailable"
1440 : }
1441 : break;
1442 : case 46: // 1 string to match.
1443 13 : if (memcmp(Name.data()+0, "objc_protocol_requires_explicit_implementation", 46) != 0)
1444 : break;
1445 13 : return ParsedAttr::AT_ObjCExplicitProtocolImpl; // "objc_protocol_requires_explicit_implementation"
1446 : }
1447 569408 : } else if (ParsedAttr::AS_Declspec == Syntax) {
1448 7479 : switch (Name.size()) {
1449 : default: break;
1450 : case 4: // 1 string to match.
1451 84 : if (memcmp(Name.data()+0, "uuid", 4) != 0)
1452 : break;
1453 84 : return ParsedAttr::AT_Uuid; // "uuid"
1454 224 : case 5: // 2 strings to match.
1455 : switch (Name[0]) {
1456 : default: break;
1457 : case 'a': // 1 string to match.
1458 215 : if (memcmp(Name.data()+1, "lign", 4) != 0)
1459 : break;
1460 215 : return ParsedAttr::AT_Aligned; // "align"
1461 : case 'n': // 1 string to match.
1462 9 : if (memcmp(Name.data()+1, "aked", 4) != 0)
1463 : break;
1464 9 : return ParsedAttr::AT_Naked; // "naked"
1465 : }
1466 : break;
1467 : case 6: // 1 string to match.
1468 55 : if (memcmp(Name.data()+0, "thread", 6) != 0)
1469 : break;
1470 55 : return ParsedAttr::AT_Thread; // "thread"
1471 : case 7: // 2 strings to match.
1472 8 : if (memcmp(Name.data()+0, "no", 2) != 0)
1473 : break;
1474 : switch (Name[2]) {
1475 : default: break;
1476 : case 'a': // 1 string to match.
1477 2 : if (memcmp(Name.data()+3, "lias", 4) != 0)
1478 : break;
1479 2 : return ParsedAttr::AT_NoAlias; // "noalias"
1480 : case 't': // 1 string to match.
1481 2 : if (memcmp(Name.data()+3, "hrow", 4) != 0)
1482 : break;
1483 2 : return ParsedAttr::AT_NoThrow; // "nothrow"
1484 : }
1485 : break;
1486 255 : case 8: // 8 strings to match.
1487 : switch (Name[0]) {
1488 : default: break;
1489 : case '_': // 1 string to match.
1490 3 : if (memcmp(Name.data()+1, "_host__", 7) != 0)
1491 : break;
1492 3 : return ParsedAttr::AT_CUDAHost; // "__host__"
1493 : case 'a': // 1 string to match.
1494 8 : if (memcmp(Name.data()+1, "llocate", 7) != 0)
1495 : break;
1496 8 : return ParsedAttr::AT_Section; // "allocate"
1497 : case 'c': // 1 string to match.
1498 81 : if (memcmp(Name.data()+1, "ode_seg", 7) != 0)
1499 : break;
1500 81 : return ParsedAttr::AT_CodeSeg; // "code_seg"
1501 59 : case 'n': // 3 strings to match.
1502 59 : if (Name[1] != 'o')
1503 : break;
1504 : switch (Name[2]) {
1505 : default: break;
1506 : case 'i': // 1 string to match.
1507 31 : if (memcmp(Name.data()+3, "nline", 5) != 0)
1508 : break;
1509 31 : return ParsedAttr::AT_NoInline; // "noinline"
1510 : case 'r': // 1 string to match.
1511 16 : if (memcmp(Name.data()+3, "eturn", 5) != 0)
1512 : break;
1513 16 : return ParsedAttr::AT_NoReturn; // "noreturn"
1514 : case 'v': // 1 string to match.
1515 12 : if (memcmp(Name.data()+3, "table", 5) != 0)
1516 : break;
1517 12 : return ParsedAttr::AT_MSNoVTable; // "novtable"
1518 : }
1519 : break;
1520 : case 'p': // 1 string to match.
1521 103 : if (memcmp(Name.data()+1, "roperty", 7) != 0)
1522 : break;
1523 103 : return ParsedAttr::IgnoredAttribute; // "property"
1524 : case 'r': // 1 string to match.
1525 1 : if (memcmp(Name.data()+1, "estrict", 7) != 0)
1526 : break;
1527 1 : return ParsedAttr::AT_Restrict; // "restrict"
1528 : }
1529 : break;
1530 6771 : case 9: // 3 strings to match.
1531 : switch (Name[0]) {
1532 : default: break;
1533 : case 'd': // 2 strings to match.
1534 6713 : if (memcmp(Name.data()+1, "ll", 2) != 0)
1535 : break;
1536 : switch (Name[3]) {
1537 : default: break;
1538 : case 'e': // 1 string to match.
1539 3139 : if (memcmp(Name.data()+4, "xport", 5) != 0)
1540 : break;
1541 3139 : return ParsedAttr::AT_DLLExport; // "dllexport"
1542 : case 'i': // 1 string to match.
1543 3574 : if (memcmp(Name.data()+4, "mport", 5) != 0)
1544 : break;
1545 3574 : return ParsedAttr::AT_DLLImport; // "dllimport"
1546 : }
1547 : break;
1548 : case 's': // 1 string to match.
1549 54 : if (memcmp(Name.data()+1, "electany", 8) != 0)
1550 : break;
1551 54 : return ParsedAttr::AT_SelectAny; // "selectany"
1552 : }
1553 : break;
1554 34 : case 10: // 4 strings to match.
1555 : switch (Name[0]) {
1556 : default: break;
1557 9 : case '_': // 3 strings to match.
1558 9 : if (Name[1] != '_')
1559 : break;
1560 : switch (Name[2]) {
1561 : default: break;
1562 : case 'd': // 1 string to match.
1563 3 : if (memcmp(Name.data()+3, "evice__", 7) != 0)
1564 : break;
1565 3 : return ParsedAttr::AT_CUDADevice; // "__device__"
1566 : case 'g': // 1 string to match.
1567 3 : if (memcmp(Name.data()+3, "lobal__", 7) != 0)
1568 : break;
1569 3 : return ParsedAttr::AT_CUDAGlobal; // "__global__"
1570 : case 's': // 1 string to match.
1571 3 : if (memcmp(Name.data()+3, "hared__", 7) != 0)
1572 : break;
1573 3 : return ParsedAttr::AT_CUDAShared; // "__shared__"
1574 : }
1575 : break;
1576 : case 'd': // 1 string to match.
1577 25 : if (memcmp(Name.data()+1, "eprecated", 9) != 0)
1578 : break;
1579 25 : return ParsedAttr::AT_Deprecated; // "deprecated"
1580 : }
1581 : break;
1582 : case 11: // 1 string to match.
1583 15 : if (memcmp(Name.data()+0, "empty_bases", 11) != 0)
1584 : break;
1585 14 : return ParsedAttr::AT_EmptyBases; // "empty_bases"
1586 : case 12: // 1 string to match.
1587 4 : if (memcmp(Name.data()+0, "__constant__", 12) != 0)
1588 : break;
1589 3 : return ParsedAttr::AT_CUDAConstant; // "__constant__"
1590 : case 14: // 1 string to match.
1591 8 : if (memcmp(Name.data()+0, "layout_version", 14) != 0)
1592 : break;
1593 8 : return ParsedAttr::AT_LayoutVersion; // "layout_version"
1594 : case 17: // 1 string to match.
1595 0 : if (memcmp(Name.data()+0, "__launch_bounds__", 17) != 0)
1596 : break;
1597 0 : return ParsedAttr::AT_CUDALaunchBounds; // "__launch_bounds__"
1598 : case 18: // 2 strings to match.
1599 15 : if (memcmp(Name.data()+0, "__", 2) != 0)
1600 : break;
1601 : switch (Name[2]) {
1602 : default: break;
1603 : case 'c': // 1 string to match.
1604 3 : if (memcmp(Name.data()+3, "udart_builtin__", 15) != 0)
1605 : break;
1606 3 : return ParsedAttr::IgnoredAttribute; // "__cudart_builtin__"
1607 : case 'd': // 1 string to match.
1608 12 : if (memcmp(Name.data()+3, "evice_builtin__", 15) != 0)
1609 : break;
1610 12 : return ParsedAttr::IgnoredAttribute; // "__device_builtin__"
1611 : }
1612 : break;
1613 : case 31: // 2 strings to match.
1614 6 : if (memcmp(Name.data()+0, "__device_builtin_", 17) != 0)
1615 : break;
1616 : switch (Name[17]) {
1617 : default: break;
1618 : case 's': // 1 string to match.
1619 3 : if (memcmp(Name.data()+18, "urface_type__", 13) != 0)
1620 : break;
1621 3 : return ParsedAttr::IgnoredAttribute; // "__device_builtin_surface_type__"
1622 : case 't': // 1 string to match.
1623 3 : if (memcmp(Name.data()+18, "exture_type__", 13) != 0)
1624 : break;
1625 3 : return ParsedAttr::IgnoredAttribute; // "__device_builtin_texture_type__"
1626 : }
1627 : break;
1628 : }
1629 561929 : } else if (ParsedAttr::AS_Microsoft == Syntax) {
1630 52 : switch (Name.size()) {
1631 : default: break;
1632 : case 4: // 1 string to match.
1633 52 : if (memcmp(Name.data()+0, "uuid", 4) != 0)
1634 : break;
1635 52 : return ParsedAttr::AT_Uuid; // "uuid"
1636 : }
1637 561877 : } else if (ParsedAttr::AS_CXX11 == Syntax) {
1638 440962 : switch (Name.size()) {
1639 : default: break;
1640 : case 8: // 3 strings to match.
1641 13 : if (memcmp(Name.data()+0, "gnu::", 5) != 0)
1642 : break;
1643 : switch (Name[5]) {
1644 : default: break;
1645 : case 'f': // 1 string to match.
1646 0 : if (memcmp(Name.data()+6, "ar", 2) != 0)
1647 : break;
1648 0 : return ParsedAttr::AT_MipsLongCall; // "gnu::far"
1649 : case 'h': // 1 string to match.
1650 0 : if (memcmp(Name.data()+6, "ot", 2) != 0)
1651 : break;
1652 0 : return ParsedAttr::AT_Hot; // "gnu::hot"
1653 : case 'p': // 1 string to match.
1654 0 : if (memcmp(Name.data()+6, "cs", 2) != 0)
1655 : break;
1656 0 : return ParsedAttr::AT_Pcs; // "gnu::pcs"
1657 : }
1658 : break;
1659 : case 9: // 6 strings to match.
1660 32 : if (memcmp(Name.data()+0, "gnu::", 5) != 0)
1661 : break;
1662 : switch (Name[5]) {
1663 : default: break;
1664 : case 'c': // 1 string to match.
1665 0 : if (memcmp(Name.data()+6, "old", 3) != 0)
1666 : break;
1667 0 : return ParsedAttr::AT_Cold; // "gnu::cold"
1668 : case 'm': // 1 string to match.
1669 4 : if (memcmp(Name.data()+6, "ode", 3) != 0)
1670 : break;
1671 4 : return ParsedAttr::AT_Mode; // "gnu::mode"
1672 : case 'n': // 1 string to match.
1673 0 : if (memcmp(Name.data()+6, "ear", 3) != 0)
1674 : break;
1675 0 : return ParsedAttr::AT_MipsShortCall; // "gnu::near"
1676 : case 'p': // 1 string to match.
1677 2 : if (memcmp(Name.data()+6, "ure", 3) != 0)
1678 : break;
1679 2 : return ParsedAttr::AT_Pure; // "gnu::pure"
1680 : case 'u': // 1 string to match.
1681 4 : if (memcmp(Name.data()+6, "sed", 3) != 0)
1682 : break;
1683 4 : return ParsedAttr::AT_Used; // "gnu::used"
1684 : case 'w': // 1 string to match.
1685 0 : if (memcmp(Name.data()+6, "eak", 3) != 0)
1686 : break;
1687 0 : return ParsedAttr::AT_Weak; // "gnu::weak"
1688 : }
1689 : break;
1690 241459 : case 10: // 6 strings to match.
1691 : switch (Name[0]) {
1692 : default: break;
1693 : case ':': // 1 string to match.
1694 241439 : if (memcmp(Name.data()+1, ":noreturn", 9) != 0)
1695 : break;
1696 241435 : return ParsedAttr::AT_CXX11NoReturn; // "::noreturn"
1697 : case 'g': // 5 strings to match.
1698 20 : if (memcmp(Name.data()+1, "nu::", 4) != 0)
1699 : break;
1700 : switch (Name[5]) {
1701 : default: break;
1702 : case 'a': // 1 string to match.
1703 9 : if (memcmp(Name.data()+6, "lias", 4) != 0)
1704 : break;
1705 9 : return ParsedAttr::AT_Alias; // "gnu::alias"
1706 8 : case 'c': // 2 strings to match.
1707 : switch (Name[6]) {
1708 : default: break;
1709 : case 'd': // 1 string to match.
1710 4 : if (memcmp(Name.data()+7, "ecl", 3) != 0)
1711 : break;
1712 4 : return ParsedAttr::AT_CDecl; // "gnu::cdecl"
1713 : case 'o': // 1 string to match.
1714 4 : if (memcmp(Name.data()+7, "nst", 3) != 0)
1715 : break;
1716 4 : return ParsedAttr::AT_Const; // "gnu::const"
1717 : }
1718 : break;
1719 : case 'i': // 1 string to match.
1720 0 : if (memcmp(Name.data()+6, "func", 4) != 0)
1721 : break;
1722 0 : return ParsedAttr::AT_IFunc; // "gnu::ifunc"
1723 : case 'n': // 1 string to match.
1724 3 : if (memcmp(Name.data()+6, "aked", 4) != 0)
1725 : break;
1726 3 : return ParsedAttr::AT_Naked; // "gnu::naked"
1727 : }
1728 : break;
1729 : }
1730 : break;
1731 197667 : case 11: // 10 strings to match.
1732 : switch (Name[0]) {
1733 : default: break;
1734 : case ':': // 1 string to match.
1735 197641 : if (memcmp(Name.data()+1, ":nodiscard", 10) != 0)
1736 : break;
1737 197637 : return ParsedAttr::AT_WarnUnusedResult; // "::nodiscard"
1738 : case 'g': // 9 strings to match.
1739 24 : if (memcmp(Name.data()+1, "nu::", 4) != 0)
1740 : break;
1741 : switch (Name[5]) {
1742 : default: break;
1743 : case 'c': // 1 string to match.
1744 0 : if (memcmp(Name.data()+6, "ommon", 5) != 0)
1745 : break;
1746 0 : return ParsedAttr::AT_Common; // "gnu::common"
1747 : case 'f': // 1 string to match.
1748 4 : if (memcmp(Name.data()+6, "ormat", 5) != 0)
1749 : break;
1750 4 : return ParsedAttr::AT_Format; // "gnu::format"
1751 0 : case 'm': // 3 strings to match.
1752 : switch (Name[6]) {
1753 : default: break;
1754 : case 'a': // 1 string to match.
1755 0 : if (memcmp(Name.data()+7, "lloc", 4) != 0)
1756 : break;
1757 0 : return ParsedAttr::AT_Restrict; // "gnu::malloc"
1758 : case 'i': // 1 string to match.
1759 0 : if (memcmp(Name.data()+7, "ps16", 4) != 0)
1760 : break;
1761 0 : return ParsedAttr::AT_Mips16; // "gnu::mips16"
1762 : case 's': // 1 string to match.
1763 0 : if (memcmp(Name.data()+7, "_abi", 4) != 0)
1764 : break;
1765 0 : return ParsedAttr::AT_MSABI; // "gnu::ms_abi"
1766 : }
1767 : break;
1768 : case 'p': // 1 string to match.
1769 2 : if (memcmp(Name.data()+6, "acked", 5) != 0)
1770 : break;
1771 2 : return ParsedAttr::AT_Packed; // "gnu::packed"
1772 : case 's': // 1 string to match.
1773 0 : if (memcmp(Name.data()+6, "ignal", 5) != 0)
1774 : break;
1775 0 : return ParsedAttr::AT_AVRSignal; // "gnu::signal"
1776 : case 't': // 1 string to match.
1777 0 : if (memcmp(Name.data()+6, "arget", 5) != 0)
1778 : break;
1779 0 : return ParsedAttr::AT_Target; // "gnu::target"
1780 : case 'u': // 1 string to match.
1781 18 : if (memcmp(Name.data()+6, "nused", 5) != 0)
1782 : break;
1783 18 : return ParsedAttr::AT_Unused; // "gnu::unused"
1784 : }
1785 : break;
1786 : }
1787 : break;
1788 162 : case 12: // 14 strings to match.
1789 : switch (Name[0]) {
1790 : default: break;
1791 : case ':': // 1 string to match.
1792 91 : if (memcmp(Name.data()+1, ":deprecated", 11) != 0)
1793 : break;
1794 89 : return ParsedAttr::AT_Deprecated; // "::deprecated"
1795 : case 'g': // 13 strings to match.
1796 66 : if (memcmp(Name.data()+1, "nu::", 4) != 0)
1797 : break;
1798 : switch (Name[5]) {
1799 : default: break;
1800 : case '_': // 1 string to match.
1801 2 : if (memcmp(Name.data()+6, "_const", 6) != 0)
1802 : break;
1803 2 : return ParsedAttr::AT_Const; // "gnu::__const"
1804 31 : case 'a': // 2 strings to match.
1805 : switch (Name[6]) {
1806 : default: break;
1807 : case 'b': // 1 string to match.
1808 4 : if (memcmp(Name.data()+7, "i_tag", 5) != 0)
1809 : break;
1810 4 : return ParsedAttr::AT_AbiTag; // "gnu::abi_tag"
1811 : case 'l': // 1 string to match.
1812 27 : if (memcmp(Name.data()+7, "igned", 5) != 0)
1813 : break;
1814 27 : return ParsedAttr::AT_Aligned; // "gnu::aligned"
1815 : }
1816 : break;
1817 : case 'c': // 1 string to match.
1818 4 : if (memcmp(Name.data()+6, "leanup", 6) != 0)
1819 : break;
1820 4 : return ParsedAttr::AT_Cleanup; // "gnu::cleanup"
1821 : case 'f': // 1 string to match.
1822 19 : if (memcmp(Name.data()+6, "latten", 6) != 0)
1823 : break;
1824 19 : return ParsedAttr::AT_Flatten; // "gnu::flatten"
1825 4 : case 'n': // 3 strings to match.
1826 4 : if (Name[6] != 'o')
1827 : break;
1828 : switch (Name[7]) {
1829 : default: break;
1830 : case 'd': // 1 string to match.
1831 2 : if (memcmp(Name.data()+8, "ebug", 4) != 0)
1832 : break;
1833 2 : return ParsedAttr::AT_NoDebug; // "gnu::nodebug"
1834 : case 'n': // 1 string to match.
1835 2 : if (memcmp(Name.data()+8, "null", 4) != 0)
1836 : break;
1837 2 : return ParsedAttr::AT_NonNull; // "gnu::nonnull"
1838 : case 't': // 1 string to match.
1839 0 : if (memcmp(Name.data()+8, "hrow", 4) != 0)
1840 : break;
1841 0 : return ParsedAttr::AT_NoThrow; // "gnu::nothrow"
1842 : }
1843 : break;
1844 : case 'r': // 2 strings to match.
1845 0 : if (memcmp(Name.data()+6, "eg", 2) != 0)
1846 : break;
1847 : switch (Name[8]) {
1848 : default: break;
1849 : case 'c': // 1 string to match.
1850 0 : if (memcmp(Name.data()+9, "all", 3) != 0)
1851 : break;
1852 0 : return ParsedAttr::AT_RegCall; // "gnu::regcall"
1853 : case 'p': // 1 string to match.
1854 0 : if (memcmp(Name.data()+9, "arm", 3) != 0)
1855 : break;
1856 0 : return ParsedAttr::AT_Regparm; // "gnu::regparm"
1857 : }
1858 : break;
1859 6 : case 's': // 2 strings to match.
1860 : switch (Name[6]) {
1861 : default: break;
1862 : case 'e': // 1 string to match.
1863 0 : if (memcmp(Name.data()+7, "ction", 5) != 0)
1864 : break;
1865 0 : return ParsedAttr::AT_Section; // "gnu::section"
1866 : case 't': // 1 string to match.
1867 6 : if (memcmp(Name.data()+7, "dcall", 5) != 0)
1868 : break;
1869 6 : return ParsedAttr::AT_StdCall; // "gnu::stdcall"
1870 : }
1871 : break;
1872 : case 'w': // 1 string to match.
1873 0 : if (memcmp(Name.data()+6, "eakref", 6) != 0)
1874 : break;
1875 0 : return ParsedAttr::AT_WeakRef; // "gnu::weakref"
1876 : }
1877 : break;
1878 : }
1879 : break;
1880 157 : case 13: // 12 strings to match.
1881 : switch (Name[0]) {
1882 : default: break;
1883 : case ':': // 1 string to match.
1884 79 : if (memcmp(Name.data()+1, ":fallthrough", 12) != 0)
1885 : break;
1886 75 : return ParsedAttr::AT_FallThrough; // "::fallthrough"
1887 : case 'c': // 2 strings to match.
1888 0 : if (memcmp(Name.data()+1, "lang::", 6) != 0)
1889 : break;
1890 : switch (Name[7]) {
1891 : default: break;
1892 : case 'b': // 1 string to match.
1893 0 : if (memcmp(Name.data()+8, "locks", 5) != 0)
1894 : break;
1895 0 : return ParsedAttr::AT_Blocks; // "clang::blocks"
1896 : case 'p': // 1 string to match.
1897 0 : if (memcmp(Name.data()+8, "ascal", 5) != 0)
1898 : break;
1899 0 : return ParsedAttr::AT_Pascal; // "clang::pascal"
1900 : }
1901 : break;
1902 78 : case 'g': // 9 strings to match.
1903 : switch (Name[1]) {
1904 : default: break;
1905 : case 'n': // 8 strings to match.
1906 42 : if (memcmp(Name.data()+2, "u::", 3) != 0)
1907 : break;
1908 : switch (Name[5]) {
1909 : default: break;
1910 : case 'f': // 1 string to match.
1911 12 : if (memcmp(Name.data()+6, "astcall", 7) != 0)
1912 : break;
1913 12 : return ParsedAttr::AT_FastCall; // "gnu::fastcall"
1914 30 : case 'n': // 4 strings to match.
1915 30 : if (Name[6] != 'o')
1916 : break;
1917 : switch (Name[7]) {
1918 : default: break;
1919 : case 'c': // 1 string to match.
1920 0 : if (memcmp(Name.data()+8, "ommon", 5) != 0)
1921 : break;
1922 0 : return ParsedAttr::AT_NoCommon; // "gnu::nocommon"
1923 : case 'i': // 1 string to match.
1924 0 : if (memcmp(Name.data()+8, "nline", 5) != 0)
1925 : break;
1926 0 : return ParsedAttr::AT_NoInline; // "gnu::noinline"
1927 : case 'm': // 1 string to match.
1928 0 : if (memcmp(Name.data()+8, "ips16", 5) != 0)
1929 : break;
1930 0 : return ParsedAttr::AT_NoMips16; // "gnu::nomips16"
1931 : case 'r': // 1 string to match.
1932 30 : if (memcmp(Name.data()+8, "eturn", 5) != 0)
1933 : break;
1934 30 : return ParsedAttr::AT_NoReturn; // "gnu::noreturn"
1935 : }
1936 : break;
1937 0 : case 's': // 2 strings to match.
1938 : switch (Name[6]) {
1939 : default: break;
1940 : case 'e': // 1 string to match.
1941 0 : if (memcmp(Name.data()+7, "ntinel", 6) != 0)
1942 : break;
1943 0 : return ParsedAttr::AT_Sentinel; // "gnu::sentinel"
1944 : case 'y': // 1 string to match.
1945 0 : if (memcmp(Name.data()+7, "sv_abi", 6) != 0)
1946 : break;
1947 0 : return ParsedAttr::AT_SysVABI; // "gnu::sysv_abi"
1948 : }
1949 : break;
1950 : case 't': // 1 string to match.
1951 0 : if (memcmp(Name.data()+6, "hiscall", 7) != 0)
1952 : break;
1953 0 : return ParsedAttr::AT_ThisCall; // "gnu::thiscall"
1954 : }
1955 : break;
1956 : case 's': // 1 string to match.
1957 36 : if (memcmp(Name.data()+2, "l::suppress", 11) != 0)
1958 : break;
1959 36 : return ParsedAttr::AT_Suppress; // "gsl::suppress"
1960 : }
1961 : break;
1962 : }
1963 : break;
1964 97 : case 14: // 13 strings to match.
1965 : switch (Name[0]) {
1966 : default: break;
1967 : case ':': // 1 string to match.
1968 62 : if (memcmp(Name.data()+1, ":maybe_unused", 13) != 0)
1969 : break;
1970 62 : return ParsedAttr::AT_Unused; // "::maybe_unused"
1971 : case 'c': // 3 strings to match.
1972 16 : if (memcmp(Name.data()+1, "lang::", 6) != 0)
1973 : break;
1974 : switch (Name[7]) {
1975 : default: break;
1976 : case 'm': // 1 string to match.
1977 0 : if (memcmp(Name.data()+8, "insize", 6) != 0)
1978 : break;
1979 0 : return ParsedAttr::AT_MinSize; // "clang::minsize"
1980 16 : case 'o': // 2 strings to match.
1981 : switch (Name[8]) {
1982 : default: break;
1983 : case 'b': // 1 string to match.
1984 0 : if (memcmp(Name.data()+9, "jc_gc", 5) != 0)
1985 : break;
1986 0 : return ParsedAttr::AT_ObjCGC; // "clang::objc_gc"
1987 : case 'p': // 1 string to match.
1988 16 : if (memcmp(Name.data()+9, "tnone", 5) != 0)
1989 : break;
1990 16 : return ParsedAttr::AT_OptimizeNone; // "clang::optnone"
1991 : }
1992 : break;
1993 : }
1994 : break;
1995 : case 'g': // 9 strings to match.
1996 19 : if (memcmp(Name.data()+1, "nu::", 4) != 0)
1997 : break;
1998 : switch (Name[5]) {
1999 : default: break;
2000 : case 'd': // 2 strings to match.
2001 0 : if (memcmp(Name.data()+6, "ll", 2) != 0)
2002 : break;
2003 : switch (Name[8]) {
2004 : default: break;
2005 : case 'e': // 1 string to match.
2006 0 : if (memcmp(Name.data()+9, "xport", 5) != 0)
2007 : break;
2008 0 : return ParsedAttr::AT_DLLExport; // "gnu::dllexport"
2009 : case 'i': // 1 string to match.
2010 0 : if (memcmp(Name.data()+9, "mport", 5) != 0)
2011 : break;
2012 0 : return ParsedAttr::AT_DLLImport; // "gnu::dllimport"
2013 : }
2014 : break;
2015 : case 'i': // 1 string to match.
2016 16 : if (memcmp(Name.data()+6, "nterrupt", 8) != 0)
2017 : break;
2018 16 : return ParsedAttr::AT_Interrupt; // "gnu::interrupt"
2019 : case 'l': // 1 string to match.
2020 0 : if (memcmp(Name.data()+6, "ong_call", 8) != 0)
2021 : break;
2022 0 : return ParsedAttr::AT_MipsLongCall; // "gnu::long_call"
2023 0 : case 'm': // 3 strings to match.
2024 : switch (Name[6]) {
2025 : default: break;
2026 : case 'a': // 1 string to match.
2027 0 : if (memcmp(Name.data()+7, "y_alias", 7) != 0)
2028 : break;
2029 0 : return ParsedAttr::AT_MayAlias; // "gnu::may_alias"
2030 : case 'i': // 1 string to match.
2031 0 : if (memcmp(Name.data()+7, "cromips", 7) != 0)
2032 : break;
2033 0 : return ParsedAttr::AT_MicroMips; // "gnu::micromips"
2034 : case 's': // 1 string to match.
2035 0 : if (memcmp(Name.data()+7, "_struct", 7) != 0)
2036 : break;
2037 0 : return ParsedAttr::AT_MSStruct; // "gnu::ms_struct"
2038 : }
2039 : break;
2040 : case 's': // 1 string to match.
2041 0 : if (memcmp(Name.data()+6, "electany", 8) != 0)
2042 : break;
2043 0 : return ParsedAttr::AT_SelectAny; // "gnu::selectany"
2044 : case 't': // 1 string to match.
2045 3 : if (memcmp(Name.data()+6, "ls_model", 8) != 0)
2046 : break;
2047 3 : return ParsedAttr::AT_TLSModel; // "gnu::tls_model"
2048 : }
2049 : break;
2050 : }
2051 : break;
2052 77 : case 15: // 14 strings to match.
2053 : switch (Name[0]) {
2054 : default: break;
2055 : case 'c': // 5 strings to match.
2056 31 : if (memcmp(Name.data()+1, "lang::", 6) != 0)
2057 : break;
2058 : switch (Name[7]) {
2059 : default: break;
2060 : case 'N': // 1 string to match.
2061 0 : if (memcmp(Name.data()+8, "SObject", 7) != 0)
2062 : break;
2063 0 : return ParsedAttr::AT_ObjCNSObject; // "clang::NSObject"
2064 : case 'a': // 1 string to match.
2065 22 : if (memcmp(Name.data()+8, "nnotate", 7) != 0)
2066 : break;
2067 22 : return ParsedAttr::AT_Annotate; // "clang::annotate"
2068 4 : case 'i': // 2 strings to match.
2069 4 : if (Name[8] != 'b')
2070 : break;
2071 : switch (Name[9]) {
2072 : default: break;
2073 : case 'a': // 1 string to match.
2074 0 : if (memcmp(Name.data()+10, "ction", 5) != 0)
2075 : break;
2076 0 : return ParsedAttr::AT_IBAction; // "clang::ibaction"
2077 : case 'o': // 1 string to match.
2078 4 : if (memcmp(Name.data()+10, "utlet", 5) != 0)
2079 : break;
2080 4 : return ParsedAttr::AT_IBOutlet; // "clang::iboutlet"
2081 : }
2082 : break;
2083 : case 'n': // 1 string to match.
2084 5 : if (memcmp(Name.data()+8, "oescape", 7) != 0)
2085 : break;
2086 5 : return ParsedAttr::AT_NoEscape; // "clang::noescape"
2087 : }
2088 : break;
2089 : case 'g': // 9 strings to match.
2090 36 : if (memcmp(Name.data()+1, "nu::", 4) != 0)
2091 : break;
2092 : switch (Name[5]) {
2093 : default: break;
2094 0 : case 'a': // 2 strings to match.
2095 : switch (Name[6]) {
2096 : default: break;
2097 : case 'l': // 1 string to match.
2098 0 : if (memcmp(Name.data()+7, "loc_size", 8) != 0)
2099 : break;
2100 0 : return ParsedAttr::AT_AllocSize; // "gnu::alloc_size"
2101 : case 'r': // 1 string to match.
2102 0 : if (memcmp(Name.data()+7, "tificial", 8) != 0)
2103 : break;
2104 0 : return ParsedAttr::AT_Artificial; // "gnu::artificial"
2105 : }
2106 : break;
2107 20 : case 'd': // 2 strings to match.
2108 20 : if (Name[6] != 'e')
2109 : break;
2110 : switch (Name[7]) {
2111 : default: break;
2112 : case 'p': // 1 string to match.
2113 20 : if (memcmp(Name.data()+8, "recated", 7) != 0)
2114 : break;
2115 20 : return ParsedAttr::AT_Deprecated; // "gnu::deprecated"
2116 : case 's': // 1 string to match.
2117 0 : if (memcmp(Name.data()+8, "tructor", 7) != 0)
2118 : break;
2119 0 : return ParsedAttr::AT_Destructor; // "gnu::destructor"
2120 : }
2121 : break;
2122 : case 'f': // 1 string to match.
2123 0 : if (memcmp(Name.data()+6, "ormat_arg", 9) != 0)
2124 : break;
2125 0 : return ParsedAttr::AT_FormatArg; // "gnu::format_arg"
2126 : case 'g': // 1 string to match.
2127 2 : if (memcmp(Name.data()+6, "nu_inline", 9) != 0)
2128 : break;
2129 2 : return ParsedAttr::AT_GNUInline; // "gnu::gnu_inline"
2130 : case 'n': // 1 string to match.
2131 11 : if (memcmp(Name.data()+6, "ocf_check", 9) != 0)
2132 : break;
2133 11 : return ParsedAttr::AT_AnyX86NoCfCheck; // "gnu::nocf_check"
2134 : case 's': // 1 string to match.
2135 0 : if (memcmp(Name.data()+6, "hort_call", 9) != 0)
2136 : break;
2137 0 : return ParsedAttr::AT_MipsShortCall; // "gnu::short_call"
2138 : case 'v': // 1 string to match.
2139 3 : if (memcmp(Name.data()+6, "isibility", 9) != 0)
2140 : break;
2141 3 : return ParsedAttr::AT_Visibility; // "gnu::visibility"
2142 : }
2143 : break;
2144 : }
2145 : break;
2146 381 : case 16: // 8 strings to match.
2147 : switch (Name[0]) {
2148 : default: break;
2149 : case 'c': // 3 strings to match.
2150 3 : if (memcmp(Name.data()+1, "lang::", 6) != 0)
2151 : break;
2152 : switch (Name[7]) {
2153 : default: break;
2154 : case 'f': // 1 string to match.
2155 1 : if (memcmp(Name.data()+8, "lag_enum", 8) != 0)
2156 : break;
2157 1 : return ParsedAttr::AT_FlagEnum; // "clang::flag_enum"
2158 : case 's': // 1 string to match.
2159 2 : if (memcmp(Name.data()+8, "wiftcall", 8) != 0)
2160 : break;
2161 2 : return ParsedAttr::AT_SwiftCall; // "clang::swiftcall"
2162 : case 'v': // 1 string to match.
2163 0 : if (memcmp(Name.data()+8, "ecreturn", 8) != 0)
2164 : break;
2165 0 : return ParsedAttr::AT_VecReturn; // "clang::vecreturn"
2166 : }
2167 : break;
2168 : case 'g': // 5 strings to match.
2169 3 : if (memcmp(Name.data()+1, "nu::", 4) != 0)
2170 : break;
2171 : switch (Name[5]) {
2172 : default: break;
2173 : case 'a': // 1 string to match.
2174 0 : if (memcmp(Name.data()+6, "lloc_align", 10) != 0)
2175 : break;
2176 0 : return ParsedAttr::AT_AllocAlign; // "gnu::alloc_align"
2177 : case 'c': // 1 string to match.
2178 0 : if (memcmp(Name.data()+6, "onstructor", 10) != 0)
2179 : break;
2180 0 : return ParsedAttr::AT_Constructor; // "gnu::constructor"
2181 : case 'n': // 1 string to match.
2182 0 : if (memcmp(Name.data()+6, "omicromips", 10) != 0)
2183 : break;
2184 0 : return ParsedAttr::AT_NoMicroMips; // "gnu::nomicromips"
2185 : case 'v': // 1 string to match.
2186 3 : if (memcmp(Name.data()+6, "ector_size", 10) != 0)
2187 : break;
2188 3 : return ParsedAttr::AT_VectorSize; // "gnu::vector_size"
2189 : case 'w': // 1 string to match.
2190 0 : if (memcmp(Name.data()+6, "arn_unused", 10) != 0)
2191 : break;
2192 0 : return ParsedAttr::AT_WarnUnused; // "gnu::warn_unused"
2193 : }
2194 : break;
2195 : }
2196 : break;
2197 : case 17: // 5 strings to match.
2198 42 : if (memcmp(Name.data()+0, "clang::", 7) != 0)
2199 : break;
2200 : switch (Name[7]) {
2201 : default: break;
2202 0 : case 'c': // 3 strings to match.
2203 : switch (Name[8]) {
2204 : default: break;
2205 : case 'a': // 1 string to match.
2206 0 : if (memcmp(Name.data()+9, "pability", 8) != 0)
2207 : break;
2208 0 : return ParsedAttr::AT_Capability; // "clang::capability"
2209 0 : case 'o': // 2 strings to match.
2210 0 : if (Name[9] != 'n')
2211 : break;
2212 : switch (Name[10]) {
2213 : default: break;
2214 : case 's': // 1 string to match.
2215 0 : if (memcmp(Name.data()+11, "umable", 6) != 0)
2216 : break;
2217 0 : return ParsedAttr::AT_Consumable; // "clang::consumable"
2218 : case 'v': // 1 string to match.
2219 0 : if (memcmp(Name.data()+11, "ergent", 6) != 0)
2220 : break;
2221 0 : return ParsedAttr::AT_Convergent; // "clang::convergent"
2222 : }
2223 : break;
2224 : }
2225 : break;
2226 : case 'n': // 1 string to match.
2227 42 : if (memcmp(Name.data()+8, "o_destroy", 9) != 0)
2228 : break;
2229 42 : return ParsedAttr::AT_NoDestroy; // "clang::no_destroy"
2230 : case 'v': // 1 string to match.
2231 0 : if (memcmp(Name.data()+8, "ectorcall", 9) != 0)
2232 : break;
2233 0 : return ParsedAttr::AT_VectorCall; // "clang::vectorcall"
2234 : }
2235 : break;
2236 110 : case 18: // 13 strings to match.
2237 : switch (Name[0]) {
2238 : default: break;
2239 : case 'c': // 10 strings to match.
2240 108 : if (memcmp(Name.data()+1, "lang::", 6) != 0)
2241 : break;
2242 : switch (Name[7]) {
2243 : default: break;
2244 : case 'c': // 1 string to match.
2245 0 : if (memcmp(Name.data()+8, "f_consumed", 10) != 0)
2246 : break;
2247 0 : return ParsedAttr::AT_CFConsumed; // "clang::cf_consumed"
2248 : case 'f': // 1 string to match.
2249 76 : if (memcmp(Name.data()+8, "allthrough", 10) != 0)
2250 : break;
2251 76 : return ParsedAttr::AT_FallThrough; // "clang::fallthrough"
2252 : case 'g': // 1 string to match.
2253 0 : if (memcmp(Name.data()+8, "uarded_var", 10) != 0)
2254 : break;
2255 0 : return ParsedAttr::AT_GuardedVar; // "clang::guarded_var"
2256 28 : case 'n': // 3 strings to match.
2257 : switch (Name[8]) {
2258 : default: break;
2259 28 : case 'o': // 2 strings to match.
2260 : switch (Name[9]) {
2261 : default: break;
2262 : case '_': // 1 string to match.
2263 24 : if (memcmp(Name.data()+10, "sanitize", 8) != 0)
2264 : break;
2265 24 : return ParsedAttr::AT_NoSanitize; // "clang::no_sanitize"
2266 : case 'd': // 1 string to match.
2267 4 : if (memcmp(Name.data()+10, "uplicate", 8) != 0)
2268 : break;
2269 4 : return ParsedAttr::AT_NoDuplicate; // "clang::noduplicate"
2270 : }
2271 : break;
2272 : case 's': // 1 string to match.
2273 0 : if (memcmp(Name.data()+9, "_consumed", 9) != 0)
2274 : break;
2275 0 : return ParsedAttr::AT_NSConsumed; // "clang::ns_consumed"
2276 : }
2277 : break;
2278 : case 'o': // 1 string to match.
2279 0 : if (memcmp(Name.data()+8, "bjc_bridge", 10) != 0)
2280 : break;
2281 0 : return ParsedAttr::AT_ObjCBridge; // "clang::objc_bridge"
2282 : case 't': // 1 string to match.
2283 2 : if (memcmp(Name.data()+8, "rivial_abi", 10) != 0)
2284 : break;
2285 2 : return ParsedAttr::AT_TrivialABI; // "clang::trivial_abi"
2286 : case 'u': // 1 string to match.
2287 2 : if (memcmp(Name.data()+8, "navailable", 10) != 0)
2288 : break;
2289 2 : return ParsedAttr::AT_Unavailable; // "clang::unavailable"
2290 : case 'w': // 1 string to match.
2291 0 : if (memcmp(Name.data()+8, "eak_import", 10) != 0)
2292 : break;
2293 0 : return ParsedAttr::AT_WeakImport; // "clang::weak_import"
2294 : }
2295 : break;
2296 : case 'g': // 3 strings to match.
2297 2 : if (memcmp(Name.data()+1, "nu::", 4) != 0)
2298 : break;
2299 : switch (Name[5]) {
2300 : default: break;
2301 : case 'a': // 1 string to match.
2302 2 : if (memcmp(Name.data()+6, "lways_inline", 12) != 0)
2303 : break;
2304 2 : return ParsedAttr::AT_AlwaysInline; // "gnu::always_inline"
2305 : case 'i': // 1 string to match.
2306 0 : if (memcmp(Name.data()+6, "nit_priority", 12) != 0)
2307 : break;
2308 0 : return ParsedAttr::AT_InitPriority; // "gnu::init_priority"
2309 : case 'r': // 1 string to match.
2310 0 : if (memcmp(Name.data()+6, "eturns_twice", 12) != 0)
2311 : break;
2312 0 : return ParsedAttr::AT_ReturnsTwice; // "gnu::returns_twice"
2313 : }
2314 : break;
2315 : }
2316 : break;
2317 81 : case 19: // 8 strings to match.
2318 : switch (Name[0]) {
2319 : default: break;
2320 : case 'c': // 6 strings to match.
2321 23 : if (memcmp(Name.data()+1, "lang::", 6) != 0)
2322 : break;
2323 : switch (Name[7]) {
2324 : default: break;
2325 : case 'a': // 1 string to match.
2326 14 : if (memcmp(Name.data()+8, "vailability", 11) != 0)
2327 : break;
2328 14 : return ParsedAttr::AT_Availability; // "clang::availability"
2329 : case 'c': // 2 strings to match.
2330 5 : if (memcmp(Name.data()+8, "pu_", 3) != 0)
2331 : break;
2332 : switch (Name[11]) {
2333 : default: break;
2334 : case 'd': // 1 string to match.
2335 0 : if (memcmp(Name.data()+12, "ispatch", 7) != 0)
2336 : break;
2337 0 : return ParsedAttr::AT_CPUDispatch; // "clang::cpu_dispatch"
2338 : case 's': // 1 string to match.
2339 5 : if (memcmp(Name.data()+12, "pecific", 7) != 0)
2340 : break;
2341 5 : return ParsedAttr::AT_CPUSpecific; // "clang::cpu_specific"
2342 : }
2343 : break;
2344 2 : case 'o': // 2 strings to match.
2345 : switch (Name[8]) {
2346 : default: break;
2347 : case 'b': // 1 string to match.
2348 0 : if (memcmp(Name.data()+9, "jc_boxable", 10) != 0)
2349 : break;
2350 0 : return ParsedAttr::AT_ObjCBoxable; // "clang::objc_boxable"
2351 : case 'v': // 1 string to match.
2352 2 : if (memcmp(Name.data()+9, "erloadable", 10) != 0)
2353 : break;
2354 2 : return ParsedAttr::AT_Overloadable; // "clang::overloadable"
2355 : }
2356 : break;
2357 : case 'p': // 1 string to match.
2358 0 : if (memcmp(Name.data()+8, "reserve_all", 11) != 0)
2359 : break;
2360 0 : return ParsedAttr::AT_PreserveAll; // "clang::preserve_all"
2361 : }
2362 : break;
2363 : case 'g': // 2 strings to match.
2364 25 : if (memcmp(Name.data()+1, "nu::", 4) != 0)
2365 : break;
2366 : switch (Name[5]) {
2367 : default: break;
2368 : case 'a': // 1 string to match.
2369 0 : if (memcmp(Name.data()+6, "ssume_aligned", 13) != 0)
2370 : break;
2371 0 : return ParsedAttr::AT_AssumeAligned; // "gnu::assume_aligned"
2372 : case 'n': // 1 string to match.
2373 25 : if (memcmp(Name.data()+6, "o_split_stack", 13) != 0)
2374 : break;
2375 25 : return ParsedAttr::AT_NoSplitStack; // "gnu::no_split_stack"
2376 : }
2377 : break;
2378 : }
2379 : break;
2380 213 : case 20: // 10 strings to match.
2381 : switch (Name[0]) {
2382 : default: break;
2383 : case ':': // 1 string to match.
2384 103 : if (memcmp(Name.data()+1, ":carries_dependency", 19) != 0)
2385 : break;
2386 101 : return ParsedAttr::AT_CarriesDependency; // "::carries_dependency"
2387 : case 'c': // 8 strings to match.
2388 110 : if (memcmp(Name.data()+1, "lang::", 6) != 0)
2389 : break;
2390 : switch (Name[7]) {
2391 : default: break;
2392 : case 'a': // 1 string to match.
2393 2 : if (memcmp(Name.data()+8, "ddress_space", 12) != 0)
2394 : break;
2395 2 : return ParsedAttr::AT_AddressSpace; // "clang::address_space"
2396 : case 'c': // 1 string to match.
2397 0 : if (memcmp(Name.data()+8, "allable_when", 12) != 0)
2398 : break;
2399 0 : return ParsedAttr::AT_CallableWhen; // "clang::callable_when"
2400 : case 'l': // 1 string to match.
2401 44 : if (memcmp(Name.data()+8, "ifetimebound", 12) != 0)
2402 : break;
2403 44 : return ParsedAttr::AT_LifetimeBound; // "clang::lifetimebound"
2404 : case 'p': // 1 string to match.
2405 0 : if (memcmp(Name.data()+8, "reserve_most", 12) != 0)
2406 : break;
2407 0 : return ParsedAttr::AT_PreserveMost; // "clang::preserve_most"
2408 : case 'r': // 1 string to match.
2409 22 : if (memcmp(Name.data()+8, "einitializes", 12) != 0)
2410 : break;
2411 22 : return ParsedAttr::AT_Reinitializes; // "clang::reinitializes"
2412 2 : case 's': // 2 strings to match.
2413 : switch (Name[8]) {
2414 : default: break;
2415 : case 'e': // 1 string to match.
2416 0 : if (memcmp(Name.data()+9, "t_typestate", 11) != 0)
2417 : break;
2418 0 : return ParsedAttr::AT_SetTypestate; // "clang::set_typestate"
2419 : case 'w': // 1 string to match.
2420 2 : if (memcmp(Name.data()+9, "ift_context", 11) != 0)
2421 : break;
2422 2 : return ParsedAttr::AT_SwiftContext; // "clang::swift_context"
2423 : }
2424 : break;
2425 : case 'x': // 1 string to match.
2426 40 : if (memcmp(Name.data()+8, "ray_log_args", 12) != 0)
2427 : break;
2428 40 : return ParsedAttr::AT_XRayLogArgs; // "clang::xray_log_args"
2429 : }
2430 : break;
2431 : case 'g': // 1 string to match.
2432 0 : if (memcmp(Name.data()+1, "nu::returns_nonnull", 19) != 0)
2433 : break;
2434 0 : return ParsedAttr::AT_ReturnsNonNull; // "gnu::returns_nonnull"
2435 : }
2436 : break;
2437 : case 21: // 6 strings to match.
2438 54 : if (memcmp(Name.data()+0, "clang::", 7) != 0)
2439 : break;
2440 : switch (Name[7]) {
2441 : default: break;
2442 : case 'a': // 1 string to match.
2443 48 : if (memcmp(Name.data()+8, "lways_destroy", 13) != 0)
2444 : break;
2445 48 : return ParsedAttr::AT_AlwaysDestroy; // "clang::always_destroy"
2446 : case 'i': // 1 string to match.
2447 0 : if (memcmp(Name.data()+8, "ntel_ocl_bicc", 13) != 0)
2448 : break;
2449 0 : return ParsedAttr::AT_IntelOclBicc; // "clang::intel_ocl_bicc"
2450 : case 'o': // 2 strings to match.
2451 2 : if (memcmp(Name.data()+8, "bjc_", 4) != 0)
2452 : break;
2453 : switch (Name[12]) {
2454 : default: break;
2455 : case 'e': // 1 string to match.
2456 2 : if (memcmp(Name.data()+13, "xception", 8) != 0)
2457 : break;
2458 2 : return ParsedAttr::AT_ObjCException; // "clang::objc_exception"
2459 : case 'o': // 1 string to match.
2460 0 : if (memcmp(Name.data()+13, "wnership", 8) != 0)
2461 : break;
2462 0 : return ParsedAttr::AT_ObjCOwnership; // "clang::objc_ownership"
2463 : }
2464 : break;
2465 : case 'p': // 1 string to match.
2466 0 : if (memcmp(Name.data()+8, "t_guarded_var", 13) != 0)
2467 : break;
2468 0 : return ParsedAttr::AT_PtGuardedVar; // "clang::pt_guarded_var"
2469 : case 't': // 1 string to match.
2470 0 : if (memcmp(Name.data()+8, "est_typestate", 13) != 0)
2471 : break;
2472 0 : return ParsedAttr::AT_TestTypestate; // "clang::test_typestate"
2473 : }
2474 : break;
2475 10 : case 22: // 11 strings to match.
2476 : switch (Name[0]) {
2477 : default: break;
2478 : case 'c': // 10 strings to match.
2479 10 : if (memcmp(Name.data()+1, "lang::", 6) != 0)
2480 : break;
2481 : switch (Name[7]) {
2482 : default: break;
2483 : case 'a': // 2 strings to match.
2484 0 : if (memcmp(Name.data()+8, "mdgpu_num_", 10) != 0)
2485 : break;
2486 : switch (Name[18]) {
2487 : default: break;
2488 : case 's': // 1 string to match.
2489 0 : if (memcmp(Name.data()+19, "gpr", 3) != 0)
2490 : break;
2491 0 : return ParsedAttr::AT_AMDGPUNumSGPR; // "clang::amdgpu_num_sgpr"
2492 : case 'v': // 1 string to match.
2493 0 : if (memcmp(Name.data()+19, "gpr", 3) != 0)
2494 : break;
2495 0 : return ParsedAttr::AT_AMDGPUNumVGPR; // "clang::amdgpu_num_vgpr"
2496 : }
2497 : break;
2498 : case 'n': // 1 string to match.
2499 10 : if (memcmp(Name.data()+8, "ot_tail_called", 14) != 0)
2500 : break;
2501 10 : return ParsedAttr::AT_NotTailCalled; // "clang::not_tail_called"
2502 0 : case 'o': // 3 strings to match.
2503 : switch (Name[8]) {
2504 : default: break;
2505 : case 'b': // 1 string to match.
2506 0 : if (memcmp(Name.data()+9, "jc_root_class", 13) != 0)
2507 : break;
2508 0 : return ParsedAttr::AT_ObjCRootClass; // "clang::objc_root_class"
2509 : case 'w': // 2 strings to match.
2510 0 : if (memcmp(Name.data()+9, "nership_", 8) != 0)
2511 : break;
2512 : switch (Name[17]) {
2513 : default: break;
2514 : case 'h': // 1 string to match.
2515 0 : if (memcmp(Name.data()+18, "olds", 4) != 0)
2516 : break;
2517 0 : return ParsedAttr::AT_Ownership; // "clang::ownership_holds"
2518 : case 't': // 1 string to match.
2519 0 : if (memcmp(Name.data()+18, "akes", 4) != 0)
2520 : break;
2521 0 : return ParsedAttr::AT_Ownership; // "clang::ownership_takes"
2522 : }
2523 : break;
2524 : }
2525 : break;
2526 : case 'p': // 1 string to match.
2527 0 : if (memcmp(Name.data()+8, "aram_typestate", 14) != 0)
2528 : break;
2529 0 : return ParsedAttr::AT_ParamTypestate; // "clang::param_typestate"
2530 : case 's': // 1 string to match.
2531 0 : if (memcmp(Name.data()+8, "coped_lockable", 14) != 0)
2532 : break;
2533 0 : return ParsedAttr::AT_ScopedLockable; // "clang::scoped_lockable"
2534 : case 't': // 1 string to match.
2535 0 : if (memcmp(Name.data()+8, "ype_visibility", 14) != 0)
2536 : break;
2537 0 : return ParsedAttr::AT_TypeVisibility; // "clang::type_visibility"
2538 : case 'u': // 1 string to match.
2539 0 : if (memcmp(Name.data()+8, "nlock_function", 14) != 0)
2540 : break;
2541 0 : return ParsedAttr::AT_ReleaseCapability; // "clang::unlock_function"
2542 : }
2543 : break;
2544 : case 'g': // 1 string to match.
2545 0 : if (memcmp(Name.data()+1, "nu::transparent_union", 21) != 0)
2546 : break;
2547 0 : return ParsedAttr::AT_TransparentUnion; // "gnu::transparent_union"
2548 : }
2549 : break;
2550 23 : case 23: // 8 strings to match.
2551 : switch (Name[0]) {
2552 : default: break;
2553 : case 'c': // 6 strings to match.
2554 19 : if (memcmp(Name.data()+1, "lang::", 6) != 0)
2555 : break;
2556 : switch (Name[7]) {
2557 : default: break;
2558 : case 'i': // 1 string to match.
2559 13 : if (memcmp(Name.data()+8, "nternal_linkage", 15) != 0)
2560 : break;
2561 13 : return ParsedAttr::AT_InternalLinkage; // "clang::internal_linkage"
2562 : case 'm': // 1 string to match.
2563 0 : if (memcmp(Name.data()+8, "in_vector_width", 15) != 0)
2564 : break;
2565 0 : return ParsedAttr::AT_MinVectorWidth; // "clang::min_vector_width"
2566 6 : case 'n': // 2 strings to match.
2567 : switch (Name[8]) {
2568 : default: break;
2569 : case 'e': // 1 string to match.
2570 0 : if (memcmp(Name.data()+9, "on_vector_type", 14) != 0)
2571 : break;
2572 0 : return ParsedAttr::AT_NeonVectorType; // "clang::neon_vector_type"
2573 : case 's': // 1 string to match.
2574 6 : if (memcmp(Name.data()+9, "_consumes_self", 14) != 0)
2575 : break;
2576 6 : return ParsedAttr::AT_NSConsumesSelf; // "clang::ns_consumes_self"
2577 : }
2578 : break;
2579 : case 'p': // 1 string to match.
2580 0 : if (memcmp(Name.data()+8, "ass_object_size", 15) != 0)
2581 : break;
2582 0 : return ParsedAttr::AT_PassObjectSize; // "clang::pass_object_size"
2583 : case 'r': // 1 string to match.
2584 0 : if (memcmp(Name.data()+8, "eturn_typestate", 15) != 0)
2585 : break;
2586 0 : return ParsedAttr::AT_ReturnTypestate; // "clang::return_typestate"
2587 : }
2588 : break;
2589 : case 'g': // 2 strings to match.
2590 2 : if (memcmp(Name.data()+1, "nu::", 4) != 0)
2591 : break;
2592 : switch (Name[5]) {
2593 : default: break;
2594 : case 'n': // 1 string to match.
2595 0 : if (memcmp(Name.data()+6, "o_sanitize_thread", 17) != 0)
2596 : break;
2597 0 : return ParsedAttr::AT_NoSanitizeSpecific; // "gnu::no_sanitize_thread"
2598 : case 'w': // 1 string to match.
2599 2 : if (memcmp(Name.data()+6, "arn_unused_result", 17) != 0)
2600 : break;
2601 2 : return ParsedAttr::AT_WarnUnusedResult; // "gnu::warn_unused_result"
2602 : }
2603 : break;
2604 : }
2605 : break;
2606 28 : case 24: // 5 strings to match.
2607 : switch (Name[0]) {
2608 : default: break;
2609 : case 'c': // 4 strings to match.
2610 8 : if (memcmp(Name.data()+1, "lang::", 6) != 0)
2611 : break;
2612 : switch (Name[7]) {
2613 : default: break;
2614 : case 'a': // 1 string to match.
2615 0 : if (memcmp(Name.data()+8, "ssert_capability", 16) != 0)
2616 : break;
2617 0 : return ParsedAttr::AT_AssertCapability; // "clang::assert_capability"
2618 8 : case 'o': // 2 strings to match.
2619 : switch (Name[8]) {
2620 : default: break;
2621 : case 'b': // 1 string to match.
2622 4 : if (memcmp(Name.data()+9, "jc_runtime_name", 15) != 0)
2623 : break;
2624 4 : return ParsedAttr::AT_ObjCRuntimeName; // "clang::objc_runtime_name"
2625 : case 'w': // 1 string to match.
2626 4 : if (memcmp(Name.data()+9, "nership_returns", 15) != 0)
2627 : break;
2628 4 : return ParsedAttr::AT_Ownership; // "clang::ownership_returns"
2629 : }
2630 : break;
2631 : case 's': // 1 string to match.
2632 0 : if (memcmp(Name.data()+8, "hared_capability", 16) != 0)
2633 : break;
2634 0 : return ParsedAttr::AT_Capability; // "clang::shared_capability"
2635 : }
2636 : break;
2637 : case 'g': // 1 string to match.
2638 18 : if (memcmp(Name.data()+1, "nu::no_sanitize_address", 23) != 0)
2639 : break;
2640 18 : return ParsedAttr::AT_NoSanitizeSpecific; // "gnu::no_sanitize_address"
2641 : }
2642 : break;
2643 : case 25: // 10 strings to match.
2644 39 : if (memcmp(Name.data()+0, "clang::", 7) != 0)
2645 : break;
2646 : switch (Name[7]) {
2647 : default: break;
2648 : case 'a': // 1 string to match.
2649 0 : if (memcmp(Name.data()+8, "cquire_capability", 17) != 0)
2650 : break;
2651 0 : return ParsedAttr::AT_AcquireCapability; // "clang::acquire_capability"
2652 : case 'd': // 1 string to match.
2653 18 : if (memcmp(Name.data()+8, "isable_tail_calls", 17) != 0)
2654 : break;
2655 18 : return ParsedAttr::AT_DisableTailCalls; // "clang::disable_tail_calls"
2656 : case 'e': // 1 string to match.
2657 7 : if (memcmp(Name.data()+8, "num_extensibility", 17) != 0)
2658 : break;
2659 7 : return ParsedAttr::AT_EnumExtensibility; // "clang::enum_extensibility"
2660 : case 'i': // 1 string to match.
2661 0 : if (memcmp(Name.data()+8, "boutletcollection", 17) != 0)
2662 : break;
2663 0 : return ParsedAttr::AT_IBOutletCollection; // "clang::iboutletcollection"
2664 : case 'n': // 2 strings to match.
2665 0 : if (memcmp(Name.data()+8, "o_s", 3) != 0)
2666 : break;
2667 : switch (Name[11]) {
2668 : default: break;
2669 : case 'a': // 1 string to match.
2670 0 : if (memcmp(Name.data()+12, "nitize_memory", 13) != 0)
2671 : break;
2672 0 : return ParsedAttr::AT_NoSanitizeSpecific; // "clang::no_sanitize_memory"
2673 : case 't': // 1 string to match.
2674 0 : if (memcmp(Name.data()+12, "ack_protector", 13) != 0)
2675 : break;
2676 0 : return ParsedAttr::AT_NoStackProtector; // "clang::no_stack_protector"
2677 : }
2678 : break;
2679 : case 'o': // 1 string to match.
2680 0 : if (memcmp(Name.data()+8, "bjc_method_family", 17) != 0)
2681 : break;
2682 0 : return ParsedAttr::AT_ObjCMethodFamily; // "clang::objc_method_family"
2683 : case 'r': // 1 string to match.
2684 0 : if (memcmp(Name.data()+8, "elease_capability", 17) != 0)
2685 : break;
2686 0 : return ParsedAttr::AT_ReleaseCapability; // "clang::release_capability"
2687 : case 's': // 1 string to match.
2688 0 : if (memcmp(Name.data()+8, "wift_error_result", 17) != 0)
2689 : break;
2690 0 : return ParsedAttr::AT_SwiftErrorResult; // "clang::swift_error_result"
2691 : case 'w': // 1 string to match.
2692 14 : if (memcmp(Name.data()+8, "arn_unused_result", 17) != 0)
2693 : break;
2694 14 : return ParsedAttr::AT_WarnUnusedResult; // "clang::warn_unused_result"
2695 : }
2696 : break;
2697 : case 26: // 9 strings to match.
2698 6 : if (memcmp(Name.data()+0, "clang::", 7) != 0)
2699 : break;
2700 : switch (Name[7]) {
2701 : default: break;
2702 : case 'a': // 1 string to match.
2703 0 : if (memcmp(Name.data()+8, "mdgpu_waves_per_eu", 18) != 0)
2704 : break;
2705 0 : return ParsedAttr::AT_AMDGPUWavesPerEU; // "clang::amdgpu_waves_per_eu"
2706 : case 'c': // 3 strings to match.
2707 0 : if (memcmp(Name.data()+8, "f_", 2) != 0)
2708 : break;
2709 : switch (Name[10]) {
2710 : default: break;
2711 : case 'a': // 1 string to match.
2712 0 : if (memcmp(Name.data()+11, "udited_transfer", 15) != 0)
2713 : break;
2714 0 : return ParsedAttr::AT_CFAuditedTransfer; // "clang::cf_audited_transfer"
2715 : case 'r': // 1 string to match.
2716 0 : if (memcmp(Name.data()+11, "eturns_retained", 15) != 0)
2717 : break;
2718 0 : return ParsedAttr::AT_CFReturnsRetained; // "clang::cf_returns_retained"
2719 : case 'u': // 1 string to match.
2720 0 : if (memcmp(Name.data()+11, "nknown_transfer", 15) != 0)
2721 : break;
2722 0 : return ParsedAttr::AT_CFUnknownTransfer; // "clang::cf_unknown_transfer"
2723 : }
2724 : break;
2725 : case 'n': // 1 string to match.
2726 0 : if (memcmp(Name.data()+8, "s_returns_retained", 18) != 0)
2727 : break;
2728 0 : return ParsedAttr::AT_NSReturnsRetained; // "clang::ns_returns_retained"
2729 : case 'o': // 3 strings to match.
2730 6 : if (memcmp(Name.data()+8, "bjc_", 4) != 0)
2731 : break;
2732 : switch (Name[12]) {
2733 : default: break;
2734 : case 'b': // 2 strings to match.
2735 6 : if (memcmp(Name.data()+13, "ridge_", 6) != 0)
2736 : break;
2737 : switch (Name[19]) {
2738 : default: break;
2739 : case 'm': // 1 string to match.
2740 0 : if (memcmp(Name.data()+20, "utable", 6) != 0)
2741 : break;
2742 0 : return ParsedAttr::AT_ObjCBridgeMutable; // "clang::objc_bridge_mutable"
2743 : case 'r': // 1 string to match.
2744 6 : if (memcmp(Name.data()+20, "elated", 6) != 0)
2745 : break;
2746 6 : return ParsedAttr::AT_ObjCBridgeRelated; // "clang::objc_bridge_related"
2747 : }
2748 : break;
2749 : case 'r': // 1 string to match.
2750 0 : if (memcmp(Name.data()+13, "equires_super", 13) != 0)
2751 : break;
2752 0 : return ParsedAttr::AT_ObjCRequiresSuper; // "clang::objc_requires_super"
2753 : }
2754 : break;
2755 : case 'r': // 1 string to match.
2756 0 : if (memcmp(Name.data()+8, "equires_capability", 18) != 0)
2757 : break;
2758 0 : return ParsedAttr::AT_RequiresCapability; // "clang::requires_capability"
2759 : }
2760 : break;
2761 6 : case 27: // 3 strings to match.
2762 : switch (Name[0]) {
2763 : default: break;
2764 : case 'c': // 2 strings to match.
2765 0 : if (memcmp(Name.data()+1, "lang::", 6) != 0)
2766 : break;
2767 : switch (Name[7]) {
2768 : default: break;
2769 : case 'n': // 1 string to match.
2770 0 : if (memcmp(Name.data()+8, "eon_polyvector_type", 19) != 0)
2771 : break;
2772 0 : return ParsedAttr::AT_NeonPolyVectorType; // "clang::neon_polyvector_type"
2773 : case 'o': // 1 string to match.
2774 0 : if (memcmp(Name.data()+8, "bjc_runtime_visible", 19) != 0)
2775 : break;
2776 0 : return ParsedAttr::AT_ObjCRuntimeVisible; // "clang::objc_runtime_visible"
2777 : }
2778 : break;
2779 : case 'g': // 1 string to match.
2780 0 : if (memcmp(Name.data()+1, "nu::no_instrument_function", 26) != 0)
2781 : break;
2782 0 : return ParsedAttr::AT_NoInstrumentFunction; // "gnu::no_instrument_function"
2783 : }
2784 : break;
2785 123 : case 28: // 8 strings to match.
2786 : switch (Name[0]) {
2787 : default: break;
2788 : case 'c': // 7 strings to match.
2789 123 : if (memcmp(Name.data()+1, "lang::", 6) != 0)
2790 : break;
2791 : switch (Name[7]) {
2792 : default: break;
2793 : case 'l': // 1 string to match.
2794 26 : if (memcmp(Name.data()+8, "to_visibility_public", 20) != 0)
2795 : break;
2796 26 : return ParsedAttr::AT_LTOVisibilityPublic; // "clang::lto_visibility_public"
2797 : case 'o': // 1 string to match.
2798 0 : if (memcmp(Name.data()+8, "bjc_precise_lifetime", 20) != 0)
2799 : break;
2800 0 : return ParsedAttr::AT_ObjCPreciseLifetime; // "clang::objc_precise_lifetime"
2801 : case 'p': // 1 string to match.
2802 15 : if (memcmp(Name.data()+8, "ointer_with_type_tag", 20) != 0)
2803 : break;
2804 15 : return ParsedAttr::AT_ArgumentWithTypeTag; // "clang::pointer_with_type_tag"
2805 0 : case 's': // 2 strings to match.
2806 : switch (Name[8]) {
2807 : default: break;
2808 : case 'h': // 1 string to match.
2809 0 : if (memcmp(Name.data()+9, "ared_locks_required", 19) != 0)
2810 : break;
2811 0 : return ParsedAttr::AT_RequiresCapability; // "clang::shared_locks_required"
2812 : case 'w': // 1 string to match.
2813 0 : if (memcmp(Name.data()+9, "ift_indirect_result", 19) != 0)
2814 : break;
2815 0 : return ParsedAttr::AT_SwiftIndirectResult; // "clang::swift_indirect_result"
2816 : }
2817 : break;
2818 : case 't': // 1 string to match.
2819 14 : if (memcmp(Name.data()+8, "ype_tag_for_datatype", 20) != 0)
2820 : break;
2821 14 : return ParsedAttr::AT_TypeTagForDatatype; // "clang::type_tag_for_datatype"
2822 : case 'x': // 1 string to match.
2823 68 : if (memcmp(Name.data()+8, "ray_never_instrument", 20) != 0)
2824 : break;
2825 68 : return ParsedAttr::AT_XRayInstrument; // "clang::xray_never_instrument"
2826 : }
2827 : break;
2828 : case 'g': // 1 string to match.
2829 0 : if (memcmp(Name.data()+1, "nu::force_align_arg_pointer", 27) != 0)
2830 : break;
2831 0 : return ParsedAttr::AT_X86ForceAlignArgPointer; // "gnu::force_align_arg_pointer"
2832 : }
2833 : break;
2834 : case 29: // 5 strings to match.
2835 110 : if (memcmp(Name.data()+0, "clang::", 7) != 0)
2836 : break;
2837 : switch (Name[7]) {
2838 : default: break;
2839 : case 'a': // 1 string to match.
2840 0 : if (memcmp(Name.data()+8, "rgument_with_type_tag", 21) != 0)
2841 : break;
2842 0 : return ParsedAttr::AT_ArgumentWithTypeTag; // "clang::argument_with_type_tag"
2843 : case 'e': // 1 string to match.
2844 12 : if (memcmp(Name.data()+8, "xternal_source_symbol", 21) != 0)
2845 : break;
2846 12 : return ParsedAttr::AT_ExternalSourceSymbol; // "clang::external_source_symbol"
2847 : case 'o': // 1 string to match.
2848 0 : if (memcmp(Name.data()+8, "bjc_independent_class", 21) != 0)
2849 : break;
2850 0 : return ParsedAttr::AT_ObjCIndependentClass; // "clang::objc_independent_class"
2851 : case 't': // 1 string to match.
2852 0 : if (memcmp(Name.data()+8, "ry_acquire_capability", 21) != 0)
2853 : break;
2854 0 : return ParsedAttr::AT_TryAcquireCapability; // "clang::try_acquire_capability"
2855 : case 'x': // 1 string to match.
2856 98 : if (memcmp(Name.data()+8, "ray_always_instrument", 21) != 0)
2857 : break;
2858 98 : return ParsedAttr::AT_XRayInstrument; // "clang::xray_always_instrument"
2859 : }
2860 : break;
2861 4 : case 30: // 4 strings to match.
2862 : switch (Name[0]) {
2863 : default: break;
2864 : case 'c': // 3 strings to match.
2865 0 : if (memcmp(Name.data()+1, "lang::", 6) != 0)
2866 : break;
2867 : switch (Name[7]) {
2868 : default: break;
2869 : case 'c': // 1 string to match.
2870 0 : if (memcmp(Name.data()+8, "f_returns_not_retained", 22) != 0)
2871 : break;
2872 0 : return ParsedAttr::AT_CFReturnsNotRetained; // "clang::cf_returns_not_retained"
2873 : case 'n': // 2 strings to match.
2874 0 : if (memcmp(Name.data()+8, "s_returns_", 10) != 0)
2875 : break;
2876 : switch (Name[18]) {
2877 : default: break;
2878 : case 'a': // 1 string to match.
2879 0 : if (memcmp(Name.data()+19, "utoreleased", 11) != 0)
2880 : break;
2881 0 : return ParsedAttr::AT_NSReturnsAutoreleased; // "clang::ns_returns_autoreleased"
2882 : case 'n': // 1 string to match.
2883 0 : if (memcmp(Name.data()+19, "ot_retained", 11) != 0)
2884 : break;
2885 0 : return ParsedAttr::AT_NSReturnsNotRetained; // "clang::ns_returns_not_retained"
2886 : }
2887 : break;
2888 : }
2889 : break;
2890 : case 'g': // 1 string to match.
2891 4 : if (memcmp(Name.data()+1, "nu::no_caller_saved_registers", 29) != 0)
2892 : break;
2893 4 : return ParsedAttr::AT_AnyX86NoCallerSavedRegisters; // "gnu::no_caller_saved_registers"
2894 : }
2895 : break;
2896 2 : case 31: // 3 strings to match.
2897 : switch (Name[0]) {
2898 : default: break;
2899 : case 'c': // 2 strings to match.
2900 0 : if (memcmp(Name.data()+1, "lang::", 6) != 0)
2901 : break;
2902 : switch (Name[7]) {
2903 : default: break;
2904 : case 'a': // 1 string to match.
2905 0 : if (memcmp(Name.data()+8, "ssert_shared_capability", 23) != 0)
2906 : break;
2907 0 : return ParsedAttr::AT_AssertCapability; // "clang::assert_shared_capability"
2908 : case 'e': // 1 string to match.
2909 0 : if (memcmp(Name.data()+8, "xclusive_locks_required", 23) != 0)
2910 : break;
2911 0 : return ParsedAttr::AT_RequiresCapability; // "clang::exclusive_locks_required"
2912 : }
2913 : break;
2914 : case 'g': // 1 string to match.
2915 2 : if (memcmp(Name.data()+1, "nu::no_address_safety_analysis", 30) != 0)
2916 : break;
2917 2 : return ParsedAttr::AT_NoSanitizeSpecific; // "gnu::no_address_safety_analysis"
2918 : }
2919 : break;
2920 : case 32: // 3 strings to match.
2921 0 : if (memcmp(Name.data()+0, "clang::", 7) != 0)
2922 : break;
2923 : switch (Name[7]) {
2924 : default: break;
2925 : case 'a': // 1 string to match.
2926 0 : if (memcmp(Name.data()+8, "cquire_shared_capability", 24) != 0)
2927 : break;
2928 0 : return ParsedAttr::AT_AcquireCapability; // "clang::acquire_shared_capability"
2929 : case 'n': // 1 string to match.
2930 0 : if (memcmp(Name.data()+8, "o_thread_safety_analysis", 24) != 0)
2931 : break;
2932 0 : return ParsedAttr::AT_NoThreadSafetyAnalysis; // "clang::no_thread_safety_analysis"
2933 : case 'r': // 1 string to match.
2934 0 : if (memcmp(Name.data()+8, "elease_shared_capability", 24) != 0)
2935 : break;
2936 0 : return ParsedAttr::AT_ReleaseCapability; // "clang::release_shared_capability"
2937 : }
2938 : break;
2939 : case 33: // 4 strings to match.
2940 2 : if (memcmp(Name.data()+0, "clang::", 7) != 0)
2941 : break;
2942 : switch (Name[7]) {
2943 : default: break;
2944 : case 'c': // 1 string to match.
2945 0 : if (memcmp(Name.data()+8, "onsumable_auto_cast_state", 25) != 0)
2946 : break;
2947 0 : return ParsedAttr::AT_ConsumableAutoCast; // "clang::consumable_auto_cast_state"
2948 : case 'o': // 1 string to match.
2949 2 : if (memcmp(Name.data()+8, "bjc_returns_inner_pointer", 25) != 0)
2950 : break;
2951 2 : return ParsedAttr::AT_ObjCReturnsInnerPointer; // "clang::objc_returns_inner_pointer"
2952 0 : case 'r': // 2 strings to match.
2953 0 : if (Name[8] != 'e')
2954 : break;
2955 : switch (Name[9]) {
2956 : default: break;
2957 : case 'l': // 1 string to match.
2958 0 : if (memcmp(Name.data()+10, "ease_generic_capability", 23) != 0)
2959 : break;
2960 0 : return ParsedAttr::AT_ReleaseCapability; // "clang::release_generic_capability"
2961 : case 'q': // 1 string to match.
2962 0 : if (memcmp(Name.data()+10, "uires_shared_capability", 23) != 0)
2963 : break;
2964 0 : return ParsedAttr::AT_RequiresCapability; // "clang::requires_shared_capability"
2965 : }
2966 : break;
2967 : }
2968 : break;
2969 : case 34: // 3 strings to match.
2970 2 : if (memcmp(Name.data()+0, "clang::", 7) != 0)
2971 : break;
2972 : switch (Name[7]) {
2973 : default: break;
2974 : case 'a': // 1 string to match.
2975 0 : if (memcmp(Name.data()+8, "mdgpu_flat_work_group_size", 26) != 0)
2976 : break;
2977 0 : return ParsedAttr::AT_AMDGPUFlatWorkGroupSize; // "clang::amdgpu_flat_work_group_size"
2978 : case 'o': // 2 strings to match.
2979 0 : if (memcmp(Name.data()+8, "bjc_", 4) != 0)
2980 : break;
2981 : switch (Name[12]) {
2982 : default: break;
2983 : case 'd': // 1 string to match.
2984 0 : if (memcmp(Name.data()+13, "esignated_initializer", 21) != 0)
2985 : break;
2986 0 : return ParsedAttr::AT_ObjCDesignatedInitializer; // "clang::objc_designated_initializer"
2987 : case 's': // 1 string to match.
2988 0 : if (memcmp(Name.data()+13, "ubclassing_restricted", 21) != 0)
2989 : break;
2990 0 : return ParsedAttr::AT_ObjCSubclassingRestricted; // "clang::objc_subclassing_restricted"
2991 : }
2992 : break;
2993 : }
2994 : break;
2995 : case 35: // 1 string to match.
2996 0 : if (memcmp(Name.data()+0, "clang::consumable_set_state_on_read", 35) != 0)
2997 : break;
2998 0 : return ParsedAttr::AT_ConsumableSetOnRead; // "clang::consumable_set_state_on_read"
2999 : case 36: // 1 string to match.
3000 0 : if (memcmp(Name.data()+0, "clang::try_acquire_shared_capability", 36) != 0)
3001 : break;
3002 0 : return ParsedAttr::AT_TryAcquireCapability; // "clang::try_acquire_shared_capability"
3003 : case 38: // 1 string to match.
3004 0 : if (memcmp(Name.data()+0, "clang::require_constant_initialization", 38) != 0)
3005 : break;
3006 0 : return ParsedAttr::AT_RequireConstantInit; // "clang::require_constant_initialization"
3007 : case 41: // 1 string to match.
3008 0 : if (memcmp(Name.data()+0, "clang::objc_requires_property_definitions", 41) != 0)
3009 : break;
3010 0 : return ParsedAttr::AT_ObjCRequiresPropertyDefs; // "clang::objc_requires_property_definitions"
3011 : case 42: // 2 strings to match.
3012 0 : if (memcmp(Name.data()+0, "clang::", 7) != 0)
3013 : break;
3014 : switch (Name[7]) {
3015 : default: break;
3016 : case 'e': // 1 string to match.
3017 0 : if (memcmp(Name.data()+8, "xclude_from_explicit_instantiation", 34) != 0)
3018 : break;
3019 0 : return ParsedAttr::AT_ExcludeFromExplicitInstantiation; // "clang::exclude_from_explicit_instantiation"
3020 : case 'o': // 1 string to match.
3021 0 : if (memcmp(Name.data()+8, "bjc_arc_weak_reference_unavailable", 34) != 0)
3022 : break;
3023 0 : return ParsedAttr::AT_ArcWeakrefUnavailable; // "clang::objc_arc_weak_reference_unavailable"
3024 : }
3025 : break;
3026 : case 53: // 1 string to match.
3027 2 : if (memcmp(Name.data()+0, "clang::objc_protocol_requires_explicit_implementation", 53) != 0)
3028 : break;
3029 2 : return ParsedAttr::AT_ObjCExplicitProtocolImpl; // "clang::objc_protocol_requires_explicit_implementation"
3030 : }
3031 120915 : } else if (ParsedAttr::AS_C2x == Syntax) {
3032 187 : switch (Name.size()) {
3033 : default: break;
3034 : case 11: // 1 string to match.
3035 11 : if (memcmp(Name.data()+0, "::nodiscard", 11) != 0)
3036 : break;
3037 11 : return ParsedAttr::AT_WarnUnusedResult; // "::nodiscard"
3038 : case 12: // 1 string to match.
3039 21 : if (memcmp(Name.data()+0, "::deprecated", 12) != 0)
3040 : break;
3041 20 : return ParsedAttr::AT_Deprecated; // "::deprecated"
3042 21 : case 13: // 3 strings to match.
3043 : switch (Name[0]) {
3044 : default: break;
3045 : case ':': // 1 string to match.
3046 21 : if (memcmp(Name.data()+1, ":fallthrough", 12) != 0)
3047 : break;
3048 21 : return ParsedAttr::AT_FallThrough; // "::fallthrough"
3049 : case 'c': // 2 strings to match.
3050 0 : if (memcmp(Name.data()+1, "lang::", 6) != 0)
3051 : break;
3052 : switch (Name[7]) {
3053 : default: break;
3054 : case 'b': // 1 string to match.
3055 0 : if (memcmp(Name.data()+8, "locks", 5) != 0)
3056 : break;
3057 0 : return ParsedAttr::AT_Blocks; // "clang::blocks"
3058 : case 'p': // 1 string to match.
3059 0 : if (memcmp(Name.data()+8, "ascal", 5) != 0)
3060 : break;
3061 0 : return ParsedAttr::AT_Pascal; // "clang::pascal"
3062 : }
3063 : break;
3064 : }
3065 : break;
3066 16 : case 14: // 4 strings to match.
3067 : switch (Name[0]) {
3068 : default: break;
3069 : case ':': // 1 string to match.
3070 16 : if (memcmp(Name.data()+1, ":maybe_unused", 13) != 0)
3071 : break;
3072 16 : return ParsedAttr::AT_Unused; // "::maybe_unused"
3073 : case 'c': // 3 strings to match.
3074 0 : if (memcmp(Name.data()+1, "lang::", 6) != 0)
3075 : break;
3076 : switch (Name[7]) {
3077 : default: break;
3078 : case 'm': // 1 string to match.
3079 0 : if (memcmp(Name.data()+8, "insize", 6) != 0)
3080 : break;
3081 0 : return ParsedAttr::AT_MinSize; // "clang::minsize"
3082 0 : case 'o': // 2 strings to match.
3083 : switch (Name[8]) {
3084 : default: break;
3085 : case 'b': // 1 string to match.
3086 0 : if (memcmp(Name.data()+9, "jc_gc", 5) != 0)
3087 : break;
3088 0 : return ParsedAttr::AT_ObjCGC; // "clang::objc_gc"
3089 : case 'p': // 1 string to match.
3090 0 : if (memcmp(Name.data()+9, "tnone", 5) != 0)
3091 : break;
3092 0 : return ParsedAttr::AT_OptimizeNone; // "clang::optnone"
3093 : }
3094 : break;
3095 : }
3096 : break;
3097 : }
3098 : break;
3099 : case 15: // 5 strings to match.
3100 11 : if (memcmp(Name.data()+0, "clang::", 7) != 0)
3101 : break;
3102 : switch (Name[7]) {
3103 : default: break;
3104 : case 'N': // 1 string to match.
3105 0 : if (memcmp(Name.data()+8, "SObject", 7) != 0)
3106 : break;
3107 0 : return ParsedAttr::AT_ObjCNSObject; // "clang::NSObject"
3108 : case 'a': // 1 string to match.
3109 6 : if (memcmp(Name.data()+8, "nnotate", 7) != 0)
3110 : break;
3111 6 : return ParsedAttr::AT_Annotate; // "clang::annotate"
3112 4 : case 'i': // 2 strings to match.
3113 4 : if (Name[8] != 'b')
3114 : break;
3115 : switch (Name[9]) {
3116 : default: break;
3117 : case 'a': // 1 string to match.
3118 0 : if (memcmp(Name.data()+10, "ction", 5) != 0)
3119 : break;
3120 0 : return ParsedAttr::AT_IBAction; // "clang::ibaction"
3121 : case 'o': // 1 string to match.
3122 4 : if (memcmp(Name.data()+10, "utlet", 5) != 0)
3123 : break;
3124 4 : return ParsedAttr::AT_IBOutlet; // "clang::iboutlet"
3125 : }
3126 : break;
3127 : case 'n': // 1 string to match.
3128 1 : if (memcmp(Name.data()+8, "oescape", 7) != 0)
3129 : break;
3130 1 : return ParsedAttr::AT_NoEscape; // "clang::noescape"
3131 : }
3132 : break;
3133 : case 16: // 2 strings to match.
3134 3 : if (memcmp(Name.data()+0, "clang::", 7) != 0)
3135 : break;
3136 : switch (Name[7]) {
3137 : default: break;
3138 : case 'f': // 1 string to match.
3139 1 : if (memcmp(Name.data()+8, "lag_enum", 8) != 0)
3140 : break;
3141 1 : return ParsedAttr::AT_FlagEnum; // "clang::flag_enum"
3142 : case 's': // 1 string to match.
3143 2 : if (memcmp(Name.data()+8, "wiftcall", 8) != 0)
3144 : break;
3145 2 : return ParsedAttr::AT_SwiftCall; // "clang::swiftcall"
3146 : }
3147 : break;
3148 : case 17: // 2 strings to match.
3149 0 : if (memcmp(Name.data()+0, "clang::", 7) != 0)
3150 : break;
3151 : switch (Name[7]) {
3152 : default: break;
3153 : case 'c': // 1 string to match.
3154 0 : if (memcmp(Name.data()+8, "onvergent", 9) != 0)
3155 : break;
3156 0 : return ParsedAttr::AT_Convergent; // "clang::convergent"
3157 : case 'v': // 1 string to match.
3158 0 : if (memcmp(Name.data()+8, "ectorcall", 9) != 0)
3159 : break;
3160 0 : return ParsedAttr::AT_VectorCall; // "clang::vectorcall"
3161 : }
3162 : break;
3163 : case 18: // 7 strings to match.
3164 2 : if (memcmp(Name.data()+0, "clang::", 7) != 0)
3165 : break;
3166 : switch (Name[7]) {
3167 : default: break;
3168 : case 'c': // 1 string to match.
3169 0 : if (memcmp(Name.data()+8, "f_consumed", 10) != 0)
3170 : break;
3171 0 : return ParsedAttr::AT_CFConsumed; // "clang::cf_consumed"
3172 0 : case 'n': // 3 strings to match.
3173 : switch (Name[8]) {
3174 : default: break;
3175 0 : case 'o': // 2 strings to match.
3176 : switch (Name[9]) {
3177 : default: break;
3178 : case '_': // 1 string to match.
3179 0 : if (memcmp(Name.data()+10, "sanitize", 8) != 0)
3180 : break;
3181 0 : return ParsedAttr::AT_NoSanitize; // "clang::no_sanitize"
3182 : case 'd': // 1 string to match.
3183 0 : if (memcmp(Name.data()+10, "uplicate", 8) != 0)
3184 : break;
3185 0 : return ParsedAttr::AT_NoDuplicate; // "clang::noduplicate"
3186 : }
3187 : break;
3188 : case 's': // 1 string to match.
3189 0 : if (memcmp(Name.data()+9, "_consumed", 9) != 0)
3190 : break;
3191 0 : return ParsedAttr::AT_NSConsumed; // "clang::ns_consumed"
3192 : }
3193 : break;
3194 : case 'o': // 1 string to match.
3195 0 : if (memcmp(Name.data()+8, "bjc_bridge", 10) != 0)
3196 : break;
3197 0 : return ParsedAttr::AT_ObjCBridge; // "clang::objc_bridge"
3198 : case 'u': // 1 string to match.
3199 2 : if (memcmp(Name.data()+8, "navailable", 10) != 0)
3200 : break;
3201 2 : return ParsedAttr::AT_Unavailable; // "clang::unavailable"
3202 : case 'w': // 1 string to match.
3203 0 : if (memcmp(Name.data()+8, "eak_import", 10) != 0)
3204 : break;
3205 0 : return ParsedAttr::AT_WeakImport; // "clang::weak_import"
3206 : }
3207 : break;
3208 : case 19: // 6 strings to match.
3209 17 : if (memcmp(Name.data()+0, "clang::", 7) != 0)
3210 : break;
3211 : switch (Name[7]) {
3212 : default: break;
3213 : case 'a': // 1 string to match.
3214 14 : if (memcmp(Name.data()+8, "vailability", 11) != 0)
3215 : break;
3216 14 : return ParsedAttr::AT_Availability; // "clang::availability"
3217 : case 'c': // 2 strings to match.
3218 0 : if (memcmp(Name.data()+8, "pu_", 3) != 0)
3219 : break;
3220 : switch (Name[11]) {
3221 : default: break;
3222 : case 'd': // 1 string to match.
3223 0 : if (memcmp(Name.data()+12, "ispatch", 7) != 0)
3224 : break;
3225 0 : return ParsedAttr::AT_CPUDispatch; // "clang::cpu_dispatch"
3226 : case 's': // 1 string to match.
3227 0 : if (memcmp(Name.data()+12, "pecific", 7) != 0)
3228 : break;
3229 0 : return ParsedAttr::AT_CPUSpecific; // "clang::cpu_specific"
3230 : }
3231 : break;
3232 2 : case 'o': // 2 strings to match.
3233 : switch (Name[8]) {
3234 : default: break;
3235 : case 'b': // 1 string to match.
3236 0 : if (memcmp(Name.data()+9, "jc_boxable", 10) != 0)
3237 : break;
3238 0 : return ParsedAttr::AT_ObjCBoxable; // "clang::objc_boxable"
3239 : case 'v': // 1 string to match.
3240 2 : if (memcmp(Name.data()+9, "erloadable", 10) != 0)
3241 : break;
3242 2 : return ParsedAttr::AT_Overloadable; // "clang::overloadable"
3243 : }
3244 : break;
3245 : case 'p': // 1 string to match.
3246 0 : if (memcmp(Name.data()+8, "reserve_all", 11) != 0)
3247 : break;
3248 0 : return ParsedAttr::AT_PreserveAll; // "clang::preserve_all"
3249 : }
3250 : break;
3251 : case 20: // 4 strings to match.
3252 4 : if (memcmp(Name.data()+0, "clang::", 7) != 0)
3253 : break;
3254 : switch (Name[7]) {
3255 : default: break;
3256 : case 'a': // 1 string to match.
3257 2 : if (memcmp(Name.data()+8, "ddress_space", 12) != 0)
3258 : break;
3259 2 : return ParsedAttr::AT_AddressSpace; // "clang::address_space"
3260 : case 'p': // 1 string to match.
3261 0 : if (memcmp(Name.data()+8, "reserve_most", 12) != 0)
3262 : break;
3263 0 : return ParsedAttr::AT_PreserveMost; // "clang::preserve_most"
3264 : case 's': // 1 string to match.
3265 2 : if (memcmp(Name.data()+8, "wift_context", 12) != 0)
3266 : break;
3267 2 : return ParsedAttr::AT_SwiftContext; // "clang::swift_context"
3268 : case 'x': // 1 string to match.
3269 0 : if (memcmp(Name.data()+8, "ray_log_args", 12) != 0)
3270 : break;
3271 0 : return ParsedAttr::AT_XRayLogArgs; // "clang::xray_log_args"
3272 : }
3273 : break;
3274 : case 21: // 2 strings to match.
3275 2 : if (memcmp(Name.data()+0, "clang::objc_", 12) != 0)
3276 : break;
3277 : switch (Name[12]) {
3278 : default: break;
3279 : case 'e': // 1 string to match.
3280 2 : if (memcmp(Name.data()+13, "xception", 8) != 0)
3281 : break;
3282 2 : return ParsedAttr::AT_ObjCException; // "clang::objc_exception"
3283 : case 'o': // 1 string to match.
3284 0 : if (memcmp(Name.data()+13, "wnership", 8) != 0)
3285 : break;
3286 0 : return ParsedAttr::AT_ObjCOwnership; // "clang::objc_ownership"
3287 : }
3288 : break;
3289 : case 22: // 5 strings to match.
3290 0 : if (memcmp(Name.data()+0, "clang::", 7) != 0)
3291 : break;
3292 : switch (Name[7]) {
3293 : default: break;
3294 : case 'n': // 1 string to match.
3295 0 : if (memcmp(Name.data()+8, "ot_tail_called", 14) != 0)
3296 : break;
3297 0 : return ParsedAttr::AT_NotTailCalled; // "clang::not_tail_called"
3298 0 : case 'o': // 3 strings to match.
3299 : switch (Name[8]) {
3300 : default: break;
3301 : case 'b': // 1 string to match.
3302 0 : if (memcmp(Name.data()+9, "jc_root_class", 13) != 0)
3303 : break;
3304 0 : return ParsedAttr::AT_ObjCRootClass; // "clang::objc_root_class"
3305 : case 'w': // 2 strings to match.
3306 0 : if (memcmp(Name.data()+9, "nership_", 8) != 0)
3307 : break;
3308 : switch (Name[17]) {
3309 : default: break;
3310 : case 'h': // 1 string to match.
3311 0 : if (memcmp(Name.data()+18, "olds", 4) != 0)
3312 : break;
3313 0 : return ParsedAttr::AT_Ownership; // "clang::ownership_holds"
3314 : case 't': // 1 string to match.
3315 0 : if (memcmp(Name.data()+18, "akes", 4) != 0)
3316 : break;
3317 0 : return ParsedAttr::AT_Ownership; // "clang::ownership_takes"
3318 : }
3319 : break;
3320 : }
3321 : break;
3322 : case 't': // 1 string to match.
3323 0 : if (memcmp(Name.data()+8, "ype_visibility", 14) != 0)
3324 : break;
3325 0 : return ParsedAttr::AT_TypeVisibility; // "clang::type_visibility"
3326 : }
3327 : break;
3328 : case 23: // 5 strings to match.
3329 9 : if (memcmp(Name.data()+0, "clang::", 7) != 0)
3330 : break;
3331 : switch (Name[7]) {
3332 : default: break;
3333 : case 'i': // 1 string to match.
3334 3 : if (memcmp(Name.data()+8, "nternal_linkage", 15) != 0)
3335 : break;
3336 3 : return ParsedAttr::AT_InternalLinkage; // "clang::internal_linkage"
3337 : case 'm': // 1 string to match.
3338 0 : if (memcmp(Name.data()+8, "in_vector_width", 15) != 0)
3339 : break;
3340 0 : return ParsedAttr::AT_MinVectorWidth; // "clang::min_vector_width"
3341 6 : case 'n': // 2 strings to match.
3342 : switch (Name[8]) {
3343 : default: break;
3344 : case 'e': // 1 string to match.
3345 0 : if (memcmp(Name.data()+9, "on_vector_type", 14) != 0)
3346 : break;
3347 0 : return ParsedAttr::AT_NeonVectorType; // "clang::neon_vector_type"
3348 : case 's': // 1 string to match.
3349 6 : if (memcmp(Name.data()+9, "_consumes_self", 14) != 0)
3350 : break;
3351 6 : return ParsedAttr::AT_NSConsumesSelf; // "clang::ns_consumes_self"
3352 : }
3353 : break;
3354 : case 'p': // 1 string to match.
3355 0 : if (memcmp(Name.data()+8, "ass_object_size", 15) != 0)
3356 : break;
3357 0 : return ParsedAttr::AT_PassObjectSize; // "clang::pass_object_size"
3358 : }
3359 : break;
3360 : case 24: // 2 strings to match.
3361 10 : if (memcmp(Name.data()+0, "clang::o", 8) != 0)
3362 : break;
3363 : switch (Name[8]) {
3364 : default: break;
3365 : case 'b': // 1 string to match.
3366 4 : if (memcmp(Name.data()+9, "jc_runtime_name", 15) != 0)
3367 : break;
3368 4 : return ParsedAttr::AT_ObjCRuntimeName; // "clang::objc_runtime_name"
3369 : case 'w': // 1 string to match.
3370 6 : if (memcmp(Name.data()+9, "nership_returns", 15) != 0)
3371 : break;
3372 6 : return ParsedAttr::AT_Ownership; // "clang::ownership_returns"
3373 : }
3374 : break;
3375 : case 25: // 7 strings to match.
3376 3 : if (memcmp(Name.data()+0, "clang::", 7) != 0)
3377 : break;
3378 : switch (Name[7]) {
3379 : default: break;
3380 : case 'd': // 1 string to match.
3381 0 : if (memcmp(Name.data()+8, "isable_tail_calls", 17) != 0)
3382 : break;
3383 0 : return ParsedAttr::AT_DisableTailCalls; // "clang::disable_tail_calls"
3384 : case 'e': // 1 string to match.
3385 3 : if (memcmp(Name.data()+8, "num_extensibility", 17) != 0)
3386 : break;
3387 3 : return ParsedAttr::AT_EnumExtensibility; // "clang::enum_extensibility"
3388 : case 'i': // 1 string to match.
3389 0 : if (memcmp(Name.data()+8, "boutletcollection", 17) != 0)
3390 : break;
3391 0 : return ParsedAttr::AT_IBOutletCollection; // "clang::iboutletcollection"
3392 : case 'n': // 2 strings to match.
3393 0 : if (memcmp(Name.data()+8, "o_s", 3) != 0)
3394 : break;
3395 : switch (Name[11]) {
3396 : default: break;
3397 : case 'a': // 1 string to match.
3398 0 : if (memcmp(Name.data()+12, "nitize_memory", 13) != 0)
3399 : break;
3400 0 : return ParsedAttr::AT_NoSanitizeSpecific; // "clang::no_sanitize_memory"
3401 : case 't': // 1 string to match.
3402 0 : if (memcmp(Name.data()+12, "ack_protector", 13) != 0)
3403 : break;
3404 0 : return ParsedAttr::AT_NoStackProtector; // "clang::no_stack_protector"
3405 : }
3406 : break;
3407 : case 'o': // 1 string to match.
3408 0 : if (memcmp(Name.data()+8, "bjc_method_family", 17) != 0)
3409 : break;
3410 0 : return ParsedAttr::AT_ObjCMethodFamily; // "clang::objc_method_family"
3411 : case 's': // 1 string to match.
3412 0 : if (memcmp(Name.data()+8, "wift_error_result", 17) != 0)
3413 : break;
3414 0 : return ParsedAttr::AT_SwiftErrorResult; // "clang::swift_error_result"
3415 : }
3416 : break;
3417 : case 26: // 7 strings to match.
3418 6 : if (memcmp(Name.data()+0, "clang::", 7) != 0)
3419 : break;
3420 : switch (Name[7]) {
3421 : default: break;
3422 : case 'c': // 3 strings to match.
3423 0 : if (memcmp(Name.data()+8, "f_", 2) != 0)
3424 : break;
3425 : switch (Name[10]) {
3426 : default: break;
3427 : case 'a': // 1 string to match.
3428 0 : if (memcmp(Name.data()+11, "udited_transfer", 15) != 0)
3429 : break;
3430 0 : return ParsedAttr::AT_CFAuditedTransfer; // "clang::cf_audited_transfer"
3431 : case 'r': // 1 string to match.
3432 0 : if (memcmp(Name.data()+11, "eturns_retained", 15) != 0)
3433 : break;
3434 0 : return ParsedAttr::AT_CFReturnsRetained; // "clang::cf_returns_retained"
3435 : case 'u': // 1 string to match.
3436 0 : if (memcmp(Name.data()+11, "nknown_transfer", 15) != 0)
3437 : break;
3438 0 : return ParsedAttr::AT_CFUnknownTransfer; // "clang::cf_unknown_transfer"
3439 : }
3440 : break;
3441 : case 'n': // 1 string to match.
3442 0 : if (memcmp(Name.data()+8, "s_returns_retained", 18) != 0)
3443 : break;
3444 0 : return ParsedAttr::AT_NSReturnsRetained; // "clang::ns_returns_retained"
3445 : case 'o': // 3 strings to match.
3446 6 : if (memcmp(Name.data()+8, "bjc_", 4) != 0)
3447 : break;
3448 : switch (Name[12]) {
3449 : default: break;
3450 : case 'b': // 2 strings to match.
3451 6 : if (memcmp(Name.data()+13, "ridge_", 6) != 0)
3452 : break;
3453 : switch (Name[19]) {
3454 : default: break;
3455 : case 'm': // 1 string to match.
3456 0 : if (memcmp(Name.data()+20, "utable", 6) != 0)
3457 : break;
3458 0 : return ParsedAttr::AT_ObjCBridgeMutable; // "clang::objc_bridge_mutable"
3459 : case 'r': // 1 string to match.
3460 6 : if (memcmp(Name.data()+20, "elated", 6) != 0)
3461 : break;
3462 6 : return ParsedAttr::AT_ObjCBridgeRelated; // "clang::objc_bridge_related"
3463 : }
3464 : break;
3465 : case 'r': // 1 string to match.
3466 0 : if (memcmp(Name.data()+13, "equires_super", 13) != 0)
3467 : break;
3468 0 : return ParsedAttr::AT_ObjCRequiresSuper; // "clang::objc_requires_super"
3469 : }
3470 : break;
3471 : }
3472 : break;
3473 : case 27: // 2 strings to match.
3474 0 : if (memcmp(Name.data()+0, "clang::", 7) != 0)
3475 : break;
3476 : switch (Name[7]) {
3477 : default: break;
3478 : case 'n': // 1 string to match.
3479 0 : if (memcmp(Name.data()+8, "eon_polyvector_type", 19) != 0)
3480 : break;
3481 0 : return ParsedAttr::AT_NeonPolyVectorType; // "clang::neon_polyvector_type"
3482 : case 'o': // 1 string to match.
3483 0 : if (memcmp(Name.data()+8, "bjc_runtime_visible", 19) != 0)
3484 : break;
3485 0 : return ParsedAttr::AT_ObjCRuntimeVisible; // "clang::objc_runtime_visible"
3486 : }
3487 : break;
3488 : case 28: // 6 strings to match.
3489 36 : if (memcmp(Name.data()+0, "clang::", 7) != 0)
3490 : break;
3491 : switch (Name[7]) {
3492 : default: break;
3493 : case 'l': // 1 string to match.
3494 0 : if (memcmp(Name.data()+8, "to_visibility_public", 20) != 0)
3495 : break;
3496 0 : return ParsedAttr::AT_LTOVisibilityPublic; // "clang::lto_visibility_public"
3497 : case 'o': // 1 string to match.
3498 0 : if (memcmp(Name.data()+8, "bjc_precise_lifetime", 20) != 0)
3499 : break;
3500 0 : return ParsedAttr::AT_ObjCPreciseLifetime; // "clang::objc_precise_lifetime"
3501 : case 'p': // 1 string to match.
3502 22 : if (memcmp(Name.data()+8, "ointer_with_type_tag", 20) != 0)
3503 : break;
3504 22 : return ParsedAttr::AT_ArgumentWithTypeTag; // "clang::pointer_with_type_tag"
3505 : case 's': // 1 string to match.
3506 0 : if (memcmp(Name.data()+8, "wift_indirect_result", 20) != 0)
3507 : break;
3508 0 : return ParsedAttr::AT_SwiftIndirectResult; // "clang::swift_indirect_result"
3509 : case 't': // 1 string to match.
3510 14 : if (memcmp(Name.data()+8, "ype_tag_for_datatype", 20) != 0)
3511 : break;
3512 14 : return ParsedAttr::AT_TypeTagForDatatype; // "clang::type_tag_for_datatype"
3513 : case 'x': // 1 string to match.
3514 0 : if (memcmp(Name.data()+8, "ray_never_instrument", 20) != 0)
3515 : break;
3516 0 : return ParsedAttr::AT_XRayInstrument; // "clang::xray_never_instrument"
3517 : }
3518 : break;
3519 : case 29: // 4 strings to match.
3520 8 : if (memcmp(Name.data()+0, "clang::", 7) != 0)
3521 : break;
3522 : switch (Name[7]) {
3523 : default: break;
3524 : case 'a': // 1 string to match.
3525 0 : if (memcmp(Name.data()+8, "rgument_with_type_tag", 21) != 0)
3526 : break;
3527 0 : return ParsedAttr::AT_ArgumentWithTypeTag; // "clang::argument_with_type_tag"
3528 : case 'e': // 1 string to match.
3529 8 : if (memcmp(Name.data()+8, "xternal_source_symbol", 21) != 0)
3530 : break;
3531 8 : return ParsedAttr::AT_ExternalSourceSymbol; // "clang::external_source_symbol"
3532 : case 'o': // 1 string to match.
3533 0 : if (memcmp(Name.data()+8, "bjc_independent_class", 21) != 0)
3534 : break;
3535 0 : return ParsedAttr::AT_ObjCIndependentClass; // "clang::objc_independent_class"
3536 : case 'x': // 1 string to match.
3537 0 : if (memcmp(Name.data()+8, "ray_always_instrument", 21) != 0)
3538 : break;
3539 0 : return ParsedAttr::AT_XRayInstrument; // "clang::xray_always_instrument"
3540 : }
3541 : break;
3542 : case 30: // 3 strings to match.
3543 0 : if (memcmp(Name.data()+0, "clang::", 7) != 0)
3544 : break;
3545 : switch (Name[7]) {
3546 : default: break;
3547 : case 'c': // 1 string to match.
3548 0 : if (memcmp(Name.data()+8, "f_returns_not_retained", 22) != 0)
3549 : break;
3550 0 : return ParsedAttr::AT_CFReturnsNotRetained; // "clang::cf_returns_not_retained"
3551 : case 'n': // 2 strings to match.
3552 0 : if (memcmp(Name.data()+8, "s_returns_", 10) != 0)
3553 : break;
3554 : switch (Name[18]) {
3555 : default: break;
3556 : case 'a': // 1 string to match.
3557 0 : if (memcmp(Name.data()+19, "utoreleased", 11) != 0)
3558 : break;
3559 0 : return ParsedAttr::AT_NSReturnsAutoreleased; // "clang::ns_returns_autoreleased"
3560 : case 'n': // 1 string to match.
3561 0 : if (memcmp(Name.data()+19, "ot_retained", 11) != 0)
3562 : break;
3563 0 : return ParsedAttr::AT_NSReturnsNotRetained; // "clang::ns_returns_not_retained"
3564 : }
3565 : break;
3566 : }
3567 : break;
3568 : case 32: // 1 string to match.
3569 0 : if (memcmp(Name.data()+0, "clang::no_thread_safety_analysis", 32) != 0)
3570 : break;
3571 0 : return ParsedAttr::AT_NoThreadSafetyAnalysis; // "clang::no_thread_safety_analysis"
3572 : case 33: // 1 string to match.
3573 2 : if (memcmp(Name.data()+0, "clang::objc_returns_inner_pointer", 33) != 0)
3574 : break;
3575 2 : return ParsedAttr::AT_ObjCReturnsInnerPointer; // "clang::objc_returns_inner_pointer"
3576 : case 34: // 2 strings to match.
3577 0 : if (memcmp(Name.data()+0, "clang::objc_", 12) != 0)
3578 : break;
3579 : switch (Name[12]) {
3580 : default: break;
3581 : case 'd': // 1 string to match.
3582 0 : if (memcmp(Name.data()+13, "esignated_initializer", 21) != 0)
3583 : break;
3584 0 : return ParsedAttr::AT_ObjCDesignatedInitializer; // "clang::objc_designated_initializer"
3585 : case 's': // 1 string to match.
3586 0 : if (memcmp(Name.data()+13, "ubclassing_restricted", 21) != 0)
3587 : break;
3588 0 : return ParsedAttr::AT_ObjCSubclassingRestricted; // "clang::objc_subclassing_restricted"
3589 : }
3590 : break;
3591 : case 41: // 1 string to match.
3592 0 : if (memcmp(Name.data()+0, "clang::objc_requires_property_definitions", 41) != 0)
3593 : break;
3594 0 : return ParsedAttr::AT_ObjCRequiresPropertyDefs; // "clang::objc_requires_property_definitions"
3595 : case 42: // 2 strings to match.
3596 0 : if (memcmp(Name.data()+0, "clang::", 7) != 0)
3597 : break;
3598 : switch (Name[7]) {
3599 : default: break;
3600 : case 'e': // 1 string to match.
3601 0 : if (memcmp(Name.data()+8, "xclude_from_explicit_instantiation", 34) != 0)
3602 : break;
3603 0 : return ParsedAttr::AT_ExcludeFromExplicitInstantiation; // "clang::exclude_from_explicit_instantiation"
3604 : case 'o': // 1 string to match.
3605 0 : if (memcmp(Name.data()+8, "bjc_arc_weak_reference_unavailable", 34) != 0)
3606 : break;
3607 0 : return ParsedAttr::AT_ArcWeakrefUnavailable; // "clang::objc_arc_weak_reference_unavailable"
3608 : }
3609 : break;
3610 : case 53: // 1 string to match.
3611 2 : if (memcmp(Name.data()+0, "clang::objc_protocol_requires_explicit_implementation", 53) != 0)
3612 : break;
3613 2 : return ParsedAttr::AT_ObjCExplicitProtocolImpl; // "clang::objc_protocol_requires_explicit_implementation"
3614 : }
3615 120728 : } else if (ParsedAttr::AS_Keyword == Syntax || ParsedAttr::AS_ContextSensitiveKeyword == Syntax) {
3616 120505 : switch (Name.size()) {
3617 : default: break;
3618 671 : case 5: // 2 strings to match.
3619 : switch (Name[0]) {
3620 : default: break;
3621 : case '_': // 1 string to match.
3622 1 : if (memcmp(Name.data()+1, "_w64", 4) != 0)
3623 : break;
3624 1 : return ParsedAttr::IgnoredAttribute; // "__w64"
3625 : case 'l': // 1 string to match.
3626 670 : if (memcmp(Name.data()+1, "ocal", 4) != 0)
3627 : break;
3628 670 : return ParsedAttr::AT_OpenCLLocalAddressSpace; // "local"
3629 : }
3630 : break;
3631 1058 : case 6: // 5 strings to match.
3632 : switch (Name[0]) {
3633 : default: break;
3634 26 : case '_': // 3 strings to match.
3635 : switch (Name[1]) {
3636 : default: break;
3637 24 : case '_': // 2 strings to match.
3638 : switch (Name[2]) {
3639 : default: break;
3640 : case 's': // 1 string to match.
3641 16 : if (memcmp(Name.data()+3, "ptr", 3) != 0)
3642 : break;
3643 16 : return ParsedAttr::AT_SPtr; // "__sptr"
3644 : case 'u': // 1 string to match.
3645 8 : if (memcmp(Name.data()+3, "ptr", 3) != 0)
3646 : break;
3647 8 : return ParsedAttr::AT_UPtr; // "__uptr"
3648 : }
3649 : break;
3650 : case 'c': // 1 string to match.
3651 2 : if (memcmp(Name.data()+2, "decl", 4) != 0)
3652 : break;
3653 2 : return ParsedAttr::AT_CDecl; // "_cdecl"
3654 : }
3655 : break;
3656 : case 'g': // 1 string to match.
3657 520 : if (memcmp(Name.data()+1, "lobal", 5) != 0)
3658 : break;
3659 520 : return ParsedAttr::AT_OpenCLGlobalAddressSpace; // "global"
3660 : case 'k': // 1 string to match.
3661 512 : if (memcmp(Name.data()+1, "ernel", 5) != 0)
3662 : break;
3663 512 : return ParsedAttr::AT_OpenCLKernel; // "kernel"
3664 : }
3665 : break;
3666 94547 : case 7: // 8 strings to match.
3667 : switch (Name[0]) {
3668 : default: break;
3669 9170 : case '_': // 5 strings to match.
3670 : switch (Name[1]) {
3671 : default: break;
3672 9168 : case '_': // 4 strings to match.
3673 : switch (Name[2]) {
3674 : default: break;
3675 : case 'c': // 1 string to match.
3676 281 : if (memcmp(Name.data()+3, "decl", 4) != 0)
3677 : break;
3678 281 : return ParsedAttr::AT_CDecl; // "__cdecl"
3679 : case 'l': // 1 string to match.
3680 8857 : if (memcmp(Name.data()+3, "ocal", 4) != 0)
3681 : break;
3682 8857 : return ParsedAttr::AT_OpenCLLocalAddressSpace; // "__local"
3683 : case 'p': // 2 strings to match.
3684 30 : if (memcmp(Name.data()+3, "tr", 2) != 0)
3685 : break;
3686 : switch (Name[5]) {
3687 : default: break;
3688 22 : case '3': // 1 string to match.
3689 22 : if (Name[6] != '2')
3690 : break;
3691 22 : return ParsedAttr::AT_Ptr32; // "__ptr32"
3692 8 : case '6': // 1 string to match.
3693 8 : if (Name[6] != '4')
3694 : break;
3695 8 : return ParsedAttr::AT_Ptr64; // "__ptr64"
3696 : }
3697 : break;
3698 : }
3699 : break;
3700 : case 'p': // 1 string to match.
3701 2 : if (memcmp(Name.data()+2, "ascal", 5) != 0)
3702 : break;
3703 2 : return ParsedAttr::AT_Pascal; // "_pascal"
3704 : }
3705 : break;
3706 : case 'a': // 1 string to match.
3707 84741 : if (memcmp(Name.data()+1, "lignas", 6) != 0)
3708 : break;
3709 84741 : return ParsedAttr::AT_Aligned; // "alignas"
3710 : case 'g': // 1 string to match.
3711 256 : if (memcmp(Name.data()+1, "eneric", 6) != 0)
3712 : break;
3713 256 : return ParsedAttr::AT_OpenCLGenericAddressSpace; // "generic"
3714 : case 'p': // 1 string to match.
3715 380 : if (memcmp(Name.data()+1, "rivate", 6) != 0)
3716 : break;
3717 380 : return ParsedAttr::AT_OpenCLPrivateAddressSpace; // "private"
3718 : }
3719 : break;
3720 11890 : case 8: // 8 strings to match.
3721 : switch (Name[0]) {
3722 : default: break;
3723 11612 : case '_': // 7 strings to match.
3724 : switch (Name[1]) {
3725 : default: break;
3726 : case 'A': // 1 string to match.
3727 40 : if (memcmp(Name.data()+2, "lignas", 6) != 0)
3728 : break;
3729 40 : return ParsedAttr::AT_Aligned; // "_Alignas"
3730 : case 'N': // 1 string to match.
3731 1090 : if (memcmp(Name.data()+2, "onnull", 6) != 0)
3732 : break;
3733 1090 : return ParsedAttr::AT_TypeNonNull; // "_Nonnull"
3734 10480 : case '_': // 4 strings to match.
3735 : switch (Name[2]) {
3736 : default: break;
3737 : case 'g': // 1 string to match.
3738 10308 : if (memcmp(Name.data()+3, "lobal", 5) != 0)
3739 : break;
3740 10308 : return ParsedAttr::AT_OpenCLGlobalAddressSpace; // "__global"
3741 157 : case 'k': // 2 strings to match.
3742 : switch (Name[3]) {
3743 : default: break;
3744 : case 'e': // 1 string to match.
3745 82 : if (memcmp(Name.data()+4, "rnel", 4) != 0)
3746 : break;
3747 82 : return ParsedAttr::AT_OpenCLKernel; // "__kernel"
3748 : case 'i': // 1 string to match.
3749 75 : if (memcmp(Name.data()+4, "ndof", 4) != 0)
3750 : break;
3751 75 : return ParsedAttr::AT_ObjCKindOf; // "__kindof"
3752 : }
3753 : break;
3754 : case 'p': // 1 string to match.
3755 15 : if (memcmp(Name.data()+3, "ascal", 5) != 0)
3756 : break;
3757 15 : return ParsedAttr::AT_Pascal; // "__pascal"
3758 : }
3759 : break;
3760 : case 's': // 1 string to match.
3761 2 : if (memcmp(Name.data()+2, "tdcall", 6) != 0)
3762 : break;
3763 2 : return ParsedAttr::AT_StdCall; // "_stdcall"
3764 : }
3765 : break;
3766 : case 'c': // 1 string to match.
3767 278 : if (memcmp(Name.data()+1, "onstant", 7) != 0)
3768 : break;
3769 278 : return ParsedAttr::AT_OpenCLConstantAddressSpace; // "constant"
3770 : }
3771 : break;
3772 6599 : case 9: // 8 strings to match.
3773 : switch (Name[0]) {
3774 : default: break;
3775 3614 : case '_': // 7 strings to match.
3776 : switch (Name[1]) {
3777 : default: break;
3778 : case 'N': // 1 string to match.
3779 707 : if (memcmp(Name.data()+2, "ullable", 7) != 0)
3780 : break;
3781 707 : return ParsedAttr::AT_TypeNullable; // "_Nullable"
3782 2905 : case '_': // 4 strings to match.
3783 : switch (Name[2]) {
3784 : default: break;
3785 : case 'g': // 1 string to match.
3786 84 : if (memcmp(Name.data()+3, "eneric", 6) != 0)
3787 : break;
3788 84 : return ParsedAttr::AT_OpenCLGenericAddressSpace; // "__generic"
3789 : case 'p': // 1 string to match.
3790 2574 : if (memcmp(Name.data()+3, "rivate", 6) != 0)
3791 : break;
3792 2574 : return ParsedAttr::AT_OpenCLPrivateAddressSpace; // "__private"
3793 : case 'r': // 1 string to match.
3794 96 : if (memcmp(Name.data()+3, "egcall", 6) != 0)
3795 : break;
3796 96 : return ParsedAttr::AT_RegCall; // "__regcall"
3797 : case 's': // 1 string to match.
3798 151 : if (memcmp(Name.data()+3, "tdcall", 6) != 0)
3799 : break;
3800 151 : return ParsedAttr::AT_StdCall; // "__stdcall"
3801 : }
3802 : break;
3803 : case 'f': // 1 string to match.
3804 2 : if (memcmp(Name.data()+2, "astcall", 7) != 0)
3805 : break;
3806 2 : return ParsedAttr::AT_FastCall; // "_fastcall"
3807 : case 't': // 1 string to match.
3808 0 : if (memcmp(Name.data()+2, "hiscall", 7) != 0)
3809 : break;
3810 0 : return ParsedAttr::AT_ThisCall; // "_thiscall"
3811 : }
3812 : break;
3813 : case 'r': // 1 string to match.
3814 2985 : if (memcmp(Name.data()+1, "ead_only", 8) != 0)
3815 : break;
3816 2985 : return ParsedAttr::AT_OpenCLAccess; // "read_only"
3817 : }
3818 : break;
3819 5518 : case 10: // 5 strings to match.
3820 : switch (Name[0]) {
3821 : default: break;
3822 1609 : case '_': // 3 strings to match.
3823 1609 : if (Name[1] != '_')
3824 : break;
3825 : switch (Name[2]) {
3826 : default: break;
3827 : case 'c': // 1 string to match.
3828 1470 : if (memcmp(Name.data()+3, "onstant", 7) != 0)
3829 : break;
3830 1470 : return ParsedAttr::AT_OpenCLConstantAddressSpace; // "__constant"
3831 : case 'f': // 1 string to match.
3832 94 : if (memcmp(Name.data()+3, "astcall", 7) != 0)
3833 : break;
3834 94 : return ParsedAttr::AT_FastCall; // "__fastcall"
3835 : case 't': // 1 string to match.
3836 45 : if (memcmp(Name.data()+3, "hiscall", 7) != 0)
3837 : break;
3838 45 : return ParsedAttr::AT_ThisCall; // "__thiscall"
3839 : }
3840 : break;
3841 : case 'r': // 1 string to match.
3842 2246 : if (memcmp(Name.data()+1, "ead_write", 9) != 0)
3843 : break;
3844 2246 : return ParsedAttr::AT_OpenCLAccess; // "read_write"
3845 : case 'w': // 1 string to match.
3846 1663 : if (memcmp(Name.data()+1, "rite_only", 9) != 0)
3847 : break;
3848 1663 : return ParsedAttr::AT_OpenCLAccess; // "write_only"
3849 : }
3850 : break;
3851 5 : case 11: // 2 strings to match.
3852 5 : if (Name[0] != '_')
3853 : break;
3854 : switch (Name[1]) {
3855 : default: break;
3856 : case '_': // 1 string to match.
3857 5 : if (memcmp(Name.data()+2, "read_only", 9) != 0)
3858 : break;
3859 5 : return ParsedAttr::AT_OpenCLAccess; // "__read_only"
3860 : case 'v': // 1 string to match.
3861 0 : if (memcmp(Name.data()+2, "ectorcall", 9) != 0)
3862 : break;
3863 0 : return ParsedAttr::AT_VectorCall; // "_vectorcall"
3864 : }
3865 : break;
3866 : case 12: // 3 strings to match.
3867 113 : if (memcmp(Name.data()+0, "__", 2) != 0)
3868 : break;
3869 : switch (Name[2]) {
3870 : default: break;
3871 : case 'r': // 1 string to match.
3872 3 : if (memcmp(Name.data()+3, "ead_write", 9) != 0)
3873 : break;
3874 3 : return ParsedAttr::AT_OpenCLAccess; // "__read_write"
3875 : case 'v': // 1 string to match.
3876 105 : if (memcmp(Name.data()+3, "ectorcall", 9) != 0)
3877 : break;
3878 105 : return ParsedAttr::AT_VectorCall; // "__vectorcall"
3879 : case 'w': // 1 string to match.
3880 5 : if (memcmp(Name.data()+3, "rite_only", 9) != 0)
3881 : break;
3882 5 : return ParsedAttr::AT_OpenCLAccess; // "__write_only"
3883 : }
3884 : break;
3885 : case 13: // 1 string to match.
3886 14 : if (memcmp(Name.data()+0, "__forceinline", 13) != 0)
3887 : break;
3888 14 : return ParsedAttr::AT_AlwaysInline; // "__forceinline"
3889 : case 17: // 1 string to match.
3890 32 : if (memcmp(Name.data()+0, "_Null_unspecified", 17) != 0)
3891 : break;
3892 32 : return ParsedAttr::AT_TypeNullUnspecified; // "_Null_unspecified"
3893 : case 19: // 1 string to match.
3894 0 : if (memcmp(Name.data()+0, "__unsafe_unretained", 19) != 0)
3895 : break;
3896 0 : return ParsedAttr::AT_ObjCInertUnsafeUnretained; // "__unsafe_unretained"
3897 : case 20: // 1 string to match.
3898 25 : if (memcmp(Name.data()+0, "__single_inheritance", 20) != 0)
3899 : break;
3900 25 : return ParsedAttr::AT_MSInheritance; // "__single_inheritance"
3901 : case 21: // 1 string to match.
3902 13 : if (memcmp(Name.data()+0, "__virtual_inheritance", 21) != 0)
3903 : break;
3904 13 : return ParsedAttr::AT_MSInheritance; // "__virtual_inheritance"
3905 : case 22: // 1 string to match.
3906 20 : if (memcmp(Name.data()+0, "__multiple_inheritance", 22) != 0)
3907 : break;
3908 20 : return ParsedAttr::AT_MSInheritance; // "__multiple_inheritance"
3909 : case 25: // 1 string to match.
3910 0 : if (memcmp(Name.data()+0, "__unspecified_inheritance", 25) != 0)
3911 : break;
3912 0 : return ParsedAttr::AT_MSInheritance; // "__unspecified_inheritance"
3913 : }
3914 223 : } else if (ParsedAttr::AS_Pragma == Syntax) {
3915 223 : switch (Name.size()) {
3916 : default: break;
3917 : case 4: // 1 string to match.
3918 168 : if (memcmp(Name.data()+0, "loop", 4) != 0)
3919 : break;
3920 168 : return ParsedAttr::AT_LoopHint; // "loop"
3921 : case 6: // 1 string to match.
3922 32 : if (memcmp(Name.data()+0, "unroll", 6) != 0)
3923 : break;
3924 32 : return ParsedAttr::AT_LoopHint; // "unroll"
3925 : case 8: // 1 string to match.
3926 8 : if (memcmp(Name.data()+0, "nounroll", 8) != 0)
3927 : break;
3928 8 : return ParsedAttr::AT_LoopHint; // "nounroll"
3929 : case 14: // 1 string to match.
3930 9 : if (memcmp(Name.data()+0, "unroll_and_jam", 14) != 0)
3931 : break;
3932 9 : return ParsedAttr::AT_LoopHint; // "unroll_and_jam"
3933 : case 16: // 1 string to match.
3934 6 : if (memcmp(Name.data()+0, "nounroll_and_jam", 16) != 0)
3935 : break;
3936 6 : return ParsedAttr::AT_LoopHint; // "nounroll_and_jam"
3937 : }
3938 : }
3939 : return ParsedAttr::UnknownAttribute;
3940 : }
|