1/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
2|* *|
3|* Attribute name matcher *|
4|* *|
5|* Automatically generated file, do not edit! *|
6|* From: Attr.td *|
7|* *|
8\*===----------------------------------------------------------------------===*/
9
10static AttributeCommonInfo::Kind getAttrKind(StringRef Name, AttributeCommonInfo::Syntax Syntax) {
11 if (AttributeCommonInfo::AS_GNU == Syntax) {
12 switch (Name.size()) {
13 default: break;
14 case 3: // 3 strings to match.
15 switch (Name[0]) {
16 default: break;
17 case 'f': // 1 string to match.
18 if (memcmp(s1: Name.data()+1, s2: "ar", n: 2) != 0)
19 break;
20 return AttributeCommonInfo::AT_MipsLongCall; // "far"
21 case 'h': // 1 string to match.
22 if (memcmp(s1: Name.data()+1, s2: "ot", n: 2) != 0)
23 break;
24 return AttributeCommonInfo::AT_Hot; // "hot"
25 case 'p': // 1 string to match.
26 if (memcmp(s1: Name.data()+1, s2: "cs", n: 2) != 0)
27 break;
28 return AttributeCommonInfo::AT_Pcs; // "pcs"
29 }
30 break;
31 case 4: // 8 strings to match.
32 switch (Name[0]) {
33 default: break;
34 case 'c': // 1 string to match.
35 if (memcmp(s1: Name.data()+1, s2: "old", n: 3) != 0)
36 break;
37 return AttributeCommonInfo::AT_Cold; // "cold"
38 case 'h': // 1 string to match.
39 if (memcmp(s1: Name.data()+1, s2: "ost", n: 3) != 0)
40 break;
41 return AttributeCommonInfo::AT_CUDAHost; // "host"
42 case 'l': // 1 string to match.
43 if (memcmp(s1: Name.data()+1, s2: "eaf", n: 3) != 0)
44 break;
45 return AttributeCommonInfo::AT_Leaf; // "leaf"
46 case 'm': // 1 string to match.
47 if (memcmp(s1: Name.data()+1, s2: "ode", n: 3) != 0)
48 break;
49 return AttributeCommonInfo::AT_Mode; // "mode"
50 case 'n': // 1 string to match.
51 if (memcmp(s1: Name.data()+1, s2: "ear", n: 3) != 0)
52 break;
53 return AttributeCommonInfo::AT_MipsShortCall; // "near"
54 case 'p': // 1 string to match.
55 if (memcmp(s1: Name.data()+1, s2: "ure", n: 3) != 0)
56 break;
57 return AttributeCommonInfo::AT_Pure; // "pure"
58 case 'u': // 1 string to match.
59 if (memcmp(s1: Name.data()+1, s2: "sed", n: 3) != 0)
60 break;
61 return AttributeCommonInfo::AT_Used; // "used"
62 case 'w': // 1 string to match.
63 if (memcmp(s1: Name.data()+1, s2: "eak", n: 3) != 0)
64 break;
65 return AttributeCommonInfo::AT_Weak; // "weak"
66 }
67 break;
68 case 5: // 9 strings to match.
69 switch (Name[0]) {
70 default: break;
71 case 'a': // 1 string to match.
72 if (memcmp(s1: Name.data()+1, s2: "lias", n: 4) != 0)
73 break;
74 return AttributeCommonInfo::AT_Alias; // "alias"
75 case 'c': // 2 strings to match.
76 switch (Name[1]) {
77 default: break;
78 case 'd': // 1 string to match.
79 if (memcmp(s1: Name.data()+2, s2: "ecl", n: 3) != 0)
80 break;
81 return AttributeCommonInfo::AT_CDecl; // "cdecl"
82 case 'o': // 1 string to match.
83 if (memcmp(s1: Name.data()+2, s2: "nst", n: 3) != 0)
84 break;
85 return AttributeCommonInfo::AT_Const; // "const"
86 }
87 break;
88 case 'e': // 1 string to match.
89 if (memcmp(s1: Name.data()+1, s2: "rror", n: 4) != 0)
90 break;
91 return AttributeCommonInfo::AT_Error; // "error"
92 case 'g': // 1 string to match.
93 if (memcmp(s1: Name.data()+1, s2: "uard", n: 4) != 0)
94 break;
95 return AttributeCommonInfo::AT_CFGuard; // "guard"
96 case 'i': // 1 string to match.
97 if (memcmp(s1: Name.data()+1, s2: "func", n: 4) != 0)
98 break;
99 return AttributeCommonInfo::AT_IFunc; // "ifunc"
100 case 'm': // 1 string to match.
101 if (memcmp(s1: Name.data()+1, s2: "odel", n: 4) != 0)
102 break;
103 return AttributeCommonInfo::AT_CodeModel; // "model"
104 case 'n': // 2 strings to match.
105 switch (Name[1]) {
106 default: break;
107 case 'a': // 1 string to match.
108 if (memcmp(s1: Name.data()+2, s2: "ked", n: 3) != 0)
109 break;
110 return AttributeCommonInfo::AT_Naked; // "naked"
111 case 'o': // 1 string to match.
112 if (memcmp(s1: Name.data()+2, s2: "svm", n: 3) != 0)
113 break;
114 return AttributeCommonInfo::AT_OpenCLNoSVM; // "nosvm"
115 }
116 break;
117 }
118 break;
119 case 6: // 17 strings to match.
120 switch (Name[0]) {
121 default: break;
122 case 'a': // 1 string to match.
123 if (memcmp(s1: Name.data()+1, s2: "ssume", n: 5) != 0)
124 break;
125 return AttributeCommonInfo::AT_CXXAssume; // "assume"
126 case 'b': // 1 string to match.
127 if (memcmp(s1: Name.data()+1, s2: "locks", n: 5) != 0)
128 break;
129 return AttributeCommonInfo::AT_Blocks; // "blocks"
130 case 'c': // 1 string to match.
131 if (memcmp(s1: Name.data()+1, s2: "ommon", n: 5) != 0)
132 break;
133 return AttributeCommonInfo::AT_Common; // "common"
134 case 'd': // 1 string to match.
135 if (memcmp(s1: Name.data()+1, s2: "evice", n: 5) != 0)
136 break;
137 return AttributeCommonInfo::AT_CUDADevice; // "device"
138 case 'f': // 1 string to match.
139 if (memcmp(s1: Name.data()+1, s2: "ormat", n: 5) != 0)
140 break;
141 return AttributeCommonInfo::AT_Format; // "format"
142 case 'g': // 1 string to match.
143 if (memcmp(s1: Name.data()+1, s2: "lobal", n: 5) != 0)
144 break;
145 return AttributeCommonInfo::AT_CUDAGlobal; // "global"
146 case 'k': // 1 string to match.
147 if (memcmp(s1: Name.data()+1, s2: "ernel", n: 5) != 0)
148 break;
149 return AttributeCommonInfo::AT_RenderScriptKernel; // "kernel"
150 case 'm': // 3 strings to match.
151 switch (Name[1]) {
152 default: break;
153 case 'a': // 1 string to match.
154 if (memcmp(s1: Name.data()+2, s2: "lloc", n: 4) != 0)
155 break;
156 return AttributeCommonInfo::AT_Restrict; // "malloc"
157 case 'i': // 1 string to match.
158 if (memcmp(s1: Name.data()+2, s2: "ps16", n: 4) != 0)
159 break;
160 return AttributeCommonInfo::AT_Mips16; // "mips16"
161 case 's': // 1 string to match.
162 if (memcmp(s1: Name.data()+2, s2: "_abi", n: 4) != 0)
163 break;
164 return AttributeCommonInfo::AT_MSABI; // "ms_abi"
165 }
166 break;
167 case 'p': // 2 strings to match.
168 if (Name[1] != 'a')
169 break;
170 switch (Name[2]) {
171 default: break;
172 case 'c': // 1 string to match.
173 if (memcmp(s1: Name.data()+3, s2: "ked", n: 3) != 0)
174 break;
175 return AttributeCommonInfo::AT_Packed; // "packed"
176 case 's': // 1 string to match.
177 if (memcmp(s1: Name.data()+3, s2: "cal", n: 3) != 0)
178 break;
179 return AttributeCommonInfo::AT_Pascal; // "pascal"
180 }
181 break;
182 case 'r': // 1 string to match.
183 if (memcmp(s1: Name.data()+1, s2: "etain", n: 5) != 0)
184 break;
185 return AttributeCommonInfo::AT_Retain; // "retain"
186 case 's': // 2 strings to match.
187 switch (Name[1]) {
188 default: break;
189 case 'h': // 1 string to match.
190 if (memcmp(s1: Name.data()+2, s2: "ared", n: 4) != 0)
191 break;
192 return AttributeCommonInfo::AT_CUDAShared; // "shared"
193 case 'i': // 1 string to match.
194 if (memcmp(s1: Name.data()+2, s2: "gnal", n: 4) != 0)
195 break;
196 return AttributeCommonInfo::AT_AVRSignal; // "signal"
197 }
198 break;
199 case 't': // 1 string to match.
200 if (memcmp(s1: Name.data()+1, s2: "arget", n: 5) != 0)
201 break;
202 return AttributeCommonInfo::AT_Target; // "target"
203 case 'u': // 1 string to match.
204 if (memcmp(s1: Name.data()+1, s2: "nused", n: 5) != 0)
205 break;
206 return AttributeCommonInfo::AT_Unused; // "unused"
207 }
208 break;
209 case 7: // 22 strings to match.
210 switch (Name[0]) {
211 default: break;
212 case '_': // 1 string to match.
213 if (memcmp(s1: Name.data()+1, s2: "_const", n: 6) != 0)
214 break;
215 return AttributeCommonInfo::AT_Const; // "__const"
216 case 'a': // 2 strings to match.
217 switch (Name[1]) {
218 default: break;
219 case 'b': // 1 string to match.
220 if (memcmp(s1: Name.data()+2, s2: "i_tag", n: 5) != 0)
221 break;
222 return AttributeCommonInfo::AT_AbiTag; // "abi_tag"
223 case 'l': // 1 string to match.
224 if (memcmp(s1: Name.data()+2, s2: "igned", n: 5) != 0)
225 break;
226 return AttributeCommonInfo::AT_Aligned; // "aligned"
227 }
228 break;
229 case 'b': // 1 string to match.
230 if (memcmp(s1: Name.data()+1, s2: "ounded", n: 6) != 0)
231 break;
232 return AttributeCommonInfo::IgnoredAttribute; // "bounded"
233 case 'c': // 1 string to match.
234 if (memcmp(s1: Name.data()+1, s2: "leanup", n: 6) != 0)
235 break;
236 return AttributeCommonInfo::AT_Cleanup; // "cleanup"
237 case 'f': // 1 string to match.
238 if (memcmp(s1: Name.data()+1, s2: "latten", n: 6) != 0)
239 break;
240 return AttributeCommonInfo::AT_Flatten; // "flatten"
241 case 'm': // 2 strings to match.
242 switch (Name[1]) {
243 default: break;
244 case 'a': // 1 string to match.
245 if (memcmp(s1: Name.data()+2, s2: "naged", n: 5) != 0)
246 break;
247 return AttributeCommonInfo::AT_HIPManaged; // "managed"
248 case 'i': // 1 string to match.
249 if (memcmp(s1: Name.data()+2, s2: "nsize", n: 5) != 0)
250 break;
251 return AttributeCommonInfo::AT_MinSize; // "minsize"
252 }
253 break;
254 case 'n': // 6 strings to match.
255 switch (Name[1]) {
256 default: break;
257 case 'o': // 5 strings to match.
258 switch (Name[2]) {
259 default: break;
260 case 'd': // 2 strings to match.
261 if (Name[3] != 'e')
262 break;
263 switch (Name[4]) {
264 default: break;
265 case 'b': // 1 string to match.
266 if (memcmp(s1: Name.data()+5, s2: "ug", n: 2) != 0)
267 break;
268 return AttributeCommonInfo::AT_NoDebug; // "nodebug"
269 case 'r': // 1 string to match.
270 if (memcmp(s1: Name.data()+5, s2: "ef", n: 2) != 0)
271 break;
272 return AttributeCommonInfo::AT_NoDeref; // "noderef"
273 }
274 break;
275 case 'm': // 1 string to match.
276 if (memcmp(s1: Name.data()+3, s2: "erge", n: 4) != 0)
277 break;
278 return AttributeCommonInfo::AT_NoMerge; // "nomerge"
279 case 'n': // 1 string to match.
280 if (memcmp(s1: Name.data()+3, s2: "null", n: 4) != 0)
281 break;
282 return AttributeCommonInfo::AT_NonNull; // "nonnull"
283 case 't': // 1 string to match.
284 if (memcmp(s1: Name.data()+3, s2: "hrow", n: 4) != 0)
285 break;
286 return AttributeCommonInfo::AT_NoThrow; // "nothrow"
287 }
288 break;
289 case 'v': // 1 string to match.
290 if (memcmp(s1: Name.data()+2, s2: "_weak", n: 5) != 0)
291 break;
292 return AttributeCommonInfo::IgnoredAttribute; // "nv_weak"
293 }
294 break;
295 case 'o': // 2 strings to match.
296 switch (Name[1]) {
297 default: break;
298 case 'b': // 1 string to match.
299 if (memcmp(s1: Name.data()+2, s2: "jc_gc", n: 5) != 0)
300 break;
301 return AttributeCommonInfo::AT_ObjCGC; // "objc_gc"
302 case 'p': // 1 string to match.
303 if (memcmp(s1: Name.data()+2, s2: "tnone", n: 5) != 0)
304 break;
305 return AttributeCommonInfo::AT_OptimizeNone; // "optnone"
306 }
307 break;
308 case 'r': // 2 strings to match.
309 if (memcmp(s1: Name.data()+1, s2: "eg", n: 2) != 0)
310 break;
311 switch (Name[3]) {
312 default: break;
313 case 'c': // 1 string to match.
314 if (memcmp(s1: Name.data()+4, s2: "all", n: 3) != 0)
315 break;
316 return AttributeCommonInfo::AT_RegCall; // "regcall"
317 case 'p': // 1 string to match.
318 if (memcmp(s1: Name.data()+4, s2: "arm", n: 3) != 0)
319 break;
320 return AttributeCommonInfo::AT_Regparm; // "regparm"
321 }
322 break;
323 case 's': // 2 strings to match.
324 switch (Name[1]) {
325 default: break;
326 case 'e': // 1 string to match.
327 if (memcmp(s1: Name.data()+2, s2: "ction", n: 5) != 0)
328 break;
329 return AttributeCommonInfo::AT_Section; // "section"
330 case 't': // 1 string to match.
331 if (memcmp(s1: Name.data()+2, s2: "dcall", n: 5) != 0)
332 break;
333 return AttributeCommonInfo::AT_StdCall; // "stdcall"
334 }
335 break;
336 case 'w': // 2 strings to match.
337 switch (Name[1]) {
338 default: break;
339 case 'a': // 1 string to match.
340 if (memcmp(s1: Name.data()+2, s2: "rning", n: 5) != 0)
341 break;
342 return AttributeCommonInfo::AT_Error; // "warning"
343 case 'e': // 1 string to match.
344 if (memcmp(s1: Name.data()+2, s2: "akref", n: 5) != 0)
345 break;
346 return AttributeCommonInfo::AT_WeakRef; // "weakref"
347 }
348 break;
349 }
350 break;
351 case 8: // 21 strings to match.
352 switch (Name[0]) {
353 default: break;
354 case 'N': // 1 string to match.
355 if (memcmp(s1: Name.data()+1, s2: "SObject", n: 7) != 0)
356 break;
357 return AttributeCommonInfo::AT_ObjCNSObject; // "NSObject"
358 case 'a': // 1 string to match.
359 if (memcmp(s1: Name.data()+1, s2: "nnotate", n: 7) != 0)
360 break;
361 return AttributeCommonInfo::AT_Annotate; // "annotate"
362 case 'b': // 1 string to match.
363 if (memcmp(s1: Name.data()+1, s2: "locking", n: 7) != 0)
364 break;
365 return AttributeCommonInfo::AT_Blocking; // "blocking"
366 case 'c': // 2 strings to match.
367 switch (Name[1]) {
368 default: break;
369 case 'a': // 1 string to match.
370 if (memcmp(s1: Name.data()+2, s2: "llback", n: 6) != 0)
371 break;
372 return AttributeCommonInfo::AT_Callback; // "callback"
373 case 'o': // 1 string to match.
374 if (memcmp(s1: Name.data()+2, s2: "nstant", n: 6) != 0)
375 break;
376 return AttributeCommonInfo::AT_CUDAConstant; // "constant"
377 }
378 break;
379 case 'f': // 1 string to match.
380 if (memcmp(s1: Name.data()+1, s2: "astcall", n: 7) != 0)
381 break;
382 return AttributeCommonInfo::AT_FastCall; // "fastcall"
383 case 'i': // 2 strings to match.
384 if (Name[1] != 'b')
385 break;
386 switch (Name[2]) {
387 default: break;
388 case 'a': // 1 string to match.
389 if (memcmp(s1: Name.data()+3, s2: "ction", n: 5) != 0)
390 break;
391 return AttributeCommonInfo::AT_IBAction; // "ibaction"
392 case 'o': // 1 string to match.
393 if (memcmp(s1: Name.data()+3, s2: "utlet", n: 5) != 0)
394 break;
395 return AttributeCommonInfo::AT_IBOutlet; // "iboutlet"
396 }
397 break;
398 case 'l': // 1 string to match.
399 if (memcmp(s1: Name.data()+1, s2: "ockable", n: 7) != 0)
400 break;
401 return AttributeCommonInfo::AT_Lockable; // "lockable"
402 case 'm': // 2 strings to match.
403 switch (Name[1]) {
404 default: break;
405 case '6': // 1 string to match.
406 if (memcmp(s1: Name.data()+2, s2: "8k_rtd", n: 6) != 0)
407 break;
408 return AttributeCommonInfo::AT_M68kRTD; // "m68k_rtd"
409 case 'u': // 1 string to match.
410 if (memcmp(s1: Name.data()+2, s2: "sttail", n: 6) != 0)
411 break;
412 return AttributeCommonInfo::AT_MustTail; // "musttail"
413 }
414 break;
415 case 'n': // 5 strings to match.
416 if (Name[1] != 'o')
417 break;
418 switch (Name[2]) {
419 default: break;
420 case 'c': // 1 string to match.
421 if (memcmp(s1: Name.data()+3, s2: "ommon", n: 5) != 0)
422 break;
423 return AttributeCommonInfo::AT_NoCommon; // "nocommon"
424 case 'e': // 1 string to match.
425 if (memcmp(s1: Name.data()+3, s2: "scape", n: 5) != 0)
426 break;
427 return AttributeCommonInfo::AT_NoEscape; // "noescape"
428 case 'i': // 1 string to match.
429 if (memcmp(s1: Name.data()+3, s2: "nline", n: 5) != 0)
430 break;
431 return AttributeCommonInfo::AT_NoInline; // "noinline"
432 case 'm': // 1 string to match.
433 if (memcmp(s1: Name.data()+3, s2: "ips16", n: 5) != 0)
434 break;
435 return AttributeCommonInfo::AT_NoMips16; // "nomips16"
436 case 'r': // 1 string to match.
437 if (memcmp(s1: Name.data()+3, s2: "eturn", n: 5) != 0)
438 break;
439 return AttributeCommonInfo::AT_NoReturn; // "noreturn"
440 }
441 break;
442 case 's': // 4 strings to match.
443 switch (Name[1]) {
444 default: break;
445 case 'e': // 1 string to match.
446 if (memcmp(s1: Name.data()+2, s2: "ntinel", n: 6) != 0)
447 break;
448 return AttributeCommonInfo::AT_Sentinel; // "sentinel"
449 case 'i': // 1 string to match.
450 if (memcmp(s1: Name.data()+2, s2: "zed_by", n: 6) != 0)
451 break;
452 return AttributeCommonInfo::AT_SizedBy; // "sized_by"
453 case 'u': // 1 string to match.
454 if (memcmp(s1: Name.data()+2, s2: "ppress", n: 6) != 0)
455 break;
456 return AttributeCommonInfo::AT_Suppress; // "suppress"
457 case 'y': // 1 string to match.
458 if (memcmp(s1: Name.data()+2, s2: "sv_abi", n: 6) != 0)
459 break;
460 return AttributeCommonInfo::AT_SysVABI; // "sysv_abi"
461 }
462 break;
463 case 't': // 1 string to match.
464 if (memcmp(s1: Name.data()+1, s2: "hiscall", n: 7) != 0)
465 break;
466 return AttributeCommonInfo::AT_ThisCall; // "thiscall"
467 }
468 break;
469 case 9: // 14 strings to match.
470 switch (Name[0]) {
471 default: break;
472 case 'd': // 2 strings to match.
473 if (memcmp(s1: Name.data()+1, s2: "ll", n: 2) != 0)
474 break;
475 switch (Name[3]) {
476 default: break;
477 case 'e': // 1 string to match.
478 if (memcmp(s1: Name.data()+4, s2: "xport", n: 5) != 0)
479 break;
480 return AttributeCommonInfo::AT_DLLExport; // "dllexport"
481 case 'i': // 1 string to match.
482 if (memcmp(s1: Name.data()+4, s2: "mport", n: 5) != 0)
483 break;
484 return AttributeCommonInfo::AT_DLLImport; // "dllimport"
485 }
486 break;
487 case 'e': // 1 string to match.
488 if (memcmp(s1: Name.data()+1, s2: "nable_if", n: 8) != 0)
489 break;
490 return AttributeCommonInfo::AT_EnableIf; // "enable_if"
491 case 'f': // 1 string to match.
492 if (memcmp(s1: Name.data()+1, s2: "lag_enum", n: 8) != 0)
493 break;
494 return AttributeCommonInfo::AT_FlagEnum; // "flag_enum"
495 case 'i': // 1 string to match.
496 if (memcmp(s1: Name.data()+1, s2: "nterrupt", n: 8) != 0)
497 break;
498 return AttributeCommonInfo::AT_Interrupt; // "interrupt"
499 case 'l': // 1 string to match.
500 if (memcmp(s1: Name.data()+1, s2: "ong_call", n: 8) != 0)
501 break;
502 return AttributeCommonInfo::AT_MipsLongCall; // "long_call"
503 case 'm': // 3 strings to match.
504 switch (Name[1]) {
505 default: break;
506 case 'a': // 1 string to match.
507 if (memcmp(s1: Name.data()+2, s2: "y_alias", n: 7) != 0)
508 break;
509 return AttributeCommonInfo::AT_MayAlias; // "may_alias"
510 case 'i': // 1 string to match.
511 if (memcmp(s1: Name.data()+2, s2: "cromips", n: 7) != 0)
512 break;
513 return AttributeCommonInfo::AT_MicroMips; // "micromips"
514 case 's': // 1 string to match.
515 if (memcmp(s1: Name.data()+2, s2: "_struct", n: 7) != 0)
516 break;
517 return AttributeCommonInfo::AT_MSStruct; // "ms_struct"
518 }
519 break;
520 case 'n': // 1 string to match.
521 if (memcmp(s1: Name.data()+1, s2: "ouwtable", n: 8) != 0)
522 break;
523 return AttributeCommonInfo::AT_NoUwtable; // "nouwtable"
524 case 's': // 2 strings to match.
525 switch (Name[1]) {
526 default: break;
527 case 'e': // 1 string to match.
528 if (memcmp(s1: Name.data()+2, s2: "lectany", n: 7) != 0)
529 break;
530 return AttributeCommonInfo::AT_SelectAny; // "selectany"
531 case 'w': // 1 string to match.
532 if (memcmp(s1: Name.data()+2, s2: "iftcall", n: 7) != 0)
533 break;
534 return AttributeCommonInfo::AT_SwiftCall; // "swiftcall"
535 }
536 break;
537 case 't': // 1 string to match.
538 if (memcmp(s1: Name.data()+1, s2: "ls_model", n: 8) != 0)
539 break;
540 return AttributeCommonInfo::AT_TLSModel; // "tls_model"
541 case 'v': // 1 string to match.
542 if (memcmp(s1: Name.data()+1, s2: "ecreturn", n: 8) != 0)
543 break;
544 return AttributeCommonInfo::AT_VecReturn; // "vecreturn"
545 }
546 break;
547 case 10: // 22 strings to match.
548 switch (Name[0]) {
549 default: break;
550 case 'a': // 3 strings to match.
551 switch (Name[1]) {
552 default: break;
553 case 'l': // 2 strings to match.
554 if (memcmp(s1: Name.data()+2, s2: "loc", n: 3) != 0)
555 break;
556 switch (Name[5]) {
557 default: break;
558 case '_': // 1 string to match.
559 if (memcmp(s1: Name.data()+6, s2: "size", n: 4) != 0)
560 break;
561 return AttributeCommonInfo::AT_AllocSize; // "alloc_size"
562 case 'a': // 1 string to match.
563 if (memcmp(s1: Name.data()+6, s2: "ting", n: 4) != 0)
564 break;
565 return AttributeCommonInfo::AT_Allocating; // "allocating"
566 }
567 break;
568 case 'r': // 1 string to match.
569 if (memcmp(s1: Name.data()+2, s2: "tificial", n: 8) != 0)
570 break;
571 return AttributeCommonInfo::AT_Artificial; // "artificial"
572 }
573 break;
574 case 'c': // 5 strings to match.
575 switch (Name[1]) {
576 default: break;
577 case 'a': // 1 string to match.
578 if (memcmp(s1: Name.data()+2, s2: "pability", n: 8) != 0)
579 break;
580 return AttributeCommonInfo::AT_Capability; // "capability"
581 case 'o': // 4 strings to match.
582 switch (Name[2]) {
583 default: break;
584 case 'd': // 1 string to match.
585 if (memcmp(s1: Name.data()+3, s2: "e_align", n: 7) != 0)
586 break;
587 return AttributeCommonInfo::AT_CodeAlign; // "code_align"
588 case 'n': // 2 strings to match.
589 switch (Name[3]) {
590 default: break;
591 case 's': // 1 string to match.
592 if (memcmp(s1: Name.data()+4, s2: "umable", n: 6) != 0)
593 break;
594 return AttributeCommonInfo::AT_Consumable; // "consumable"
595 case 'v': // 1 string to match.
596 if (memcmp(s1: Name.data()+4, s2: "ergent", n: 6) != 0)
597 break;
598 return AttributeCommonInfo::AT_Convergent; // "convergent"
599 }
600 break;
601 case 'u': // 1 string to match.
602 if (memcmp(s1: Name.data()+3, s2: "nted_by", n: 7) != 0)
603 break;
604 return AttributeCommonInfo::AT_CountedBy; // "counted_by"
605 }
606 break;
607 }
608 break;
609 case 'd': // 2 strings to match.
610 if (Name[1] != 'e')
611 break;
612 switch (Name[2]) {
613 default: break;
614 case 'p': // 1 string to match.
615 if (memcmp(s1: Name.data()+3, s2: "recated", n: 7) != 0)
616 break;
617 return AttributeCommonInfo::AT_Deprecated; // "deprecated"
618 case 's': // 1 string to match.
619 if (memcmp(s1: Name.data()+3, s2: "tructor", n: 7) != 0)
620 break;
621 return AttributeCommonInfo::AT_Destructor; // "destructor"
622 }
623 break;
624 case 'f': // 1 string to match.
625 if (memcmp(s1: Name.data()+1, s2: "ormat_arg", n: 9) != 0)
626 break;
627 return AttributeCommonInfo::AT_FormatArg; // "format_arg"
628 case 'g': // 2 strings to match.
629 switch (Name[1]) {
630 default: break;
631 case 'n': // 1 string to match.
632 if (memcmp(s1: Name.data()+2, s2: "u_inline", n: 8) != 0)
633 break;
634 return AttributeCommonInfo::AT_GNUInline; // "gnu_inline"
635 case 'u': // 1 string to match.
636 if (memcmp(s1: Name.data()+2, s2: "arded_by", n: 8) != 0)
637 break;
638 return AttributeCommonInfo::AT_GuardedBy; // "guarded_by"
639 }
640 break;
641 case 'n': // 3 strings to match.
642 if (Name[1] != 'o')
643 break;
644 switch (Name[2]) {
645 default: break;
646 case '_': // 2 strings to match.
647 switch (Name[3]) {
648 default: break;
649 case 'b': // 1 string to match.
650 if (memcmp(s1: Name.data()+4, s2: "uiltin", n: 6) != 0)
651 break;
652 return AttributeCommonInfo::AT_NoBuiltin; // "no_builtin"
653 case 'd': // 1 string to match.
654 if (memcmp(s1: Name.data()+4, s2: "estroy", n: 6) != 0)
655 break;
656 return AttributeCommonInfo::AT_NoDestroy; // "no_destroy"
657 }
658 break;
659 case 'c': // 1 string to match.
660 if (memcmp(s1: Name.data()+3, s2: "f_check", n: 7) != 0)
661 break;
662 return AttributeCommonInfo::AT_AnyX86NoCfCheck; // "nocf_check"
663 }
664 break;
665 case 's': // 3 strings to match.
666 switch (Name[1]) {
667 default: break;
668 case 'h': // 1 string to match.
669 if (memcmp(s1: Name.data()+2, s2: "ort_call", n: 8) != 0)
670 break;
671 return AttributeCommonInfo::AT_MipsShortCall; // "short_call"
672 case 'w': // 2 strings to match.
673 if (memcmp(s1: Name.data()+2, s2: "ift_", n: 4) != 0)
674 break;
675 switch (Name[6]) {
676 default: break;
677 case 'a': // 1 string to match.
678 if (memcmp(s1: Name.data()+7, s2: "ttr", n: 3) != 0)
679 break;
680 return AttributeCommonInfo::AT_SwiftAttr; // "swift_attr"
681 case 'n': // 1 string to match.
682 if (memcmp(s1: Name.data()+7, s2: "ame", n: 3) != 0)
683 break;
684 return AttributeCommonInfo::AT_SwiftName; // "swift_name"
685 }
686 break;
687 }
688 break;
689 case 'u': // 1 string to match.
690 if (memcmp(s1: Name.data()+1, s2: "se_handle", n: 9) != 0)
691 break;
692 return AttributeCommonInfo::AT_UseHandle; // "use_handle"
693 case 'v': // 2 strings to match.
694 switch (Name[1]) {
695 default: break;
696 case 'e': // 1 string to match.
697 if (memcmp(s1: Name.data()+2, s2: "ctorcall", n: 8) != 0)
698 break;
699 return AttributeCommonInfo::AT_VectorCall; // "vectorcall"
700 case 'i': // 1 string to match.
701 if (memcmp(s1: Name.data()+2, s2: "sibility", n: 8) != 0)
702 break;
703 return AttributeCommonInfo::AT_Visibility; // "visibility"
704 }
705 break;
706 }
707 break;
708 case 11: // 29 strings to match.
709 switch (Name[0]) {
710 default: break;
711 case 'a': // 2 strings to match.
712 if (Name[1] != 'l')
713 break;
714 switch (Name[2]) {
715 default: break;
716 case 'i': // 1 string to match.
717 if (memcmp(s1: Name.data()+3, s2: "gn_value", n: 8) != 0)
718 break;
719 return AttributeCommonInfo::AT_AlignValue; // "align_value"
720 case 'l': // 1 string to match.
721 if (memcmp(s1: Name.data()+3, s2: "oc_align", n: 8) != 0)
722 break;
723 return AttributeCommonInfo::AT_AllocAlign; // "alloc_align"
724 }
725 break;
726 case 'c': // 3 strings to match.
727 switch (Name[1]) {
728 default: break;
729 case 'a': // 1 string to match.
730 if (memcmp(s1: Name.data()+2, s2: "lled_once", n: 9) != 0)
731 break;
732 return AttributeCommonInfo::AT_CalledOnce; // "called_once"
733 case 'f': // 1 string to match.
734 if (memcmp(s1: Name.data()+2, s2: "_consumed", n: 9) != 0)
735 break;
736 return AttributeCommonInfo::AT_CFConsumed; // "cf_consumed"
737 case 'o': // 1 string to match.
738 if (memcmp(s1: Name.data()+2, s2: "nstructor", n: 9) != 0)
739 break;
740 return AttributeCommonInfo::AT_Constructor; // "constructor"
741 }
742 break;
743 case 'd': // 1 string to match.
744 if (memcmp(s1: Name.data()+1, s2: "iagnose_if", n: 10) != 0)
745 break;
746 return AttributeCommonInfo::AT_DiagnoseIf; // "diagnose_if"
747 case 'e': // 2 strings to match.
748 switch (Name[1]) {
749 default: break;
750 case 'n': // 1 string to match.
751 if (memcmp(s1: Name.data()+2, s2: "force_tcb", n: 9) != 0)
752 break;
753 return AttributeCommonInfo::AT_EnforceTCB; // "enforce_tcb"
754 case 'x': // 1 string to match.
755 if (memcmp(s1: Name.data()+2, s2: "port_name", n: 9) != 0)
756 break;
757 return AttributeCommonInfo::AT_WebAssemblyExportName; // "export_name"
758 }
759 break;
760 case 'f': // 1 string to match.
761 if (memcmp(s1: Name.data()+1, s2: "allthrough", n: 10) != 0)
762 break;
763 return AttributeCommonInfo::AT_FallThrough; // "fallthrough"
764 case 'g': // 1 string to match.
765 if (memcmp(s1: Name.data()+1, s2: "uarded_var", n: 10) != 0)
766 break;
767 return AttributeCommonInfo::AT_GuardedVar; // "guarded_var"
768 case 'i': // 1 string to match.
769 if (memcmp(s1: Name.data()+1, s2: "mport_name", n: 10) != 0)
770 break;
771 return AttributeCommonInfo::AT_WebAssemblyImportName; // "import_name"
772 case 'm': // 2 strings to match.
773 if (Name[1] != 'a')
774 break;
775 switch (Name[2]) {
776 default: break;
777 case 't': // 1 string to match.
778 if (memcmp(s1: Name.data()+3, s2: "rix_type", n: 8) != 0)
779 break;
780 return AttributeCommonInfo::AT_MatrixType; // "matrix_type"
781 case 'y': // 1 string to match.
782 if (memcmp(s1: Name.data()+3, s2: "be_undef", n: 8) != 0)
783 break;
784 return AttributeCommonInfo::AT_MaybeUndef; // "maybe_undef"
785 }
786 break;
787 case 'n': // 5 strings to match.
788 switch (Name[1]) {
789 default: break;
790 case 'o': // 4 strings to match.
791 switch (Name[2]) {
792 default: break;
793 case '_': // 1 string to match.
794 if (memcmp(s1: Name.data()+3, s2: "sanitize", n: 8) != 0)
795 break;
796 return AttributeCommonInfo::AT_NoSanitize; // "no_sanitize"
797 case 'd': // 1 string to match.
798 if (memcmp(s1: Name.data()+3, s2: "uplicate", n: 8) != 0)
799 break;
800 return AttributeCommonInfo::AT_NoDuplicate; // "noduplicate"
801 case 'm': // 1 string to match.
802 if (memcmp(s1: Name.data()+3, s2: "icromips", n: 8) != 0)
803 break;
804 return AttributeCommonInfo::AT_NoMicroMips; // "nomicromips"
805 case 'n': // 1 string to match.
806 if (memcmp(s1: Name.data()+3, s2: "blocking", n: 8) != 0)
807 break;
808 return AttributeCommonInfo::AT_NonBlocking; // "nonblocking"
809 }
810 break;
811 case 's': // 1 string to match.
812 if (memcmp(s1: Name.data()+2, s2: "_consumed", n: 9) != 0)
813 break;
814 return AttributeCommonInfo::AT_NSConsumed; // "ns_consumed"
815 }
816 break;
817 case 'o': // 3 strings to match.
818 switch (Name[1]) {
819 default: break;
820 case 'b': // 2 strings to match.
821 if (memcmp(s1: Name.data()+2, s2: "jc_", n: 3) != 0)
822 break;
823 switch (Name[5]) {
824 default: break;
825 case 'b': // 1 string to match.
826 if (memcmp(s1: Name.data()+6, s2: "ridge", n: 5) != 0)
827 break;
828 return AttributeCommonInfo::AT_ObjCBridge; // "objc_bridge"
829 case 'd': // 1 string to match.
830 if (memcmp(s1: Name.data()+6, s2: "irect", n: 5) != 0)
831 break;
832 return AttributeCommonInfo::AT_ObjCDirect; // "objc_direct"
833 }
834 break;
835 case 's': // 1 string to match.
836 if (memcmp(s1: Name.data()+2, s2: "_consumed", n: 9) != 0)
837 break;
838 return AttributeCommonInfo::AT_OSConsumed; // "os_consumed"
839 }
840 break;
841 case 's': // 3 strings to match.
842 switch (Name[1]) {
843 default: break;
844 case 'w': // 2 strings to match.
845 if (memcmp(s1: Name.data()+2, s2: "ift_", n: 4) != 0)
846 break;
847 switch (Name[6]) {
848 default: break;
849 case 'a': // 1 string to match.
850 if (memcmp(s1: Name.data()+7, s2: "sync", n: 4) != 0)
851 break;
852 return AttributeCommonInfo::AT_SwiftAsync; // "swift_async"
853 case 'e': // 1 string to match.
854 if (memcmp(s1: Name.data()+7, s2: "rror", n: 4) != 0)
855 break;
856 return AttributeCommonInfo::AT_SwiftError; // "swift_error"
857 }
858 break;
859 case 'y': // 1 string to match.
860 if (memcmp(s1: Name.data()+2, s2: "cl_kernel", n: 9) != 0)
861 break;
862 return AttributeCommonInfo::AT_SYCLKernel; // "sycl_kernel"
863 }
864 break;
865 case 't': // 1 string to match.
866 if (memcmp(s1: Name.data()+1, s2: "rivial_abi", n: 10) != 0)
867 break;
868 return AttributeCommonInfo::AT_TrivialABI; // "trivial_abi"
869 case 'u': // 1 string to match.
870 if (memcmp(s1: Name.data()+1, s2: "navailable", n: 10) != 0)
871 break;
872 return AttributeCommonInfo::AT_Unavailable; // "unavailable"
873 case 'v': // 1 string to match.
874 if (memcmp(s1: Name.data()+1, s2: "ector_size", n: 10) != 0)
875 break;
876 return AttributeCommonInfo::AT_VectorSize; // "vector_size"
877 case 'w': // 2 strings to match.
878 switch (Name[1]) {
879 default: break;
880 case 'a': // 1 string to match.
881 if (memcmp(s1: Name.data()+2, s2: "rn_unused", n: 9) != 0)
882 break;
883 return AttributeCommonInfo::AT_WarnUnused; // "warn_unused"
884 case 'e': // 1 string to match.
885 if (memcmp(s1: Name.data()+2, s2: "ak_import", n: 9) != 0)
886 break;
887 return AttributeCommonInfo::AT_WeakImport; // "weak_import"
888 }
889 break;
890 }
891 break;
892 case 12: // 12 strings to match.
893 switch (Name[0]) {
894 default: break;
895 case 'a': // 1 string to match.
896 if (memcmp(s1: Name.data()+1, s2: "vailability", n: 11) != 0)
897 break;
898 return AttributeCommonInfo::AT_Availability; // "availability"
899 case 'b': // 2 strings to match.
900 if (memcmp(s1: Name.data()+1, s2: "tf_", n: 3) != 0)
901 break;
902 switch (Name[4]) {
903 default: break;
904 case 'd': // 1 string to match.
905 if (memcmp(s1: Name.data()+5, s2: "ecl_tag", n: 7) != 0)
906 break;
907 return AttributeCommonInfo::AT_BTFDeclTag; // "btf_decl_tag"
908 case 't': // 1 string to match.
909 if (memcmp(s1: Name.data()+5, s2: "ype_tag", n: 7) != 0)
910 break;
911 return AttributeCommonInfo::AT_BTFTypeTag; // "btf_type_tag"
912 }
913 break;
914 case 'c': // 3 strings to match.
915 switch (Name[1]) {
916 default: break;
917 case 'o': // 1 string to match.
918 if (memcmp(s1: Name.data()+2, s2: "ro_wrapper", n: 10) != 0)
919 break;
920 return AttributeCommonInfo::AT_CoroWrapper; // "coro_wrapper"
921 case 'p': // 2 strings to match.
922 if (memcmp(s1: Name.data()+2, s2: "u_", n: 2) != 0)
923 break;
924 switch (Name[4]) {
925 default: break;
926 case 'd': // 1 string to match.
927 if (memcmp(s1: Name.data()+5, s2: "ispatch", n: 7) != 0)
928 break;
929 return AttributeCommonInfo::AT_CPUDispatch; // "cpu_dispatch"
930 case 's': // 1 string to match.
931 if (memcmp(s1: Name.data()+5, s2: "pecific", n: 7) != 0)
932 break;
933 return AttributeCommonInfo::AT_CPUSpecific; // "cpu_specific"
934 }
935 break;
936 }
937 break;
938 case 'n': // 1 string to match.
939 if (memcmp(s1: Name.data()+1, s2: "vptx_kernel", n: 11) != 0)
940 break;
941 return AttributeCommonInfo::AT_NVPTXKernel; // "nvptx_kernel"
942 case 'o': // 3 strings to match.
943 switch (Name[1]) {
944 default: break;
945 case 'b': // 1 string to match.
946 if (memcmp(s1: Name.data()+2, s2: "jc_boxable", n: 10) != 0)
947 break;
948 return AttributeCommonInfo::AT_ObjCBoxable; // "objc_boxable"
949 case 'p': // 1 string to match.
950 if (memcmp(s1: Name.data()+2, s2: "encl_local", n: 10) != 0)
951 break;
952 return AttributeCommonInfo::AT_OpenCLLocalAddressSpace; // "opencl_local"
953 case 'v': // 1 string to match.
954 if (memcmp(s1: Name.data()+2, s2: "erloadable", n: 10) != 0)
955 break;
956 return AttributeCommonInfo::AT_Overloadable; // "overloadable"
957 }
958 break;
959 case 'p': // 1 string to match.
960 if (memcmp(s1: Name.data()+1, s2: "reserve_all", n: 11) != 0)
961 break;
962 return AttributeCommonInfo::AT_PreserveAll; // "preserve_all"
963 case 's': // 1 string to match.
964 if (memcmp(s1: Name.data()+1, s2: "wift_bridge", n: 11) != 0)
965 break;
966 return AttributeCommonInfo::AT_SwiftBridge; // "swift_bridge"
967 }
968 break;
969 case 13: // 25 strings to match.
970 switch (Name[0]) {
971 default: break;
972 case 'a': // 3 strings to match.
973 switch (Name[1]) {
974 default: break;
975 case 'd': // 1 string to match.
976 if (memcmp(s1: Name.data()+2, s2: "dress_space", n: 11) != 0)
977 break;
978 return AttributeCommonInfo::AT_AddressSpace; // "address_space"
979 case 'l': // 1 string to match.
980 if (memcmp(s1: Name.data()+2, s2: "ways_inline", n: 11) != 0)
981 break;
982 return AttributeCommonInfo::AT_AlwaysInline; // "always_inline"
983 case 'm': // 1 string to match.
984 if (memcmp(s1: Name.data()+2, s2: "dgpu_kernel", n: 11) != 0)
985 break;
986 return AttributeCommonInfo::AT_AMDGPUKernelCall; // "amdgpu_kernel"
987 }
988 break;
989 case 'c': // 1 string to match.
990 if (memcmp(s1: Name.data()+1, s2: "allable_when", n: 12) != 0)
991 break;
992 return AttributeCommonInfo::AT_CallableWhen; // "callable_when"
993 case 'i': // 2 strings to match.
994 switch (Name[1]) {
995 default: break;
996 case 'm': // 1 string to match.
997 if (memcmp(s1: Name.data()+2, s2: "port_module", n: 11) != 0)
998 break;
999 return AttributeCommonInfo::AT_WebAssemblyImportModule; // "import_module"
1000 case 'n': // 1 string to match.
1001 if (memcmp(s1: Name.data()+2, s2: "it_priority", n: 11) != 0)
1002 break;
1003 return AttributeCommonInfo::AT_InitPriority; // "init_priority"
1004 }
1005 break;
1006 case 'l': // 3 strings to match.
1007 switch (Name[1]) {
1008 default: break;
1009 case 'a': // 1 string to match.
1010 if (memcmp(s1: Name.data()+2, s2: "unch_bounds", n: 11) != 0)
1011 break;
1012 return AttributeCommonInfo::AT_CUDALaunchBounds; // "launch_bounds"
1013 case 'i': // 1 string to match.
1014 if (memcmp(s1: Name.data()+2, s2: "fetimebound", n: 11) != 0)
1015 break;
1016 return AttributeCommonInfo::AT_LifetimeBound; // "lifetimebound"
1017 case 'o': // 1 string to match.
1018 if (memcmp(s1: Name.data()+2, s2: "ck_returned", n: 11) != 0)
1019 break;
1020 return AttributeCommonInfo::AT_LockReturned; // "lock_returned"
1021 }
1022 break;
1023 case 'n': // 1 string to match.
1024 if (memcmp(s1: Name.data()+1, s2: "onallocating", n: 12) != 0)
1025 break;
1026 return AttributeCommonInfo::AT_NonAllocating; // "nonallocating"
1027 case 'o': // 1 string to match.
1028 if (memcmp(s1: Name.data()+1, s2: "pencl_global", n: 12) != 0)
1029 break;
1030 return AttributeCommonInfo::AT_OpenCLGlobalAddressSpace; // "opencl_global"
1031 case 'p': // 3 strings to match.
1032 switch (Name[1]) {
1033 default: break;
1034 case 'r': // 2 strings to match.
1035 if (memcmp(s1: Name.data()+2, s2: "eserve_", n: 7) != 0)
1036 break;
1037 switch (Name[9]) {
1038 default: break;
1039 case 'm': // 1 string to match.
1040 if (memcmp(s1: Name.data()+10, s2: "ost", n: 3) != 0)
1041 break;
1042 return AttributeCommonInfo::AT_PreserveMost; // "preserve_most"
1043 case 'n': // 1 string to match.
1044 if (memcmp(s1: Name.data()+10, s2: "one", n: 3) != 0)
1045 break;
1046 return AttributeCommonInfo::AT_PreserveNone; // "preserve_none"
1047 }
1048 break;
1049 case 't': // 1 string to match.
1050 if (memcmp(s1: Name.data()+2, s2: "_guarded_by", n: 11) != 0)
1051 break;
1052 return AttributeCommonInfo::AT_PtGuardedBy; // "pt_guarded_by"
1053 }
1054 break;
1055 case 'r': // 2 strings to match.
1056 if (Name[1] != 'e')
1057 break;
1058 switch (Name[2]) {
1059 default: break;
1060 case 'i': // 1 string to match.
1061 if (memcmp(s1: Name.data()+3, s2: "nitializes", n: 10) != 0)
1062 break;
1063 return AttributeCommonInfo::AT_Reinitializes; // "reinitializes"
1064 case 't': // 1 string to match.
1065 if (memcmp(s1: Name.data()+3, s2: "urns_twice", n: 10) != 0)
1066 break;
1067 return AttributeCommonInfo::AT_ReturnsTwice; // "returns_twice"
1068 }
1069 break;
1070 case 's': // 5 strings to match.
1071 switch (Name[1]) {
1072 default: break;
1073 case 'e': // 1 string to match.
1074 if (memcmp(s1: Name.data()+2, s2: "t_typestate", n: 11) != 0)
1075 break;
1076 return AttributeCommonInfo::AT_SetTypestate; // "set_typestate"
1077 case 'w': // 4 strings to match.
1078 if (memcmp(s1: Name.data()+2, s2: "ift_", n: 4) != 0)
1079 break;
1080 switch (Name[6]) {
1081 default: break;
1082 case 'c': // 1 string to match.
1083 if (memcmp(s1: Name.data()+7, s2: "ontext", n: 6) != 0)
1084 break;
1085 return AttributeCommonInfo::AT_SwiftContext; // "swift_context"
1086 case 'n': // 1 string to match.
1087 if (memcmp(s1: Name.data()+7, s2: "ewtype", n: 6) != 0)
1088 break;
1089 return AttributeCommonInfo::AT_SwiftNewType; // "swift_newtype"
1090 case 'p': // 1 string to match.
1091 if (memcmp(s1: Name.data()+7, s2: "rivate", n: 6) != 0)
1092 break;
1093 return AttributeCommonInfo::AT_SwiftPrivate; // "swift_private"
1094 case 'w': // 1 string to match.
1095 if (memcmp(s1: Name.data()+7, s2: "rapper", n: 6) != 0)
1096 break;
1097 return AttributeCommonInfo::AT_SwiftNewType; // "swift_wrapper"
1098 }
1099 break;
1100 }
1101 break;
1102 case 't': // 1 string to match.
1103 if (memcmp(s1: Name.data()+1, s2: "arget_clones", n: 12) != 0)
1104 break;
1105 return AttributeCommonInfo::AT_TargetClones; // "target_clones"
1106 case 'u': // 1 string to match.
1107 if (memcmp(s1: Name.data()+1, s2: "ninitialized", n: 12) != 0)
1108 break;
1109 return AttributeCommonInfo::AT_Uninitialized; // "uninitialized"
1110 case 'v': // 1 string to match.
1111 if (memcmp(s1: Name.data()+1, s2: "ec_type_hint", n: 12) != 0)
1112 break;
1113 return AttributeCommonInfo::AT_VecTypeHint; // "vec_type_hint"
1114 case 'x': // 1 string to match.
1115 if (memcmp(s1: Name.data()+1, s2: "ray_log_args", n: 12) != 0)
1116 break;
1117 return AttributeCommonInfo::AT_XRayLogArgs; // "xray_log_args"
1118 }
1119 break;
1120 case 14: // 20 strings to match.
1121 switch (Name[0]) {
1122 default: break;
1123 case 'a': // 4 strings to match.
1124 switch (Name[1]) {
1125 default: break;
1126 case 'c': // 2 strings to match.
1127 if (memcmp(s1: Name.data()+2, s2: "quire", n: 5) != 0)
1128 break;
1129 switch (Name[7]) {
1130 default: break;
1131 case '_': // 1 string to match.
1132 if (memcmp(s1: Name.data()+8, s2: "handle", n: 6) != 0)
1133 break;
1134 return AttributeCommonInfo::AT_AcquireHandle; // "acquire_handle"
1135 case 'd': // 1 string to match.
1136 if (memcmp(s1: Name.data()+8, s2: "_after", n: 6) != 0)
1137 break;
1138 return AttributeCommonInfo::AT_AcquiredAfter; // "acquired_after"
1139 }
1140 break;
1141 case 'l': // 1 string to match.
1142 if (memcmp(s1: Name.data()+2, s2: "ways_destroy", n: 12) != 0)
1143 break;
1144 return AttributeCommonInfo::AT_AlwaysDestroy; // "always_destroy"
1145 case 's': // 1 string to match.
1146 if (memcmp(s1: Name.data()+2, s2: "sume_aligned", n: 12) != 0)
1147 break;
1148 return AttributeCommonInfo::AT_AssumeAligned; // "assume_aligned"
1149 }
1150 break;
1151 case 'c': // 1 string to match.
1152 if (memcmp(s1: Name.data()+1, s2: "udart_builtin", n: 13) != 0)
1153 break;
1154 return AttributeCommonInfo::IgnoredAttribute; // "cudart_builtin"
1155 case 'd': // 1 string to match.
1156 if (memcmp(s1: Name.data()+1, s2: "evice_builtin", n: 13) != 0)
1157 break;
1158 return AttributeCommonInfo::IgnoredAttribute; // "device_builtin"
1159 case 'i': // 1 string to match.
1160 if (memcmp(s1: Name.data()+1, s2: "ntel_ocl_bicc", n: 13) != 0)
1161 break;
1162 return AttributeCommonInfo::AT_IntelOclBicc; // "intel_ocl_bicc"
1163 case 'l': // 1 string to match.
1164 if (memcmp(s1: Name.data()+1, s2: "ocks_excluded", n: 13) != 0)
1165 break;
1166 return AttributeCommonInfo::AT_LocksExcluded; // "locks_excluded"
1167 case 'n': // 1 string to match.
1168 if (memcmp(s1: Name.data()+1, s2: "o_split_stack", n: 13) != 0)
1169 break;
1170 return AttributeCommonInfo::AT_NoSplitStack; // "no_split_stack"
1171 case 'o': // 4 strings to match.
1172 switch (Name[1]) {
1173 default: break;
1174 case 'b': // 2 strings to match.
1175 if (memcmp(s1: Name.data()+2, s2: "jc_", n: 3) != 0)
1176 break;
1177 switch (Name[5]) {
1178 default: break;
1179 case 'e': // 1 string to match.
1180 if (memcmp(s1: Name.data()+6, s2: "xception", n: 8) != 0)
1181 break;
1182 return AttributeCommonInfo::AT_ObjCException; // "objc_exception"
1183 case 'o': // 1 string to match.
1184 if (memcmp(s1: Name.data()+6, s2: "wnership", n: 8) != 0)
1185 break;
1186 return AttributeCommonInfo::AT_ObjCOwnership; // "objc_ownership"
1187 }
1188 break;
1189 case 'p': // 2 strings to match.
1190 if (memcmp(s1: Name.data()+2, s2: "encl_", n: 5) != 0)
1191 break;
1192 switch (Name[7]) {
1193 default: break;
1194 case 'g': // 1 string to match.
1195 if (memcmp(s1: Name.data()+8, s2: "eneric", n: 6) != 0)
1196 break;
1197 return AttributeCommonInfo::AT_OpenCLGenericAddressSpace; // "opencl_generic"
1198 case 'p': // 1 string to match.
1199 if (memcmp(s1: Name.data()+8, s2: "rivate", n: 6) != 0)
1200 break;
1201 return AttributeCommonInfo::AT_OpenCLPrivateAddressSpace; // "opencl_private"
1202 }
1203 break;
1204 }
1205 break;
1206 case 'p': // 3 strings to match.
1207 switch (Name[1]) {
1208 default: break;
1209 case 'r': // 2 strings to match.
1210 if (memcmp(s1: Name.data()+2, s2: "eferred_", n: 8) != 0)
1211 break;
1212 switch (Name[10]) {
1213 default: break;
1214 case 'n': // 1 string to match.
1215 if (memcmp(s1: Name.data()+11, s2: "ame", n: 3) != 0)
1216 break;
1217 return AttributeCommonInfo::AT_PreferredName; // "preferred_name"
1218 case 't': // 1 string to match.
1219 if (memcmp(s1: Name.data()+11, s2: "ype", n: 3) != 0)
1220 break;
1221 return AttributeCommonInfo::AT_PreferredType; // "preferred_type"
1222 }
1223 break;
1224 case 't': // 1 string to match.
1225 if (memcmp(s1: Name.data()+2, s2: "_guarded_var", n: 12) != 0)
1226 break;
1227 return AttributeCommonInfo::AT_PtGuardedVar; // "pt_guarded_var"
1228 }
1229 break;
1230 case 'r': // 1 string to match.
1231 if (memcmp(s1: Name.data()+1, s2: "elease_handle", n: 13) != 0)
1232 break;
1233 return AttributeCommonInfo::AT_ReleaseHandle; // "release_handle"
1234 case 's': // 1 string to match.
1235 if (memcmp(s1: Name.data()+1, s2: "wiftasynccall", n: 13) != 0)
1236 break;
1237 return AttributeCommonInfo::AT_SwiftAsyncCall; // "swiftasynccall"
1238 case 't': // 2 strings to match.
1239 switch (Name[1]) {
1240 default: break;
1241 case 'a': // 1 string to match.
1242 if (memcmp(s1: Name.data()+2, s2: "rget_version", n: 12) != 0)
1243 break;
1244 return AttributeCommonInfo::AT_TargetVersion; // "target_version"
1245 case 'e': // 1 string to match.
1246 if (memcmp(s1: Name.data()+2, s2: "st_typestate", n: 12) != 0)
1247 break;
1248 return AttributeCommonInfo::AT_TestTypestate; // "test_typestate"
1249 }
1250 break;
1251 }
1252 break;
1253 case 15: // 20 strings to match.
1254 switch (Name[0]) {
1255 default: break;
1256 case 'a': // 4 strings to match.
1257 switch (Name[1]) {
1258 default: break;
1259 case 'a': // 1 string to match.
1260 if (memcmp(s1: Name.data()+2, s2: "rch64_sve_pcs", n: 13) != 0)
1261 break;
1262 return AttributeCommonInfo::AT_AArch64SVEPcs; // "aarch64_sve_pcs"
1263 case 'c': // 1 string to match.
1264 if (memcmp(s1: Name.data()+2, s2: "quired_before", n: 13) != 0)
1265 break;
1266 return AttributeCommonInfo::AT_AcquiredBefore; // "acquired_before"
1267 case 'm': // 2 strings to match.
1268 if (memcmp(s1: Name.data()+2, s2: "dgpu_num_", n: 9) != 0)
1269 break;
1270 switch (Name[11]) {
1271 default: break;
1272 case 's': // 1 string to match.
1273 if (memcmp(s1: Name.data()+12, s2: "gpr", n: 3) != 0)
1274 break;
1275 return AttributeCommonInfo::AT_AMDGPUNumSGPR; // "amdgpu_num_sgpr"
1276 case 'v': // 1 string to match.
1277 if (memcmp(s1: Name.data()+12, s2: "gpr", n: 3) != 0)
1278 break;
1279 return AttributeCommonInfo::AT_AMDGPUNumVGPR; // "amdgpu_num_vgpr"
1280 }
1281 break;
1282 }
1283 break;
1284 case 'e': // 1 string to match.
1285 if (memcmp(s1: Name.data()+1, s2: "xt_vector_type", n: 14) != 0)
1286 break;
1287 return AttributeCommonInfo::AT_ExtVectorType; // "ext_vector_type"
1288 case 'f': // 1 string to match.
1289 if (memcmp(s1: Name.data()+1, s2: "unction_return", n: 14) != 0)
1290 break;
1291 return AttributeCommonInfo::AT_FunctionReturnThunks; // "function_return"
1292 case 'n': // 2 strings to match.
1293 switch (Name[1]) {
1294 default: break;
1295 case 'o': // 1 string to match.
1296 if (memcmp(s1: Name.data()+2, s2: "t_tail_called", n: 13) != 0)
1297 break;
1298 return AttributeCommonInfo::AT_NotTailCalled; // "not_tail_called"
1299 case 's': // 1 string to match.
1300 if (memcmp(s1: Name.data()+2, s2: "_error_domain", n: 13) != 0)
1301 break;
1302 return AttributeCommonInfo::AT_NSErrorDomain; // "ns_error_domain"
1303 }
1304 break;
1305 case 'o': // 5 strings to match.
1306 switch (Name[1]) {
1307 default: break;
1308 case 'b': // 2 strings to match.
1309 if (memcmp(s1: Name.data()+2, s2: "jc_", n: 3) != 0)
1310 break;
1311 switch (Name[5]) {
1312 default: break;
1313 case 'c': // 1 string to match.
1314 if (memcmp(s1: Name.data()+6, s2: "lass_stub", n: 9) != 0)
1315 break;
1316 return AttributeCommonInfo::AT_ObjCClassStub; // "objc_class_stub"
1317 case 'r': // 1 string to match.
1318 if (memcmp(s1: Name.data()+6, s2: "oot_class", n: 9) != 0)
1319 break;
1320 return AttributeCommonInfo::AT_ObjCRootClass; // "objc_root_class"
1321 }
1322 break;
1323 case 'p': // 1 string to match.
1324 if (memcmp(s1: Name.data()+2, s2: "encl_constant", n: 13) != 0)
1325 break;
1326 return AttributeCommonInfo::AT_OpenCLConstantAddressSpace; // "opencl_constant"
1327 case 'w': // 2 strings to match.
1328 if (memcmp(s1: Name.data()+2, s2: "nership_", n: 8) != 0)
1329 break;
1330 switch (Name[10]) {
1331 default: break;
1332 case 'h': // 1 string to match.
1333 if (memcmp(s1: Name.data()+11, s2: "olds", n: 4) != 0)
1334 break;
1335 return AttributeCommonInfo::AT_Ownership; // "ownership_holds"
1336 case 't': // 1 string to match.
1337 if (memcmp(s1: Name.data()+11, s2: "akes", n: 4) != 0)
1338 break;
1339 return AttributeCommonInfo::AT_Ownership; // "ownership_takes"
1340 }
1341 break;
1342 }
1343 break;
1344 case 'p': // 1 string to match.
1345 if (memcmp(s1: Name.data()+1, s2: "aram_typestate", n: 14) != 0)
1346 break;
1347 return AttributeCommonInfo::AT_ParamTypestate; // "param_typestate"
1348 case 'r': // 2 strings to match.
1349 switch (Name[1]) {
1350 default: break;
1351 case 'e': // 1 string to match.
1352 if (memcmp(s1: Name.data()+2, s2: "turns_nonnull", n: 13) != 0)
1353 break;
1354 return AttributeCommonInfo::AT_ReturnsNonNull; // "returns_nonnull"
1355 case 'i': // 1 string to match.
1356 if (memcmp(s1: Name.data()+2, s2: "scv_vector_cc", n: 13) != 0)
1357 break;
1358 return AttributeCommonInfo::AT_RISCVVectorCC; // "riscv_vector_cc"
1359 }
1360 break;
1361 case 's': // 1 string to match.
1362 if (memcmp(s1: Name.data()+1, s2: "coped_lockable", n: 14) != 0)
1363 break;
1364 return AttributeCommonInfo::AT_ScopedLockable; // "scoped_lockable"
1365 case 't': // 1 string to match.
1366 if (memcmp(s1: Name.data()+1, s2: "ype_visibility", n: 14) != 0)
1367 break;
1368 return AttributeCommonInfo::AT_TypeVisibility; // "type_visibility"
1369 case 'u': // 2 strings to match.
1370 switch (Name[1]) {
1371 default: break;
1372 case 'n': // 1 string to match.
1373 if (memcmp(s1: Name.data()+2, s2: "lock_function", n: 13) != 0)
1374 break;
1375 return AttributeCommonInfo::AT_ReleaseCapability; // "unlock_function"
1376 case 's': // 1 string to match.
1377 if (memcmp(s1: Name.data()+2, s2: "ing_if_exists", n: 13) != 0)
1378 break;
1379 return AttributeCommonInfo::AT_UsingIfExists; // "using_if_exists"
1380 }
1381 break;
1382 }
1383 break;
1384 case 16: // 14 strings to match.
1385 switch (Name[0]) {
1386 default: break;
1387 case 'c': // 1 string to match.
1388 if (memcmp(s1: Name.data()+1, s2: "oro_return_type", n: 15) != 0)
1389 break;
1390 return AttributeCommonInfo::AT_CoroReturnType; // "coro_return_type"
1391 case 'e': // 1 string to match.
1392 if (memcmp(s1: Name.data()+1, s2: "nforce_tcb_leaf", n: 15) != 0)
1393 break;
1394 return AttributeCommonInfo::AT_EnforceTCBLeaf; // "enforce_tcb_leaf"
1395 case 'h': // 1 string to match.
1396 if (memcmp(s1: Name.data()+1, s2: "ybrid_patchable", n: 15) != 0)
1397 break;
1398 return AttributeCommonInfo::AT_HybridPatchable; // "hybrid_patchable"
1399 case 'i': // 1 string to match.
1400 if (memcmp(s1: Name.data()+1, s2: "nternal_linkage", n: 15) != 0)
1401 break;
1402 return AttributeCommonInfo::AT_InternalLinkage; // "internal_linkage"
1403 case 'm': // 1 string to match.
1404 if (memcmp(s1: Name.data()+1, s2: "in_vector_width", n: 15) != 0)
1405 break;
1406 return AttributeCommonInfo::AT_MinVectorWidth; // "min_vector_width"
1407 case 'n': // 2 strings to match.
1408 switch (Name[1]) {
1409 default: break;
1410 case 'e': // 1 string to match.
1411 if (memcmp(s1: Name.data()+2, s2: "on_vector_type", n: 14) != 0)
1412 break;
1413 return AttributeCommonInfo::AT_NeonVectorType; // "neon_vector_type"
1414 case 's': // 1 string to match.
1415 if (memcmp(s1: Name.data()+2, s2: "_consumes_self", n: 14) != 0)
1416 break;
1417 return AttributeCommonInfo::AT_NSConsumesSelf; // "ns_consumes_self"
1418 }
1419 break;
1420 case 'o': // 1 string to match.
1421 if (memcmp(s1: Name.data()+1, s2: "s_consumes_this", n: 15) != 0)
1422 break;
1423 return AttributeCommonInfo::AT_OSConsumesThis; // "os_consumes_this"
1424 case 'p': // 1 string to match.
1425 if (memcmp(s1: Name.data()+1, s2: "ass_object_size", n: 15) != 0)
1426 break;
1427 return AttributeCommonInfo::AT_PassObjectSize; // "pass_object_size"
1428 case 'r': // 2 strings to match.
1429 switch (Name[1]) {
1430 default: break;
1431 case 'a': // 1 string to match.
1432 if (memcmp(s1: Name.data()+2, s2: "ndomize_layout", n: 14) != 0)
1433 break;
1434 return AttributeCommonInfo::AT_RandomizeLayout; // "randomize_layout"
1435 case 'e': // 1 string to match.
1436 if (memcmp(s1: Name.data()+2, s2: "turn_typestate", n: 14) != 0)
1437 break;
1438 return AttributeCommonInfo::AT_ReturnTypestate; // "return_typestate"
1439 }
1440 break;
1441 case 's': // 3 strings to match.
1442 switch (Name[1]) {
1443 default: break;
1444 case 'i': // 1 string to match.
1445 if (memcmp(s1: Name.data()+2, s2: "zed_by_or_null", n: 14) != 0)
1446 break;
1447 return AttributeCommonInfo::AT_SizedByOrNull; // "sized_by_or_null"
1448 case 't': // 1 string to match.
1449 if (memcmp(s1: Name.data()+2, s2: "andalone_debug", n: 14) != 0)
1450 break;
1451 return AttributeCommonInfo::AT_StandaloneDebug; // "standalone_debug"
1452 case 'w': // 1 string to match.
1453 if (memcmp(s1: Name.data()+2, s2: "ift_async_name", n: 14) != 0)
1454 break;
1455 return AttributeCommonInfo::AT_SwiftAsyncName; // "swift_async_name"
1456 }
1457 break;
1458 }
1459 break;
1460 case 17: // 7 strings to match.
1461 switch (Name[0]) {
1462 default: break;
1463 case 'a': // 2 strings to match.
1464 switch (Name[1]) {
1465 default: break;
1466 case 'n': // 1 string to match.
1467 if (memcmp(s1: Name.data()+2, s2: "alyzer_noreturn", n: 15) != 0)
1468 break;
1469 return AttributeCommonInfo::AT_AnalyzerNoReturn; // "analyzer_noreturn"
1470 case 's': // 1 string to match.
1471 if (memcmp(s1: Name.data()+2, s2: "sert_capability", n: 15) != 0)
1472 break;
1473 return AttributeCommonInfo::AT_AssertCapability; // "assert_capability"
1474 }
1475 break;
1476 case 'o': // 2 strings to match.
1477 switch (Name[1]) {
1478 default: break;
1479 case 'b': // 1 string to match.
1480 if (memcmp(s1: Name.data()+2, s2: "jc_runtime_name", n: 15) != 0)
1481 break;
1482 return AttributeCommonInfo::AT_ObjCRuntimeName; // "objc_runtime_name"
1483 case 'w': // 1 string to match.
1484 if (memcmp(s1: Name.data()+2, s2: "nership_returns", n: 15) != 0)
1485 break;
1486 return AttributeCommonInfo::AT_Ownership; // "ownership_returns"
1487 }
1488 break;
1489 case 's': // 2 strings to match.
1490 switch (Name[1]) {
1491 default: break;
1492 case 'h': // 1 string to match.
1493 if (memcmp(s1: Name.data()+2, s2: "ared_capability", n: 15) != 0)
1494 break;
1495 return AttributeCommonInfo::AT_Capability; // "shared_capability"
1496 case 'w': // 1 string to match.
1497 if (memcmp(s1: Name.data()+2, s2: "ift_async_error", n: 15) != 0)
1498 break;
1499 return AttributeCommonInfo::AT_SwiftAsyncError; // "swift_async_error"
1500 }
1501 break;
1502 case 't': // 1 string to match.
1503 if (memcmp(s1: Name.data()+1, s2: "ransparent_union", n: 16) != 0)
1504 break;
1505 return AttributeCommonInfo::AT_TransparentUnion; // "transparent_union"
1506 }
1507 break;
1508 case 18: // 22 strings to match.
1509 switch (Name[0]) {
1510 default: break;
1511 case 'a': // 3 strings to match.
1512 switch (Name[1]) {
1513 default: break;
1514 case 'a': // 1 string to match.
1515 if (memcmp(s1: Name.data()+2, s2: "rch64_vector_pcs", n: 16) != 0)
1516 break;
1517 return AttributeCommonInfo::AT_AArch64VectorPcs; // "aarch64_vector_pcs"
1518 case 'c': // 1 string to match.
1519 if (memcmp(s1: Name.data()+2, s2: "quire_capability", n: 16) != 0)
1520 break;
1521 return AttributeCommonInfo::AT_AcquireCapability; // "acquire_capability"
1522 case 's': // 1 string to match.
1523 if (memcmp(s1: Name.data()+2, s2: "sert_shared_lock", n: 16) != 0)
1524 break;
1525 return AttributeCommonInfo::AT_AssertSharedLock; // "assert_shared_lock"
1526 }
1527 break;
1528 case 'c': // 3 strings to match.
1529 switch (Name[1]) {
1530 default: break;
1531 case 'a': // 1 string to match.
1532 if (memcmp(s1: Name.data()+2, s2: "rries_dependency", n: 16) != 0)
1533 break;
1534 return AttributeCommonInfo::AT_CarriesDependency; // "carries_dependency"
1535 case 'o': // 2 strings to match.
1536 switch (Name[2]) {
1537 default: break;
1538 case 'r': // 1 string to match.
1539 if (memcmp(s1: Name.data()+3, s2: "o_lifetimebound", n: 15) != 0)
1540 break;
1541 return AttributeCommonInfo::AT_CoroLifetimeBound; // "coro_lifetimebound"
1542 case 'u': // 1 string to match.
1543 if (memcmp(s1: Name.data()+3, s2: "nted_by_or_null", n: 15) != 0)
1544 break;
1545 return AttributeCommonInfo::AT_CountedByOrNull; // "counted_by_or_null"
1546 }
1547 break;
1548 }
1549 break;
1550 case 'd': // 1 string to match.
1551 if (memcmp(s1: Name.data()+1, s2: "isable_tail_calls", n: 17) != 0)
1552 break;
1553 return AttributeCommonInfo::AT_DisableTailCalls; // "disable_tail_calls"
1554 case 'e': // 1 string to match.
1555 if (memcmp(s1: Name.data()+1, s2: "num_extensibility", n: 17) != 0)
1556 break;
1557 return AttributeCommonInfo::AT_EnumExtensibility; // "enum_extensibility"
1558 case 'i': // 1 string to match.
1559 if (memcmp(s1: Name.data()+1, s2: "boutletcollection", n: 17) != 0)
1560 break;
1561 return AttributeCommonInfo::AT_IBOutletCollection; // "iboutletcollection"
1562 case 'm': // 1 string to match.
1563 if (memcmp(s1: Name.data()+1, s2: "ig_server_routine", n: 17) != 0)
1564 break;
1565 return AttributeCommonInfo::AT_MIGServerRoutine; // "mig_server_routine"
1566 case 'n': // 3 strings to match.
1567 if (memcmp(s1: Name.data()+1, s2: "o_s", n: 3) != 0)
1568 break;
1569 switch (Name[4]) {
1570 default: break;
1571 case 'a': // 2 strings to match.
1572 if (memcmp(s1: Name.data()+5, s2: "nitize_", n: 7) != 0)
1573 break;
1574 switch (Name[12]) {
1575 default: break;
1576 case 'm': // 1 string to match.
1577 if (memcmp(s1: Name.data()+13, s2: "emory", n: 5) != 0)
1578 break;
1579 return AttributeCommonInfo::AT_NoSanitizeSpecific; // "no_sanitize_memory"
1580 case 't': // 1 string to match.
1581 if (memcmp(s1: Name.data()+13, s2: "hread", n: 5) != 0)
1582 break;
1583 return AttributeCommonInfo::AT_NoSanitizeSpecific; // "no_sanitize_thread"
1584 }
1585 break;
1586 case 't': // 1 string to match.
1587 if (memcmp(s1: Name.data()+5, s2: "ack_protector", n: 13) != 0)
1588 break;
1589 return AttributeCommonInfo::AT_NoStackProtector; // "no_stack_protector"
1590 }
1591 break;
1592 case 'o': // 4 strings to match.
1593 switch (Name[1]) {
1594 default: break;
1595 case 'b': // 2 strings to match.
1596 if (memcmp(s1: Name.data()+2, s2: "jc_", n: 3) != 0)
1597 break;
1598 switch (Name[5]) {
1599 default: break;
1600 case 'm': // 1 string to match.
1601 if (memcmp(s1: Name.data()+6, s2: "ethod_family", n: 12) != 0)
1602 break;
1603 return AttributeCommonInfo::AT_ObjCMethodFamily; // "objc_method_family"
1604 case 'n': // 1 string to match.
1605 if (memcmp(s1: Name.data()+6, s2: "onlazy_class", n: 12) != 0)
1606 break;
1607 return AttributeCommonInfo::AT_ObjCNonLazyClass; // "objc_nonlazy_class"
1608 }
1609 break;
1610 case 'p': // 2 strings to match.
1611 if (memcmp(s1: Name.data()+2, s2: "encl_", n: 5) != 0)
1612 break;
1613 switch (Name[7]) {
1614 default: break;
1615 case 'g': // 1 string to match.
1616 if (memcmp(s1: Name.data()+8, s2: "lobal_host", n: 10) != 0)
1617 break;
1618 return AttributeCommonInfo::AT_OpenCLGlobalHostAddressSpace; // "opencl_global_host"
1619 case 'u': // 1 string to match.
1620 if (memcmp(s1: Name.data()+8, s2: "nroll_hint", n: 10) != 0)
1621 break;
1622 return AttributeCommonInfo::AT_OpenCLUnrollHint; // "opencl_unroll_hint"
1623 }
1624 break;
1625 }
1626 break;
1627 case 'r': // 1 string to match.
1628 if (memcmp(s1: Name.data()+1, s2: "elease_capability", n: 17) != 0)
1629 break;
1630 return AttributeCommonInfo::AT_ReleaseCapability; // "release_capability"
1631 case 's': // 3 strings to match.
1632 switch (Name[1]) {
1633 default: break;
1634 case 'w': // 2 strings to match.
1635 if (memcmp(s1: Name.data()+2, s2: "ift_", n: 4) != 0)
1636 break;
1637 switch (Name[6]) {
1638 default: break;
1639 case 'e': // 1 string to match.
1640 if (memcmp(s1: Name.data()+7, s2: "rror_result", n: 11) != 0)
1641 break;
1642 return AttributeCommonInfo::AT_SwiftErrorResult; // "swift_error_result"
1643 case 'o': // 1 string to match.
1644 if (memcmp(s1: Name.data()+7, s2: "bjc_members", n: 11) != 0)
1645 break;
1646 return AttributeCommonInfo::AT_SwiftObjCMembers; // "swift_objc_members"
1647 }
1648 break;
1649 case 'y': // 1 string to match.
1650 if (memcmp(s1: Name.data()+2, s2: "cl_special_class", n: 16) != 0)
1651 break;
1652 return AttributeCommonInfo::AT_SYCLSpecialClass; // "sycl_special_class"
1653 }
1654 break;
1655 case 'w': // 1 string to match.
1656 if (memcmp(s1: Name.data()+1, s2: "arn_unused_result", n: 17) != 0)
1657 break;
1658 return AttributeCommonInfo::AT_WarnUnusedResult; // "warn_unused_result"
1659 }
1660 break;
1661 case 19: // 20 strings to match.
1662 switch (Name[0]) {
1663 default: break;
1664 case 'a': // 2 strings to match.
1665 switch (Name[1]) {
1666 default: break;
1667 case 'm': // 1 string to match.
1668 if (memcmp(s1: Name.data()+2, s2: "dgpu_waves_per_eu", n: 17) != 0)
1669 break;
1670 return AttributeCommonInfo::AT_AMDGPUWavesPerEU; // "amdgpu_waves_per_eu"
1671 case 'r': // 1 string to match.
1672 if (memcmp(s1: Name.data()+2, s2: "m_sve_vector_bits", n: 17) != 0)
1673 break;
1674 return AttributeCommonInfo::AT_ArmSveVectorBits; // "arm_sve_vector_bits"
1675 }
1676 break;
1677 case 'c': // 5 strings to match.
1678 switch (Name[1]) {
1679 default: break;
1680 case 'f': // 3 strings to match.
1681 if (Name[2] != '_')
1682 break;
1683 switch (Name[3]) {
1684 default: break;
1685 case 'a': // 1 string to match.
1686 if (memcmp(s1: Name.data()+4, s2: "udited_transfer", n: 15) != 0)
1687 break;
1688 return AttributeCommonInfo::AT_CFAuditedTransfer; // "cf_audited_transfer"
1689 case 'r': // 1 string to match.
1690 if (memcmp(s1: Name.data()+4, s2: "eturns_retained", n: 15) != 0)
1691 break;
1692 return AttributeCommonInfo::AT_CFReturnsRetained; // "cf_returns_retained"
1693 case 'u': // 1 string to match.
1694 if (memcmp(s1: Name.data()+4, s2: "nknown_transfer", n: 15) != 0)
1695 break;
1696 return AttributeCommonInfo::AT_CFUnknownTransfer; // "cf_unknown_transfer"
1697 }
1698 break;
1699 case 'l': // 1 string to match.
1700 if (memcmp(s1: Name.data()+2, s2: "ang_builtin_alias", n: 17) != 0)
1701 break;
1702 return AttributeCommonInfo::AT_BuiltinAlias; // "clang_builtin_alias"
1703 case 'm': // 1 string to match.
1704 if (memcmp(s1: Name.data()+2, s2: "se_nonsecure_call", n: 17) != 0)
1705 break;
1706 return AttributeCommonInfo::AT_CmseNSCall; // "cmse_nonsecure_call"
1707 }
1708 break;
1709 case 'd': // 1 string to match.
1710 if (memcmp(s1: Name.data()+1, s2: "iagnose_as_builtin", n: 18) != 0)
1711 break;
1712 return AttributeCommonInfo::AT_DiagnoseAsBuiltin; // "diagnose_as_builtin"
1713 case 'n': // 3 strings to match.
1714 switch (Name[1]) {
1715 default: break;
1716 case 'o': // 2 strings to match.
1717 if (Name[2] != '_')
1718 break;
1719 switch (Name[3]) {
1720 default: break;
1721 case 'r': // 1 string to match.
1722 if (memcmp(s1: Name.data()+4, s2: "andomize_layout", n: 15) != 0)
1723 break;
1724 return AttributeCommonInfo::AT_NoRandomizeLayout; // "no_randomize_layout"
1725 case 's': // 1 string to match.
1726 if (memcmp(s1: Name.data()+4, s2: "anitize_address", n: 15) != 0)
1727 break;
1728 return AttributeCommonInfo::AT_NoSanitizeSpecific; // "no_sanitize_address"
1729 }
1730 break;
1731 case 's': // 1 string to match.
1732 if (memcmp(s1: Name.data()+2, s2: "_returns_retained", n: 17) != 0)
1733 break;
1734 return AttributeCommonInfo::AT_NSReturnsRetained; // "ns_returns_retained"
1735 }
1736 break;
1737 case 'o': // 5 strings to match.
1738 switch (Name[1]) {
1739 default: break;
1740 case 'b': // 4 strings to match.
1741 if (memcmp(s1: Name.data()+2, s2: "jc_", n: 3) != 0)
1742 break;
1743 switch (Name[5]) {
1744 default: break;
1745 case 'b': // 2 strings to match.
1746 if (memcmp(s1: Name.data()+6, s2: "ridge_", n: 6) != 0)
1747 break;
1748 switch (Name[12]) {
1749 default: break;
1750 case 'm': // 1 string to match.
1751 if (memcmp(s1: Name.data()+13, s2: "utable", n: 6) != 0)
1752 break;
1753 return AttributeCommonInfo::AT_ObjCBridgeMutable; // "objc_bridge_mutable"
1754 case 'r': // 1 string to match.
1755 if (memcmp(s1: Name.data()+13, s2: "elated", n: 6) != 0)
1756 break;
1757 return AttributeCommonInfo::AT_ObjCBridgeRelated; // "objc_bridge_related"
1758 }
1759 break;
1760 case 'd': // 1 string to match.
1761 if (memcmp(s1: Name.data()+6, s2: "irect_members", n: 13) != 0)
1762 break;
1763 return AttributeCommonInfo::AT_ObjCDirectMembers; // "objc_direct_members"
1764 case 'r': // 1 string to match.
1765 if (memcmp(s1: Name.data()+6, s2: "equires_super", n: 13) != 0)
1766 break;
1767 return AttributeCommonInfo::AT_ObjCRequiresSuper; // "objc_requires_super"
1768 }
1769 break;
1770 case 's': // 1 string to match.
1771 if (memcmp(s1: Name.data()+2, s2: "_returns_retained", n: 17) != 0)
1772 break;
1773 return AttributeCommonInfo::AT_OSReturnsRetained; // "os_returns_retained"
1774 }
1775 break;
1776 case 'r': // 1 string to match.
1777 if (memcmp(s1: Name.data()+1, s2: "equires_capability", n: 18) != 0)
1778 break;
1779 return AttributeCommonInfo::AT_RequiresCapability; // "requires_capability"
1780 case 's': // 1 string to match.
1781 if (memcmp(s1: Name.data()+1, s2: "wift_async_context", n: 18) != 0)
1782 break;
1783 return AttributeCommonInfo::AT_SwiftAsyncContext; // "swift_async_context"
1784 case 'u': // 1 string to match.
1785 if (memcmp(s1: Name.data()+1, s2: "nsafe_buffer_usage", n: 18) != 0)
1786 break;
1787 return AttributeCommonInfo::AT_UnsafeBufferUsage; // "unsafe_buffer_usage"
1788 case 'z': // 1 string to match.
1789 if (memcmp(s1: Name.data()+1, s2: "ero_call_used_regs", n: 18) != 0)
1790 break;
1791 return AttributeCommonInfo::AT_ZeroCallUsedRegs; // "zero_call_used_regs"
1792 }
1793 break;
1794 case 20: // 9 strings to match.
1795 switch (Name[0]) {
1796 default: break;
1797 case 'c': // 2 strings to match.
1798 switch (Name[1]) {
1799 default: break;
1800 case 'l': // 1 string to match.
1801 if (memcmp(s1: Name.data()+2, s2: "spv_libclc_builtin", n: 18) != 0)
1802 break;
1803 return AttributeCommonInfo::AT_ClspvLibclcBuiltin; // "clspv_libclc_builtin"
1804 case 'm': // 1 string to match.
1805 if (memcmp(s1: Name.data()+2, s2: "se_nonsecure_entry", n: 18) != 0)
1806 break;
1807 return AttributeCommonInfo::AT_CmseNSEntry; // "cmse_nonsecure_entry"
1808 }
1809 break;
1810 case 'l': // 1 string to match.
1811 if (memcmp(s1: Name.data()+1, s2: "oader_uninitialized", n: 19) != 0)
1812 break;
1813 return AttributeCommonInfo::AT_LoaderUninitialized; // "loader_uninitialized"
1814 case 'n': // 1 string to match.
1815 if (memcmp(s1: Name.data()+1, s2: "eon_polyvector_type", n: 19) != 0)
1816 break;
1817 return AttributeCommonInfo::AT_NeonPolyVectorType; // "neon_polyvector_type"
1818 case 'o': // 2 strings to match.
1819 switch (Name[1]) {
1820 default: break;
1821 case 'b': // 1 string to match.
1822 if (memcmp(s1: Name.data()+2, s2: "jc_runtime_visible", n: 18) != 0)
1823 break;
1824 return AttributeCommonInfo::AT_ObjCRuntimeVisible; // "objc_runtime_visible"
1825 case 'p': // 1 string to match.
1826 if (memcmp(s1: Name.data()+2, s2: "encl_global_device", n: 18) != 0)
1827 break;
1828 return AttributeCommonInfo::AT_OpenCLGlobalDeviceAddressSpace; // "opencl_global_device"
1829 }
1830 break;
1831 case 'r': // 1 string to match.
1832 if (memcmp(s1: Name.data()+1, s2: "eqd_work_group_size", n: 19) != 0)
1833 break;
1834 return AttributeCommonInfo::AT_ReqdWorkGroupSize; // "reqd_work_group_size"
1835 case 's': // 1 string to match.
1836 if (memcmp(s1: Name.data()+1, s2: "hared_lock_function", n: 19) != 0)
1837 break;
1838 return AttributeCommonInfo::AT_AcquireCapability; // "shared_lock_function"
1839 case 'w': // 1 string to match.
1840 if (memcmp(s1: Name.data()+1, s2: "ork_group_size_hint", n: 19) != 0)
1841 break;
1842 return AttributeCommonInfo::AT_WorkGroupSizeHint; // "work_group_size_hint"
1843 }
1844 break;
1845 case 21: // 11 strings to match.
1846 switch (Name[0]) {
1847 default: break;
1848 case 'a': // 1 string to match.
1849 if (memcmp(s1: Name.data()+1, s2: "ssert_exclusive_lock", n: 20) != 0)
1850 break;
1851 return AttributeCommonInfo::AT_AssertExclusiveLock; // "assert_exclusive_lock"
1852 case 'l': // 1 string to match.
1853 if (memcmp(s1: Name.data()+1, s2: "to_visibility_public", n: 20) != 0)
1854 break;
1855 return AttributeCommonInfo::AT_LTOVisibilityPublic; // "lto_visibility_public"
1856 case 'o': // 1 string to match.
1857 if (memcmp(s1: Name.data()+1, s2: "bjc_precise_lifetime", n: 20) != 0)
1858 break;
1859 return AttributeCommonInfo::AT_ObjCPreciseLifetime; // "objc_precise_lifetime"
1860 case 'p': // 2 strings to match.
1861 switch (Name[1]) {
1862 default: break;
1863 case 'o': // 1 string to match.
1864 if (memcmp(s1: Name.data()+2, s2: "inter_with_type_tag", n: 19) != 0)
1865 break;
1866 return AttributeCommonInfo::AT_ArgumentWithTypeTag; // "pointer_with_type_tag"
1867 case 'r': // 1 string to match.
1868 if (memcmp(s1: Name.data()+2, s2: "eserve_access_index", n: 19) != 0)
1869 break;
1870 return AttributeCommonInfo::AT_BPFPreserveAccessIndex; // "preserve_access_index"
1871 }
1872 break;
1873 case 'r': // 1 string to match.
1874 if (memcmp(s1: Name.data()+1, s2: "iscv_rvv_vector_bits", n: 20) != 0)
1875 break;
1876 return AttributeCommonInfo::AT_RISCVRVVVectorBits; // "riscv_rvv_vector_bits"
1877 case 's': // 3 strings to match.
1878 switch (Name[1]) {
1879 default: break;
1880 case 'h': // 1 string to match.
1881 if (memcmp(s1: Name.data()+2, s2: "ared_locks_required", n: 19) != 0)
1882 break;
1883 return AttributeCommonInfo::AT_RequiresCapability; // "shared_locks_required"
1884 case 'w': // 2 strings to match.
1885 if (memcmp(s1: Name.data()+2, s2: "ift_", n: 4) != 0)
1886 break;
1887 switch (Name[6]) {
1888 default: break;
1889 case 'b': // 1 string to match.
1890 if (memcmp(s1: Name.data()+7, s2: "ridged_typedef", n: 14) != 0)
1891 break;
1892 return AttributeCommonInfo::AT_SwiftBridgedTypedef; // "swift_bridged_typedef"
1893 case 'i': // 1 string to match.
1894 if (memcmp(s1: Name.data()+7, s2: "ndirect_result", n: 14) != 0)
1895 break;
1896 return AttributeCommonInfo::AT_SwiftIndirectResult; // "swift_indirect_result"
1897 }
1898 break;
1899 }
1900 break;
1901 case 't': // 1 string to match.
1902 if (memcmp(s1: Name.data()+1, s2: "ype_tag_for_datatype", n: 20) != 0)
1903 break;
1904 return AttributeCommonInfo::AT_TypeTagForDatatype; // "type_tag_for_datatype"
1905 case 'x': // 1 string to match.
1906 if (memcmp(s1: Name.data()+1, s2: "ray_never_instrument", n: 20) != 0)
1907 break;
1908 return AttributeCommonInfo::AT_XRayInstrument; // "xray_never_instrument"
1909 }
1910 break;
1911 case 22: // 8 strings to match.
1912 switch (Name[0]) {
1913 default: break;
1914 case 'a': // 1 string to match.
1915 if (memcmp(s1: Name.data()+1, s2: "rgument_with_type_tag", n: 21) != 0)
1916 break;
1917 return AttributeCommonInfo::AT_ArgumentWithTypeTag; // "argument_with_type_tag"
1918 case 'e': // 1 string to match.
1919 if (memcmp(s1: Name.data()+1, s2: "xternal_source_symbol", n: 21) != 0)
1920 break;
1921 return AttributeCommonInfo::AT_ExternalSourceSymbol; // "external_source_symbol"
1922 case 'n': // 1 string to match.
1923 if (memcmp(s1: Name.data()+1, s2: "o_instrument_function", n: 21) != 0)
1924 break;
1925 return AttributeCommonInfo::AT_NoInstrumentFunction; // "no_instrument_function"
1926 case 'o': // 1 string to match.
1927 if (memcmp(s1: Name.data()+1, s2: "bjc_independent_class", n: 21) != 0)
1928 break;
1929 return AttributeCommonInfo::AT_ObjCIndependentClass; // "objc_independent_class"
1930 case 'p': // 2 strings to match.
1931 switch (Name[1]) {
1932 default: break;
1933 case 'r': // 1 string to match.
1934 if (memcmp(s1: Name.data()+2, s2: "eserve_static_offset", n: 20) != 0)
1935 break;
1936 return AttributeCommonInfo::AT_BPFPreserveStaticOffset; // "preserve_static_offset"
1937 case 't': // 1 string to match.
1938 if (memcmp(s1: Name.data()+2, s2: "rauth_vtable_pointer", n: 20) != 0)
1939 break;
1940 return AttributeCommonInfo::AT_VTablePointerAuthentication; // "ptrauth_vtable_pointer"
1941 }
1942 break;
1943 case 't': // 1 string to match.
1944 if (memcmp(s1: Name.data()+1, s2: "ry_acquire_capability", n: 21) != 0)
1945 break;
1946 return AttributeCommonInfo::AT_TryAcquireCapability; // "try_acquire_capability"
1947 case 'x': // 1 string to match.
1948 if (memcmp(s1: Name.data()+1, s2: "ray_always_instrument", n: 21) != 0)
1949 break;
1950 return AttributeCommonInfo::AT_XRayInstrument; // "xray_always_instrument"
1951 }
1952 break;
1953 case 23: // 7 strings to match.
1954 switch (Name[0]) {
1955 default: break;
1956 case 'c': // 1 string to match.
1957 if (memcmp(s1: Name.data()+1, s2: "f_returns_not_retained", n: 22) != 0)
1958 break;
1959 return AttributeCommonInfo::AT_CFReturnsNotRetained; // "cf_returns_not_retained"
1960 case 'e': // 1 string to match.
1961 if (memcmp(s1: Name.data()+1, s2: "xclusive_lock_function", n: 22) != 0)
1962 break;
1963 return AttributeCommonInfo::AT_AcquireCapability; // "exclusive_lock_function"
1964 case 'f': // 1 string to match.
1965 if (memcmp(s1: Name.data()+1, s2: "orce_align_arg_pointer", n: 22) != 0)
1966 break;
1967 return AttributeCommonInfo::AT_X86ForceAlignArgPointer; // "force_align_arg_pointer"
1968 case 'n': // 2 strings to match.
1969 if (memcmp(s1: Name.data()+1, s2: "s_returns_", n: 10) != 0)
1970 break;
1971 switch (Name[11]) {
1972 default: break;
1973 case 'a': // 1 string to match.
1974 if (memcmp(s1: Name.data()+12, s2: "utoreleased", n: 11) != 0)
1975 break;
1976 return AttributeCommonInfo::AT_NSReturnsAutoreleased; // "ns_returns_autoreleased"
1977 case 'n': // 1 string to match.
1978 if (memcmp(s1: Name.data()+12, s2: "ot_retained", n: 11) != 0)
1979 break;
1980 return AttributeCommonInfo::AT_NSReturnsNotRetained; // "ns_returns_not_retained"
1981 }
1982 break;
1983 case 'o': // 1 string to match.
1984 if (memcmp(s1: Name.data()+1, s2: "s_returns_not_retained", n: 22) != 0)
1985 break;
1986 return AttributeCommonInfo::AT_OSReturnsNotRetained; // "os_returns_not_retained"
1987 case 's': // 1 string to match.
1988 if (memcmp(s1: Name.data()+1, s2: "hared_trylock_function", n: 22) != 0)
1989 break;
1990 return AttributeCommonInfo::AT_SharedTrylockFunction; // "shared_trylock_function"
1991 }
1992 break;
1993 case 24: // 6 strings to match.
1994 switch (Name[0]) {
1995 default: break;
1996 case 'a': // 1 string to match.
1997 if (memcmp(s1: Name.data()+1, s2: "ssert_shared_capability", n: 23) != 0)
1998 break;
1999 return AttributeCommonInfo::AT_AssertCapability; // "assert_shared_capability"
2000 case 'c': // 1 string to match.
2001 if (memcmp(s1: Name.data()+1, s2: "fi_canonical_jump_table", n: 23) != 0)
2002 break;
2003 return AttributeCommonInfo::AT_CFICanonicalJumpTable; // "cfi_canonical_jump_table"
2004 case 'e': // 1 string to match.
2005 if (memcmp(s1: Name.data()+1, s2: "xclusive_locks_required", n: 23) != 0)
2006 break;
2007 return AttributeCommonInfo::AT_RequiresCapability; // "exclusive_locks_required"
2008 case 'o': // 1 string to match.
2009 if (memcmp(s1: Name.data()+1, s2: "bjc_externally_retained", n: 23) != 0)
2010 break;
2011 return AttributeCommonInfo::AT_ObjCExternallyRetained; // "objc_externally_retained"
2012 case 'p': // 2 strings to match.
2013 if (Name[1] != 'a')
2014 break;
2015 switch (Name[2]) {
2016 default: break;
2017 case 's': // 1 string to match.
2018 if (memcmp(s1: Name.data()+3, s2: "s_dynamic_object_size", n: 21) != 0)
2019 break;
2020 return AttributeCommonInfo::AT_PassObjectSize; // "pass_dynamic_object_size"
2021 case 't': // 1 string to match.
2022 if (memcmp(s1: Name.data()+3, s2: "chable_function_entry", n: 21) != 0)
2023 break;
2024 return AttributeCommonInfo::AT_PatchableFunctionEntry; // "patchable_function_entry"
2025 }
2026 break;
2027 }
2028 break;
2029 case 25: // 7 strings to match.
2030 switch (Name[0]) {
2031 default: break;
2032 case '_': // 1 string to match.
2033 if (memcmp(s1: Name.data()+1, s2: "_clang_arm_builtin_alias", n: 24) != 0)
2034 break;
2035 return AttributeCommonInfo::AT_ArmBuiltinAlias; // "__clang_arm_builtin_alias"
2036 case 'a': // 1 string to match.
2037 if (memcmp(s1: Name.data()+1, s2: "cquire_shared_capability", n: 24) != 0)
2038 break;
2039 return AttributeCommonInfo::AT_AcquireCapability; // "acquire_shared_capability"
2040 case 'i': // 1 string to match.
2041 if (memcmp(s1: Name.data()+1, s2: "ntel_reqd_sub_group_size", n: 24) != 0)
2042 break;
2043 return AttributeCommonInfo::AT_OpenCLIntelReqdSubGroupSize; // "intel_reqd_sub_group_size"
2044 case 'n': // 2 strings to match.
2045 if (memcmp(s1: Name.data()+1, s2: "o_", n: 2) != 0)
2046 break;
2047 switch (Name[3]) {
2048 default: break;
2049 case 'c': // 1 string to match.
2050 if (memcmp(s1: Name.data()+4, s2: "aller_saved_registers", n: 21) != 0)
2051 break;
2052 return AttributeCommonInfo::AT_AnyX86NoCallerSavedRegisters; // "no_caller_saved_registers"
2053 case 't': // 1 string to match.
2054 if (memcmp(s1: Name.data()+4, s2: "hread_safety_analysis", n: 21) != 0)
2055 break;
2056 return AttributeCommonInfo::AT_NoThreadSafetyAnalysis; // "no_thread_safety_analysis"
2057 }
2058 break;
2059 case 'o': // 1 string to match.
2060 if (memcmp(s1: Name.data()+1, s2: "bjc_non_runtime_protocol", n: 24) != 0)
2061 break;
2062 return AttributeCommonInfo::AT_ObjCNonRuntimeProtocol; // "objc_non_runtime_protocol"
2063 case 'r': // 1 string to match.
2064 if (memcmp(s1: Name.data()+1, s2: "elease_shared_capability", n: 24) != 0)
2065 break;
2066 return AttributeCommonInfo::AT_ReleaseCapability; // "release_shared_capability"
2067 }
2068 break;
2069 case 26: // 9 strings to match.
2070 switch (Name[0]) {
2071 default: break;
2072 case 'a': // 1 string to match.
2073 if (memcmp(s1: Name.data()+1, s2: "mdgpu_max_num_work_groups", n: 25) != 0)
2074 break;
2075 return AttributeCommonInfo::AT_AMDGPUMaxNumWorkGroups; // "amdgpu_max_num_work_groups"
2076 case 'c': // 2 strings to match.
2077 if (Name[1] != 'o')
2078 break;
2079 switch (Name[2]) {
2080 default: break;
2081 case 'n': // 1 string to match.
2082 if (memcmp(s1: Name.data()+3, s2: "sumable_auto_cast_state", n: 23) != 0)
2083 break;
2084 return AttributeCommonInfo::AT_ConsumableAutoCast; // "consumable_auto_cast_state"
2085 case 'r': // 1 string to match.
2086 if (memcmp(s1: Name.data()+3, s2: "o_disable_lifetimebound", n: 23) != 0)
2087 break;
2088 return AttributeCommonInfo::AT_CoroDisableLifetimeBound; // "coro_disable_lifetimebound"
2089 }
2090 break;
2091 case 'e': // 1 string to match.
2092 if (memcmp(s1: Name.data()+1, s2: "xclusive_trylock_function", n: 25) != 0)
2093 break;
2094 return AttributeCommonInfo::AT_ExclusiveTrylockFunction; // "exclusive_trylock_function"
2095 case 'n': // 1 string to match.
2096 if (memcmp(s1: Name.data()+1, s2: "o_address_safety_analysis", n: 25) != 0)
2097 break;
2098 return AttributeCommonInfo::AT_NoSanitizeSpecific; // "no_address_safety_analysis"
2099 case 'o': // 1 string to match.
2100 if (memcmp(s1: Name.data()+1, s2: "bjc_returns_inner_pointer", n: 25) != 0)
2101 break;
2102 return AttributeCommonInfo::AT_ObjCReturnsInnerPointer; // "objc_returns_inner_pointer"
2103 case 'r': // 2 strings to match.
2104 if (Name[1] != 'e')
2105 break;
2106 switch (Name[2]) {
2107 default: break;
2108 case 'l': // 1 string to match.
2109 if (memcmp(s1: Name.data()+3, s2: "ease_generic_capability", n: 23) != 0)
2110 break;
2111 return AttributeCommonInfo::AT_ReleaseCapability; // "release_generic_capability"
2112 case 'q': // 1 string to match.
2113 if (memcmp(s1: Name.data()+3, s2: "uires_shared_capability", n: 23) != 0)
2114 break;
2115 return AttributeCommonInfo::AT_RequiresCapability; // "requires_shared_capability"
2116 }
2117 break;
2118 case 's': // 1 string to match.
2119 if (memcmp(s1: Name.data()+1, s2: "peculative_load_hardening", n: 25) != 0)
2120 break;
2121 return AttributeCommonInfo::AT_SpeculativeLoadHardening; // "speculative_load_hardening"
2122 }
2123 break;
2124 case 27: // 7 strings to match.
2125 switch (Name[0]) {
2126 default: break;
2127 case 'a': // 1 string to match.
2128 if (memcmp(s1: Name.data()+1, s2: "mdgpu_flat_work_group_size", n: 26) != 0)
2129 break;
2130 return AttributeCommonInfo::AT_AMDGPUFlatWorkGroupSize; // "amdgpu_flat_work_group_size"
2131 case 'd': // 2 strings to match.
2132 if (memcmp(s1: Name.data()+1, s2: "evice_builtin_", n: 14) != 0)
2133 break;
2134 switch (Name[15]) {
2135 default: break;
2136 case 's': // 1 string to match.
2137 if (memcmp(s1: Name.data()+16, s2: "urface_type", n: 11) != 0)
2138 break;
2139 return AttributeCommonInfo::AT_CUDADeviceBuiltinSurfaceType; // "device_builtin_surface_type"
2140 case 't': // 1 string to match.
2141 if (memcmp(s1: Name.data()+16, s2: "exture_type", n: 11) != 0)
2142 break;
2143 return AttributeCommonInfo::AT_CUDADeviceBuiltinTextureType; // "device_builtin_texture_type"
2144 }
2145 break;
2146 case 'e': // 1 string to match.
2147 if (memcmp(s1: Name.data()+1, s2: "nforce_read_only_placement", n: 26) != 0)
2148 break;
2149 return AttributeCommonInfo::AT_ReadOnlyPlacement; // "enforce_read_only_placement"
2150 case 'o': // 3 strings to match.
2151 switch (Name[1]) {
2152 default: break;
2153 case 'b': // 2 strings to match.
2154 if (memcmp(s1: Name.data()+2, s2: "jc_", n: 3) != 0)
2155 break;
2156 switch (Name[5]) {
2157 default: break;
2158 case 'd': // 1 string to match.
2159 if (memcmp(s1: Name.data()+6, s2: "esignated_initializer", n: 21) != 0)
2160 break;
2161 return AttributeCommonInfo::AT_ObjCDesignatedInitializer; // "objc_designated_initializer"
2162 case 's': // 1 string to match.
2163 if (memcmp(s1: Name.data()+6, s2: "ubclassing_restricted", n: 21) != 0)
2164 break;
2165 return AttributeCommonInfo::AT_ObjCSubclassingRestricted; // "objc_subclassing_restricted"
2166 }
2167 break;
2168 case 's': // 1 string to match.
2169 if (memcmp(s1: Name.data()+2, s2: "_returns_retained_on_zero", n: 25) != 0)
2170 break;
2171 return AttributeCommonInfo::AT_OSReturnsRetainedOnZero; // "os_returns_retained_on_zero"
2172 }
2173 break;
2174 }
2175 break;
2176 case 28: // 1 string to match.
2177 if (memcmp(s1: Name.data()+0, s2: "consumable_set_state_on_read", n: 28) != 0)
2178 break;
2179 return AttributeCommonInfo::AT_ConsumableSetOnRead; // "consumable_set_state_on_read"
2180 case 29: // 2 strings to match.
2181 switch (Name[0]) {
2182 default: break;
2183 case 'n': // 1 string to match.
2184 if (memcmp(s1: Name.data()+1, s2: "o_speculative_load_hardening", n: 28) != 0)
2185 break;
2186 return AttributeCommonInfo::AT_NoSpeculativeLoadHardening; // "no_speculative_load_hardening"
2187 case 't': // 1 string to match.
2188 if (memcmp(s1: Name.data()+1, s2: "ry_acquire_shared_capability", n: 28) != 0)
2189 break;
2190 return AttributeCommonInfo::AT_TryAcquireCapability; // "try_acquire_shared_capability"
2191 }
2192 break;
2193 case 30: // 1 string to match.
2194 if (memcmp(s1: Name.data()+0, s2: "no_profile_instrument_function", n: 30) != 0)
2195 break;
2196 return AttributeCommonInfo::AT_NoProfileFunction; // "no_profile_instrument_function"
2197 case 31: // 3 strings to match.
2198 switch (Name[0]) {
2199 default: break;
2200 case 'c': // 1 string to match.
2201 if (memcmp(s1: Name.data()+1, s2: "oro_only_destroy_when_complete", n: 30) != 0)
2202 break;
2203 return AttributeCommonInfo::AT_CoroOnlyDestroyWhenComplete; // "coro_only_destroy_when_complete"
2204 case 'o': // 1 string to match.
2205 if (memcmp(s1: Name.data()+1, s2: "s_returns_retained_on_non_zero", n: 30) != 0)
2206 break;
2207 return AttributeCommonInfo::AT_OSReturnsRetainedOnNonZero; // "os_returns_retained_on_non_zero"
2208 case 'r': // 1 string to match.
2209 if (memcmp(s1: Name.data()+1, s2: "equire_constant_initialization", n: 30) != 0)
2210 break;
2211 return AttributeCommonInfo::AT_ConstInit; // "require_constant_initialization"
2212 }
2213 break;
2214 case 33: // 1 string to match.
2215 if (memcmp(s1: Name.data()+0, s2: "disable_sanitizer_instrumentation", n: 33) != 0)
2216 break;
2217 return AttributeCommonInfo::AT_DisableSanitizerInstrumentation; // "disable_sanitizer_instrumentation"
2218 case 34: // 1 string to match.
2219 if (memcmp(s1: Name.data()+0, s2: "objc_requires_property_definitions", n: 34) != 0)
2220 break;
2221 return AttributeCommonInfo::AT_ObjCRequiresPropertyDefs; // "objc_requires_property_definitions"
2222 case 35: // 3 strings to match.
2223 switch (Name[0]) {
2224 default: break;
2225 case '_': // 1 string to match.
2226 if (memcmp(s1: Name.data()+1, s2: "_clang_arm_mve_strict_polymorphism", n: 34) != 0)
2227 break;
2228 return AttributeCommonInfo::AT_ArmMveStrictPolymorphism; // "__clang_arm_mve_strict_polymorphism"
2229 case 'e': // 1 string to match.
2230 if (memcmp(s1: Name.data()+1, s2: "xclude_from_explicit_instantiation", n: 34) != 0)
2231 break;
2232 return AttributeCommonInfo::AT_ExcludeFromExplicitInstantiation; // "exclude_from_explicit_instantiation"
2233 case 'o': // 1 string to match.
2234 if (memcmp(s1: Name.data()+1, s2: "bjc_arc_weak_reference_unavailable", n: 34) != 0)
2235 break;
2236 return AttributeCommonInfo::AT_ArcWeakrefUnavailable; // "objc_arc_weak_reference_unavailable"
2237 }
2238 break;
2239 case 37: // 1 string to match.
2240 if (memcmp(s1: Name.data()+0, s2: "available_only_in_default_eval_method", n: 37) != 0)
2241 break;
2242 return AttributeCommonInfo::AT_AvailableOnlyInDefaultEvalMethod; // "available_only_in_default_eval_method"
2243 case 46: // 1 string to match.
2244 if (memcmp(s1: Name.data()+0, s2: "objc_protocol_requires_explicit_implementation", n: 46) != 0)
2245 break;
2246 return AttributeCommonInfo::AT_ObjCExplicitProtocolImpl; // "objc_protocol_requires_explicit_implementation"
2247 }
2248 } else if (AttributeCommonInfo::AS_Declspec == Syntax) {
2249 switch (Name.size()) {
2250 default: break;
2251 case 4: // 1 string to match.
2252 if (memcmp(s1: Name.data()+0, s2: "uuid", n: 4) != 0)
2253 break;
2254 return AttributeCommonInfo::AT_Uuid; // "uuid"
2255 case 5: // 3 strings to match.
2256 switch (Name[0]) {
2257 default: break;
2258 case 'a': // 1 string to match.
2259 if (memcmp(s1: Name.data()+1, s2: "lign", n: 4) != 0)
2260 break;
2261 return AttributeCommonInfo::AT_Aligned; // "align"
2262 case 'g': // 1 string to match.
2263 if (memcmp(s1: Name.data()+1, s2: "uard", n: 4) != 0)
2264 break;
2265 return AttributeCommonInfo::AT_CFGuard; // "guard"
2266 case 'n': // 1 string to match.
2267 if (memcmp(s1: Name.data()+1, s2: "aked", n: 4) != 0)
2268 break;
2269 return AttributeCommonInfo::AT_Naked; // "naked"
2270 }
2271 break;
2272 case 6: // 1 string to match.
2273 if (memcmp(s1: Name.data()+0, s2: "thread", n: 6) != 0)
2274 break;
2275 return AttributeCommonInfo::AT_Thread; // "thread"
2276 case 7: // 2 strings to match.
2277 if (memcmp(s1: Name.data()+0, s2: "no", n: 2) != 0)
2278 break;
2279 switch (Name[2]) {
2280 default: break;
2281 case 'a': // 1 string to match.
2282 if (memcmp(s1: Name.data()+3, s2: "lias", n: 4) != 0)
2283 break;
2284 return AttributeCommonInfo::AT_NoAlias; // "noalias"
2285 case 't': // 1 string to match.
2286 if (memcmp(s1: Name.data()+3, s2: "hrow", n: 4) != 0)
2287 break;
2288 return AttributeCommonInfo::AT_NoThrow; // "nothrow"
2289 }
2290 break;
2291 case 8: // 8 strings to match.
2292 switch (Name[0]) {
2293 default: break;
2294 case '_': // 1 string to match.
2295 if (memcmp(s1: Name.data()+1, s2: "_host__", n: 7) != 0)
2296 break;
2297 return AttributeCommonInfo::AT_CUDAHost; // "__host__"
2298 case 'a': // 1 string to match.
2299 if (memcmp(s1: Name.data()+1, s2: "llocate", n: 7) != 0)
2300 break;
2301 return AttributeCommonInfo::AT_Section; // "allocate"
2302 case 'c': // 1 string to match.
2303 if (memcmp(s1: Name.data()+1, s2: "ode_seg", n: 7) != 0)
2304 break;
2305 return AttributeCommonInfo::AT_CodeSeg; // "code_seg"
2306 case 'n': // 3 strings to match.
2307 if (Name[1] != 'o')
2308 break;
2309 switch (Name[2]) {
2310 default: break;
2311 case 'i': // 1 string to match.
2312 if (memcmp(s1: Name.data()+3, s2: "nline", n: 5) != 0)
2313 break;
2314 return AttributeCommonInfo::AT_NoInline; // "noinline"
2315 case 'r': // 1 string to match.
2316 if (memcmp(s1: Name.data()+3, s2: "eturn", n: 5) != 0)
2317 break;
2318 return AttributeCommonInfo::AT_NoReturn; // "noreturn"
2319 case 'v': // 1 string to match.
2320 if (memcmp(s1: Name.data()+3, s2: "table", n: 5) != 0)
2321 break;
2322 return AttributeCommonInfo::AT_MSNoVTable; // "novtable"
2323 }
2324 break;
2325 case 'p': // 1 string to match.
2326 if (memcmp(s1: Name.data()+1, s2: "roperty", n: 7) != 0)
2327 break;
2328 return AttributeCommonInfo::IgnoredAttribute; // "property"
2329 case 'r': // 1 string to match.
2330 if (memcmp(s1: Name.data()+1, s2: "estrict", n: 7) != 0)
2331 break;
2332 return AttributeCommonInfo::AT_Restrict; // "restrict"
2333 }
2334 break;
2335 case 9: // 4 strings to match.
2336 switch (Name[0]) {
2337 default: break;
2338 case 'a': // 1 string to match.
2339 if (memcmp(s1: Name.data()+1, s2: "llocator", n: 8) != 0)
2340 break;
2341 return AttributeCommonInfo::AT_MSAllocator; // "allocator"
2342 case 'd': // 2 strings to match.
2343 if (memcmp(s1: Name.data()+1, s2: "ll", n: 2) != 0)
2344 break;
2345 switch (Name[3]) {
2346 default: break;
2347 case 'e': // 1 string to match.
2348 if (memcmp(s1: Name.data()+4, s2: "xport", n: 5) != 0)
2349 break;
2350 return AttributeCommonInfo::AT_DLLExport; // "dllexport"
2351 case 'i': // 1 string to match.
2352 if (memcmp(s1: Name.data()+4, s2: "mport", n: 5) != 0)
2353 break;
2354 return AttributeCommonInfo::AT_DLLImport; // "dllimport"
2355 }
2356 break;
2357 case 's': // 1 string to match.
2358 if (memcmp(s1: Name.data()+1, s2: "electany", n: 8) != 0)
2359 break;
2360 return AttributeCommonInfo::AT_SelectAny; // "selectany"
2361 }
2362 break;
2363 case 10: // 4 strings to match.
2364 switch (Name[0]) {
2365 default: break;
2366 case '_': // 3 strings to match.
2367 if (Name[1] != '_')
2368 break;
2369 switch (Name[2]) {
2370 default: break;
2371 case 'd': // 1 string to match.
2372 if (memcmp(s1: Name.data()+3, s2: "evice__", n: 7) != 0)
2373 break;
2374 return AttributeCommonInfo::AT_CUDADevice; // "__device__"
2375 case 'g': // 1 string to match.
2376 if (memcmp(s1: Name.data()+3, s2: "lobal__", n: 7) != 0)
2377 break;
2378 return AttributeCommonInfo::AT_CUDAGlobal; // "__global__"
2379 case 's': // 1 string to match.
2380 if (memcmp(s1: Name.data()+3, s2: "hared__", n: 7) != 0)
2381 break;
2382 return AttributeCommonInfo::AT_CUDAShared; // "__shared__"
2383 }
2384 break;
2385 case 'd': // 1 string to match.
2386 if (memcmp(s1: Name.data()+1, s2: "eprecated", n: 9) != 0)
2387 break;
2388 return AttributeCommonInfo::AT_Deprecated; // "deprecated"
2389 }
2390 break;
2391 case 11: // 3 strings to match.
2392 switch (Name[0]) {
2393 default: break;
2394 case '_': // 1 string to match.
2395 if (memcmp(s1: Name.data()+1, s2: "_managed__", n: 10) != 0)
2396 break;
2397 return AttributeCommonInfo::AT_HIPManaged; // "__managed__"
2398 case 'e': // 1 string to match.
2399 if (memcmp(s1: Name.data()+1, s2: "mpty_bases", n: 10) != 0)
2400 break;
2401 return AttributeCommonInfo::AT_EmptyBases; // "empty_bases"
2402 case 's': // 1 string to match.
2403 if (memcmp(s1: Name.data()+1, s2: "afebuffers", n: 10) != 0)
2404 break;
2405 return AttributeCommonInfo::AT_NoStackProtector; // "safebuffers"
2406 }
2407 break;
2408 case 12: // 3 strings to match.
2409 switch (Name[0]) {
2410 default: break;
2411 case '_': // 1 string to match.
2412 if (memcmp(s1: Name.data()+1, s2: "_constant__", n: 11) != 0)
2413 break;
2414 return AttributeCommonInfo::AT_CUDAConstant; // "__constant__"
2415 case 'c': // 2 strings to match.
2416 if (memcmp(s1: Name.data()+1, s2: "pu_", n: 3) != 0)
2417 break;
2418 switch (Name[4]) {
2419 default: break;
2420 case 'd': // 1 string to match.
2421 if (memcmp(s1: Name.data()+5, s2: "ispatch", n: 7) != 0)
2422 break;
2423 return AttributeCommonInfo::AT_CPUDispatch; // "cpu_dispatch"
2424 case 's': // 1 string to match.
2425 if (memcmp(s1: Name.data()+5, s2: "pecific", n: 7) != 0)
2426 break;
2427 return AttributeCommonInfo::AT_CPUSpecific; // "cpu_specific"
2428 }
2429 break;
2430 }
2431 break;
2432 case 14: // 1 string to match.
2433 if (memcmp(s1: Name.data()+0, s2: "layout_version", n: 14) != 0)
2434 break;
2435 return AttributeCommonInfo::AT_LayoutVersion; // "layout_version"
2436 case 15: // 1 string to match.
2437 if (memcmp(s1: Name.data()+0, s2: "strict_gs_check", n: 15) != 0)
2438 break;
2439 return AttributeCommonInfo::AT_StrictGuardStackCheck; // "strict_gs_check"
2440 case 16: // 1 string to match.
2441 if (memcmp(s1: Name.data()+0, s2: "hybrid_patchable", n: 16) != 0)
2442 break;
2443 return AttributeCommonInfo::AT_HybridPatchable; // "hybrid_patchable"
2444 case 17: // 1 string to match.
2445 if (memcmp(s1: Name.data()+0, s2: "__launch_bounds__", n: 17) != 0)
2446 break;
2447 return AttributeCommonInfo::AT_CUDALaunchBounds; // "__launch_bounds__"
2448 case 18: // 2 strings to match.
2449 if (memcmp(s1: Name.data()+0, s2: "__", n: 2) != 0)
2450 break;
2451 switch (Name[2]) {
2452 default: break;
2453 case 'c': // 1 string to match.
2454 if (memcmp(s1: Name.data()+3, s2: "udart_builtin__", n: 15) != 0)
2455 break;
2456 return AttributeCommonInfo::IgnoredAttribute; // "__cudart_builtin__"
2457 case 'd': // 1 string to match.
2458 if (memcmp(s1: Name.data()+3, s2: "evice_builtin__", n: 15) != 0)
2459 break;
2460 return AttributeCommonInfo::IgnoredAttribute; // "__device_builtin__"
2461 }
2462 break;
2463 case 31: // 2 strings to match.
2464 if (memcmp(s1: Name.data()+0, s2: "__device_builtin_", n: 17) != 0)
2465 break;
2466 switch (Name[17]) {
2467 default: break;
2468 case 's': // 1 string to match.
2469 if (memcmp(s1: Name.data()+18, s2: "urface_type__", n: 13) != 0)
2470 break;
2471 return AttributeCommonInfo::AT_CUDADeviceBuiltinSurfaceType; // "__device_builtin_surface_type__"
2472 case 't': // 1 string to match.
2473 if (memcmp(s1: Name.data()+18, s2: "exture_type__", n: 13) != 0)
2474 break;
2475 return AttributeCommonInfo::AT_CUDADeviceBuiltinTextureType; // "__device_builtin_texture_type__"
2476 }
2477 break;
2478 }
2479 } else if (AttributeCommonInfo::AS_Microsoft == Syntax) {
2480 switch (Name.size()) {
2481 default: break;
2482 case 4: // 2 strings to match.
2483 switch (Name[0]) {
2484 default: break;
2485 case 'l': // 1 string to match.
2486 if (memcmp(s1: Name.data()+1, s2: "oop", n: 3) != 0)
2487 break;
2488 return AttributeCommonInfo::AT_HLSLLoopHint; // "loop"
2489 case 'u': // 1 string to match.
2490 if (memcmp(s1: Name.data()+1, s2: "uid", n: 3) != 0)
2491 break;
2492 return AttributeCommonInfo::AT_Uuid; // "uuid"
2493 }
2494 break;
2495 case 6: // 2 strings to match.
2496 switch (Name[0]) {
2497 default: break;
2498 case 's': // 1 string to match.
2499 if (memcmp(s1: Name.data()+1, s2: "hader", n: 5) != 0)
2500 break;
2501 return AttributeCommonInfo::AT_HLSLShader; // "shader"
2502 case 'u': // 1 string to match.
2503 if (memcmp(s1: Name.data()+1, s2: "nroll", n: 5) != 0)
2504 break;
2505 return AttributeCommonInfo::AT_HLSLLoopHint; // "unroll"
2506 }
2507 break;
2508 case 10: // 1 string to match.
2509 if (memcmp(s1: Name.data()+0, s2: "numthreads", n: 10) != 0)
2510 break;
2511 return AttributeCommonInfo::AT_HLSLNumThreads; // "numthreads"
2512 }
2513 } else if (AttributeCommonInfo::AS_CXX11 == Syntax) {
2514 switch (Name.size()) {
2515 default: break;
2516 case 6: // 2 strings to match.
2517 switch (Name[0]) {
2518 default: break;
2519 case 'a': // 1 string to match.
2520 if (memcmp(s1: Name.data()+1, s2: "ssume", n: 5) != 0)
2521 break;
2522 return AttributeCommonInfo::AT_CXXAssume; // "assume"
2523 case 'l': // 1 string to match.
2524 if (memcmp(s1: Name.data()+1, s2: "ikely", n: 5) != 0)
2525 break;
2526 return AttributeCommonInfo::AT_Likely; // "likely"
2527 }
2528 break;
2529 case 8: // 5 strings to match.
2530 switch (Name[0]) {
2531 default: break;
2532 case 'g': // 3 strings to match.
2533 if (memcmp(s1: Name.data()+1, s2: "nu::", n: 4) != 0)
2534 break;
2535 switch (Name[5]) {
2536 default: break;
2537 case 'f': // 1 string to match.
2538 if (memcmp(s1: Name.data()+6, s2: "ar", n: 2) != 0)
2539 break;
2540 return AttributeCommonInfo::AT_MipsLongCall; // "gnu::far"
2541 case 'h': // 1 string to match.
2542 if (memcmp(s1: Name.data()+6, s2: "ot", n: 2) != 0)
2543 break;
2544 return AttributeCommonInfo::AT_Hot; // "gnu::hot"
2545 case 'p': // 1 string to match.
2546 if (memcmp(s1: Name.data()+6, s2: "cs", n: 2) != 0)
2547 break;
2548 return AttributeCommonInfo::AT_Pcs; // "gnu::pcs"
2549 }
2550 break;
2551 case 'n': // 1 string to match.
2552 if (memcmp(s1: Name.data()+1, s2: "oreturn", n: 7) != 0)
2553 break;
2554 return AttributeCommonInfo::AT_CXX11NoReturn; // "noreturn"
2555 case 'u': // 1 string to match.
2556 if (memcmp(s1: Name.data()+1, s2: "nlikely", n: 7) != 0)
2557 break;
2558 return AttributeCommonInfo::AT_Unlikely; // "unlikely"
2559 }
2560 break;
2561 case 9: // 8 strings to match.
2562 switch (Name[0]) {
2563 default: break;
2564 case 'g': // 7 strings to match.
2565 if (memcmp(s1: Name.data()+1, s2: "nu::", n: 4) != 0)
2566 break;
2567 switch (Name[5]) {
2568 default: break;
2569 case 'c': // 1 string to match.
2570 if (memcmp(s1: Name.data()+6, s2: "old", n: 3) != 0)
2571 break;
2572 return AttributeCommonInfo::AT_Cold; // "gnu::cold"
2573 case 'l': // 1 string to match.
2574 if (memcmp(s1: Name.data()+6, s2: "eaf", n: 3) != 0)
2575 break;
2576 return AttributeCommonInfo::AT_Leaf; // "gnu::leaf"
2577 case 'm': // 1 string to match.
2578 if (memcmp(s1: Name.data()+6, s2: "ode", n: 3) != 0)
2579 break;
2580 return AttributeCommonInfo::AT_Mode; // "gnu::mode"
2581 case 'n': // 1 string to match.
2582 if (memcmp(s1: Name.data()+6, s2: "ear", n: 3) != 0)
2583 break;
2584 return AttributeCommonInfo::AT_MipsShortCall; // "gnu::near"
2585 case 'p': // 1 string to match.
2586 if (memcmp(s1: Name.data()+6, s2: "ure", n: 3) != 0)
2587 break;
2588 return AttributeCommonInfo::AT_Pure; // "gnu::pure"
2589 case 'u': // 1 string to match.
2590 if (memcmp(s1: Name.data()+6, s2: "sed", n: 3) != 0)
2591 break;
2592 return AttributeCommonInfo::AT_Used; // "gnu::used"
2593 case 'w': // 1 string to match.
2594 if (memcmp(s1: Name.data()+6, s2: "eak", n: 3) != 0)
2595 break;
2596 return AttributeCommonInfo::AT_Weak; // "gnu::weak"
2597 }
2598 break;
2599 case 'n': // 1 string to match.
2600 if (memcmp(s1: Name.data()+1, s2: "odiscard", n: 8) != 0)
2601 break;
2602 return AttributeCommonInfo::AT_WarnUnusedResult; // "nodiscard"
2603 }
2604 break;
2605 case 10: // 9 strings to match.
2606 switch (Name[0]) {
2607 default: break;
2608 case 'd': // 1 string to match.
2609 if (memcmp(s1: Name.data()+1, s2: "eprecated", n: 9) != 0)
2610 break;
2611 return AttributeCommonInfo::AT_Deprecated; // "deprecated"
2612 case 'g': // 8 strings to match.
2613 switch (Name[1]) {
2614 default: break;
2615 case 'n': // 7 strings to match.
2616 if (memcmp(s1: Name.data()+2, s2: "u::", n: 3) != 0)
2617 break;
2618 switch (Name[5]) {
2619 default: break;
2620 case 'a': // 1 string to match.
2621 if (memcmp(s1: Name.data()+6, s2: "lias", n: 4) != 0)
2622 break;
2623 return AttributeCommonInfo::AT_Alias; // "gnu::alias"
2624 case 'c': // 2 strings to match.
2625 switch (Name[6]) {
2626 default: break;
2627 case 'd': // 1 string to match.
2628 if (memcmp(s1: Name.data()+7, s2: "ecl", n: 3) != 0)
2629 break;
2630 return AttributeCommonInfo::AT_CDecl; // "gnu::cdecl"
2631 case 'o': // 1 string to match.
2632 if (memcmp(s1: Name.data()+7, s2: "nst", n: 3) != 0)
2633 break;
2634 return AttributeCommonInfo::AT_Const; // "gnu::const"
2635 }
2636 break;
2637 case 'e': // 1 string to match.
2638 if (memcmp(s1: Name.data()+6, s2: "rror", n: 4) != 0)
2639 break;
2640 return AttributeCommonInfo::AT_Error; // "gnu::error"
2641 case 'i': // 1 string to match.
2642 if (memcmp(s1: Name.data()+6, s2: "func", n: 4) != 0)
2643 break;
2644 return AttributeCommonInfo::AT_IFunc; // "gnu::ifunc"
2645 case 'm': // 1 string to match.
2646 if (memcmp(s1: Name.data()+6, s2: "odel", n: 4) != 0)
2647 break;
2648 return AttributeCommonInfo::AT_CodeModel; // "gnu::model"
2649 case 'n': // 1 string to match.
2650 if (memcmp(s1: Name.data()+6, s2: "aked", n: 4) != 0)
2651 break;
2652 return AttributeCommonInfo::AT_Naked; // "gnu::naked"
2653 }
2654 break;
2655 case 's': // 1 string to match.
2656 if (memcmp(s1: Name.data()+2, s2: "l::Owner", n: 8) != 0)
2657 break;
2658 return AttributeCommonInfo::AT_Owner; // "gsl::Owner"
2659 }
2660 break;
2661 }
2662 break;
2663 case 11: // 12 strings to match.
2664 switch (Name[0]) {
2665 default: break;
2666 case 'f': // 1 string to match.
2667 if (memcmp(s1: Name.data()+1, s2: "allthrough", n: 10) != 0)
2668 break;
2669 return AttributeCommonInfo::AT_FallThrough; // "fallthrough"
2670 case 'g': // 10 strings to match.
2671 if (memcmp(s1: Name.data()+1, s2: "nu::", n: 4) != 0)
2672 break;
2673 switch (Name[5]) {
2674 default: break;
2675 case 'c': // 1 string to match.
2676 if (memcmp(s1: Name.data()+6, s2: "ommon", n: 5) != 0)
2677 break;
2678 return AttributeCommonInfo::AT_Common; // "gnu::common"
2679 case 'f': // 1 string to match.
2680 if (memcmp(s1: Name.data()+6, s2: "ormat", n: 5) != 0)
2681 break;
2682 return AttributeCommonInfo::AT_Format; // "gnu::format"
2683 case 'm': // 3 strings to match.
2684 switch (Name[6]) {
2685 default: break;
2686 case 'a': // 1 string to match.
2687 if (memcmp(s1: Name.data()+7, s2: "lloc", n: 4) != 0)
2688 break;
2689 return AttributeCommonInfo::AT_Restrict; // "gnu::malloc"
2690 case 'i': // 1 string to match.
2691 if (memcmp(s1: Name.data()+7, s2: "ps16", n: 4) != 0)
2692 break;
2693 return AttributeCommonInfo::AT_Mips16; // "gnu::mips16"
2694 case 's': // 1 string to match.
2695 if (memcmp(s1: Name.data()+7, s2: "_abi", n: 4) != 0)
2696 break;
2697 return AttributeCommonInfo::AT_MSABI; // "gnu::ms_abi"
2698 }
2699 break;
2700 case 'p': // 1 string to match.
2701 if (memcmp(s1: Name.data()+6, s2: "acked", n: 5) != 0)
2702 break;
2703 return AttributeCommonInfo::AT_Packed; // "gnu::packed"
2704 case 'r': // 1 string to match.
2705 if (memcmp(s1: Name.data()+6, s2: "etain", n: 5) != 0)
2706 break;
2707 return AttributeCommonInfo::AT_Retain; // "gnu::retain"
2708 case 's': // 1 string to match.
2709 if (memcmp(s1: Name.data()+6, s2: "ignal", n: 5) != 0)
2710 break;
2711 return AttributeCommonInfo::AT_AVRSignal; // "gnu::signal"
2712 case 't': // 1 string to match.
2713 if (memcmp(s1: Name.data()+6, s2: "arget", n: 5) != 0)
2714 break;
2715 return AttributeCommonInfo::AT_Target; // "gnu::target"
2716 case 'u': // 1 string to match.
2717 if (memcmp(s1: Name.data()+6, s2: "nused", n: 5) != 0)
2718 break;
2719 return AttributeCommonInfo::AT_Unused; // "gnu::unused"
2720 }
2721 break;
2722 case 'o': // 1 string to match.
2723 if (memcmp(s1: Name.data()+1, s2: "mp::assume", n: 10) != 0)
2724 break;
2725 return AttributeCommonInfo::AT_OMPAssume; // "omp::assume"
2726 }
2727 break;
2728 case 12: // 17 strings to match.
2729 switch (Name[0]) {
2730 default: break;
2731 case 'c': // 1 string to match.
2732 if (memcmp(s1: Name.data()+1, s2: "lang::guard", n: 11) != 0)
2733 break;
2734 return AttributeCommonInfo::AT_CFGuard; // "clang::guard"
2735 case 'g': // 15 strings to match.
2736 switch (Name[1]) {
2737 default: break;
2738 case 'n': // 14 strings to match.
2739 if (memcmp(s1: Name.data()+2, s2: "u::", n: 3) != 0)
2740 break;
2741 switch (Name[5]) {
2742 default: break;
2743 case '_': // 1 string to match.
2744 if (memcmp(s1: Name.data()+6, s2: "_const", n: 6) != 0)
2745 break;
2746 return AttributeCommonInfo::AT_Const; // "gnu::__const"
2747 case 'a': // 2 strings to match.
2748 switch (Name[6]) {
2749 default: break;
2750 case 'b': // 1 string to match.
2751 if (memcmp(s1: Name.data()+7, s2: "i_tag", n: 5) != 0)
2752 break;
2753 return AttributeCommonInfo::AT_AbiTag; // "gnu::abi_tag"
2754 case 'l': // 1 string to match.
2755 if (memcmp(s1: Name.data()+7, s2: "igned", n: 5) != 0)
2756 break;
2757 return AttributeCommonInfo::AT_Aligned; // "gnu::aligned"
2758 }
2759 break;
2760 case 'c': // 1 string to match.
2761 if (memcmp(s1: Name.data()+6, s2: "leanup", n: 6) != 0)
2762 break;
2763 return AttributeCommonInfo::AT_Cleanup; // "gnu::cleanup"
2764 case 'f': // 1 string to match.
2765 if (memcmp(s1: Name.data()+6, s2: "latten", n: 6) != 0)
2766 break;
2767 return AttributeCommonInfo::AT_Flatten; // "gnu::flatten"
2768 case 'n': // 3 strings to match.
2769 if (Name[6] != 'o')
2770 break;
2771 switch (Name[7]) {
2772 default: break;
2773 case 'd': // 1 string to match.
2774 if (memcmp(s1: Name.data()+8, s2: "ebug", n: 4) != 0)
2775 break;
2776 return AttributeCommonInfo::AT_NoDebug; // "gnu::nodebug"
2777 case 'n': // 1 string to match.
2778 if (memcmp(s1: Name.data()+8, s2: "null", n: 4) != 0)
2779 break;
2780 return AttributeCommonInfo::AT_NonNull; // "gnu::nonnull"
2781 case 't': // 1 string to match.
2782 if (memcmp(s1: Name.data()+8, s2: "hrow", n: 4) != 0)
2783 break;
2784 return AttributeCommonInfo::AT_NoThrow; // "gnu::nothrow"
2785 }
2786 break;
2787 case 'r': // 2 strings to match.
2788 if (memcmp(s1: Name.data()+6, s2: "eg", n: 2) != 0)
2789 break;
2790 switch (Name[8]) {
2791 default: break;
2792 case 'c': // 1 string to match.
2793 if (memcmp(s1: Name.data()+9, s2: "all", n: 3) != 0)
2794 break;
2795 return AttributeCommonInfo::AT_RegCall; // "gnu::regcall"
2796 case 'p': // 1 string to match.
2797 if (memcmp(s1: Name.data()+9, s2: "arm", n: 3) != 0)
2798 break;
2799 return AttributeCommonInfo::AT_Regparm; // "gnu::regparm"
2800 }
2801 break;
2802 case 's': // 2 strings to match.
2803 switch (Name[6]) {
2804 default: break;
2805 case 'e': // 1 string to match.
2806 if (memcmp(s1: Name.data()+7, s2: "ction", n: 5) != 0)
2807 break;
2808 return AttributeCommonInfo::AT_Section; // "gnu::section"
2809 case 't': // 1 string to match.
2810 if (memcmp(s1: Name.data()+7, s2: "dcall", n: 5) != 0)
2811 break;
2812 return AttributeCommonInfo::AT_StdCall; // "gnu::stdcall"
2813 }
2814 break;
2815 case 'w': // 2 strings to match.
2816 switch (Name[6]) {
2817 default: break;
2818 case 'a': // 1 string to match.
2819 if (memcmp(s1: Name.data()+7, s2: "rning", n: 5) != 0)
2820 break;
2821 return AttributeCommonInfo::AT_Error; // "gnu::warning"
2822 case 'e': // 1 string to match.
2823 if (memcmp(s1: Name.data()+7, s2: "akref", n: 5) != 0)
2824 break;
2825 return AttributeCommonInfo::AT_WeakRef; // "gnu::weakref"
2826 }
2827 break;
2828 }
2829 break;
2830 case 's': // 1 string to match.
2831 if (memcmp(s1: Name.data()+2, s2: "l::Pointer", n: 10) != 0)
2832 break;
2833 return AttributeCommonInfo::AT_Pointer; // "gsl::Pointer"
2834 }
2835 break;
2836 case 'm': // 1 string to match.
2837 if (memcmp(s1: Name.data()+1, s2: "aybe_unused", n: 11) != 0)
2838 break;
2839 return AttributeCommonInfo::AT_Unused; // "maybe_unused"
2840 }
2841 break;
2842 case 13: // 12 strings to match.
2843 switch (Name[0]) {
2844 default: break;
2845 case 'c': // 3 strings to match.
2846 if (memcmp(s1: Name.data()+1, s2: "lang::", n: 6) != 0)
2847 break;
2848 switch (Name[7]) {
2849 default: break;
2850 case 'a': // 1 string to match.
2851 if (memcmp(s1: Name.data()+8, s2: "ssume", n: 5) != 0)
2852 break;
2853 return AttributeCommonInfo::AT_CXXAssume; // "clang::assume"
2854 case 'b': // 1 string to match.
2855 if (memcmp(s1: Name.data()+8, s2: "locks", n: 5) != 0)
2856 break;
2857 return AttributeCommonInfo::AT_Blocks; // "clang::blocks"
2858 case 'p': // 1 string to match.
2859 if (memcmp(s1: Name.data()+8, s2: "ascal", n: 5) != 0)
2860 break;
2861 return AttributeCommonInfo::AT_Pascal; // "clang::pascal"
2862 }
2863 break;
2864 case 'g': // 9 strings to match.
2865 switch (Name[1]) {
2866 default: break;
2867 case 'n': // 8 strings to match.
2868 if (memcmp(s1: Name.data()+2, s2: "u::", n: 3) != 0)
2869 break;
2870 switch (Name[5]) {
2871 default: break;
2872 case 'f': // 1 string to match.
2873 if (memcmp(s1: Name.data()+6, s2: "astcall", n: 7) != 0)
2874 break;
2875 return AttributeCommonInfo::AT_FastCall; // "gnu::fastcall"
2876 case 'n': // 4 strings to match.
2877 if (Name[6] != 'o')
2878 break;
2879 switch (Name[7]) {
2880 default: break;
2881 case 'c': // 1 string to match.
2882 if (memcmp(s1: Name.data()+8, s2: "ommon", n: 5) != 0)
2883 break;
2884 return AttributeCommonInfo::AT_NoCommon; // "gnu::nocommon"
2885 case 'i': // 1 string to match.
2886 if (memcmp(s1: Name.data()+8, s2: "nline", n: 5) != 0)
2887 break;
2888 return AttributeCommonInfo::AT_NoInline; // "gnu::noinline"
2889 case 'm': // 1 string to match.
2890 if (memcmp(s1: Name.data()+8, s2: "ips16", n: 5) != 0)
2891 break;
2892 return AttributeCommonInfo::AT_NoMips16; // "gnu::nomips16"
2893 case 'r': // 1 string to match.
2894 if (memcmp(s1: Name.data()+8, s2: "eturn", n: 5) != 0)
2895 break;
2896 return AttributeCommonInfo::AT_NoReturn; // "gnu::noreturn"
2897 }
2898 break;
2899 case 's': // 2 strings to match.
2900 switch (Name[6]) {
2901 default: break;
2902 case 'e': // 1 string to match.
2903 if (memcmp(s1: Name.data()+7, s2: "ntinel", n: 6) != 0)
2904 break;
2905 return AttributeCommonInfo::AT_Sentinel; // "gnu::sentinel"
2906 case 'y': // 1 string to match.
2907 if (memcmp(s1: Name.data()+7, s2: "sv_abi", n: 6) != 0)
2908 break;
2909 return AttributeCommonInfo::AT_SysVABI; // "gnu::sysv_abi"
2910 }
2911 break;
2912 case 't': // 1 string to match.
2913 if (memcmp(s1: Name.data()+6, s2: "hiscall", n: 7) != 0)
2914 break;
2915 return AttributeCommonInfo::AT_ThisCall; // "gnu::thiscall"
2916 }
2917 break;
2918 case 's': // 1 string to match.
2919 if (memcmp(s1: Name.data()+2, s2: "l::suppress", n: 11) != 0)
2920 break;
2921 return AttributeCommonInfo::AT_Suppress; // "gsl::suppress"
2922 }
2923 break;
2924 }
2925 break;
2926 case 14: // 15 strings to match.
2927 switch (Name[0]) {
2928 default: break;
2929 case 'c': // 5 strings to match.
2930 if (memcmp(s1: Name.data()+1, s2: "lang::", n: 6) != 0)
2931 break;
2932 switch (Name[7]) {
2933 default: break;
2934 case 'm': // 1 string to match.
2935 if (memcmp(s1: Name.data()+8, s2: "insize", n: 6) != 0)
2936 break;
2937 return AttributeCommonInfo::AT_MinSize; // "clang::minsize"
2938 case 'n': // 2 strings to match.
2939 if (Name[8] != 'o')
2940 break;
2941 switch (Name[9]) {
2942 default: break;
2943 case 'd': // 1 string to match.
2944 if (memcmp(s1: Name.data()+10, s2: "eref", n: 4) != 0)
2945 break;
2946 return AttributeCommonInfo::AT_NoDeref; // "clang::noderef"
2947 case 'm': // 1 string to match.
2948 if (memcmp(s1: Name.data()+10, s2: "erge", n: 4) != 0)
2949 break;
2950 return AttributeCommonInfo::AT_NoMerge; // "clang::nomerge"
2951 }
2952 break;
2953 case 'o': // 2 strings to match.
2954 switch (Name[8]) {
2955 default: break;
2956 case 'b': // 1 string to match.
2957 if (memcmp(s1: Name.data()+9, s2: "jc_gc", n: 5) != 0)
2958 break;
2959 return AttributeCommonInfo::AT_ObjCGC; // "clang::objc_gc"
2960 case 'p': // 1 string to match.
2961 if (memcmp(s1: Name.data()+9, s2: "tnone", n: 5) != 0)
2962 break;
2963 return AttributeCommonInfo::AT_OptimizeNone; // "clang::optnone"
2964 }
2965 break;
2966 }
2967 break;
2968 case 'g': // 9 strings to match.
2969 if (memcmp(s1: Name.data()+1, s2: "nu::", n: 4) != 0)
2970 break;
2971 switch (Name[5]) {
2972 default: break;
2973 case 'd': // 2 strings to match.
2974 if (memcmp(s1: Name.data()+6, s2: "ll", n: 2) != 0)
2975 break;
2976 switch (Name[8]) {
2977 default: break;
2978 case 'e': // 1 string to match.
2979 if (memcmp(s1: Name.data()+9, s2: "xport", n: 5) != 0)
2980 break;
2981 return AttributeCommonInfo::AT_DLLExport; // "gnu::dllexport"
2982 case 'i': // 1 string to match.
2983 if (memcmp(s1: Name.data()+9, s2: "mport", n: 5) != 0)
2984 break;
2985 return AttributeCommonInfo::AT_DLLImport; // "gnu::dllimport"
2986 }
2987 break;
2988 case 'i': // 1 string to match.
2989 if (memcmp(s1: Name.data()+6, s2: "nterrupt", n: 8) != 0)
2990 break;
2991 return AttributeCommonInfo::AT_Interrupt; // "gnu::interrupt"
2992 case 'l': // 1 string to match.
2993 if (memcmp(s1: Name.data()+6, s2: "ong_call", n: 8) != 0)
2994 break;
2995 return AttributeCommonInfo::AT_MipsLongCall; // "gnu::long_call"
2996 case 'm': // 3 strings to match.
2997 switch (Name[6]) {
2998 default: break;
2999 case 'a': // 1 string to match.
3000 if (memcmp(s1: Name.data()+7, s2: "y_alias", n: 7) != 0)
3001 break;
3002 return AttributeCommonInfo::AT_MayAlias; // "gnu::may_alias"
3003 case 'i': // 1 string to match.
3004 if (memcmp(s1: Name.data()+7, s2: "cromips", n: 7) != 0)
3005 break;
3006 return AttributeCommonInfo::AT_MicroMips; // "gnu::micromips"
3007 case 's': // 1 string to match.
3008 if (memcmp(s1: Name.data()+7, s2: "_struct", n: 7) != 0)
3009 break;
3010 return AttributeCommonInfo::AT_MSStruct; // "gnu::ms_struct"
3011 }
3012 break;
3013 case 's': // 1 string to match.
3014 if (memcmp(s1: Name.data()+6, s2: "electany", n: 8) != 0)
3015 break;
3016 return AttributeCommonInfo::AT_SelectAny; // "gnu::selectany"
3017 case 't': // 1 string to match.
3018 if (memcmp(s1: Name.data()+6, s2: "ls_model", n: 8) != 0)
3019 break;
3020 return AttributeCommonInfo::AT_TLSModel; // "gnu::tls_model"
3021 }
3022 break;
3023 case 'm': // 1 string to match.
3024 if (memcmp(s1: Name.data()+1, s2: "svc::noinline", n: 13) != 0)
3025 break;
3026 return AttributeCommonInfo::AT_NoInline; // "msvc::noinline"
3027 }
3028 break;
3029 case 15: // 22 strings to match.
3030 switch (Name[0]) {
3031 default: break;
3032 case 'c': // 12 strings to match.
3033 if (memcmp(s1: Name.data()+1, s2: "lang::", n: 6) != 0)
3034 break;
3035 switch (Name[7]) {
3036 default: break;
3037 case 'N': // 1 string to match.
3038 if (memcmp(s1: Name.data()+8, s2: "SObject", n: 7) != 0)
3039 break;
3040 return AttributeCommonInfo::AT_ObjCNSObject; // "clang::NSObject"
3041 case 'a': // 1 string to match.
3042 if (memcmp(s1: Name.data()+8, s2: "nnotate", n: 7) != 0)
3043 break;
3044 return AttributeCommonInfo::AT_Annotate; // "clang::annotate"
3045 case 'b': // 1 string to match.
3046 if (memcmp(s1: Name.data()+8, s2: "locking", n: 7) != 0)
3047 break;
3048 return AttributeCommonInfo::AT_Blocking; // "clang::blocking"
3049 case 'c': // 1 string to match.
3050 if (memcmp(s1: Name.data()+8, s2: "allback", n: 7) != 0)
3051 break;
3052 return AttributeCommonInfo::AT_Callback; // "clang::callback"
3053 case 'i': // 2 strings to match.
3054 if (Name[8] != 'b')
3055 break;
3056 switch (Name[9]) {
3057 default: break;
3058 case 'a': // 1 string to match.
3059 if (memcmp(s1: Name.data()+10, s2: "ction", n: 5) != 0)
3060 break;
3061 return AttributeCommonInfo::AT_IBAction; // "clang::ibaction"
3062 case 'o': // 1 string to match.
3063 if (memcmp(s1: Name.data()+10, s2: "utlet", n: 5) != 0)
3064 break;
3065 return AttributeCommonInfo::AT_IBOutlet; // "clang::iboutlet"
3066 }
3067 break;
3068 case 'm': // 2 strings to match.
3069 switch (Name[8]) {
3070 default: break;
3071 case '6': // 1 string to match.
3072 if (memcmp(s1: Name.data()+9, s2: "8k_rtd", n: 6) != 0)
3073 break;
3074 return AttributeCommonInfo::AT_M68kRTD; // "clang::m68k_rtd"
3075 case 'u': // 1 string to match.
3076 if (memcmp(s1: Name.data()+9, s2: "sttail", n: 6) != 0)
3077 break;
3078 return AttributeCommonInfo::AT_MustTail; // "clang::musttail"
3079 }
3080 break;
3081 case 'n': // 2 strings to match.
3082 if (Name[8] != 'o')
3083 break;
3084 switch (Name[9]) {
3085 default: break;
3086 case 'e': // 1 string to match.
3087 if (memcmp(s1: Name.data()+10, s2: "scape", n: 5) != 0)
3088 break;
3089 return AttributeCommonInfo::AT_NoEscape; // "clang::noescape"
3090 case 'i': // 1 string to match.
3091 if (memcmp(s1: Name.data()+10, s2: "nline", n: 5) != 0)
3092 break;
3093 return AttributeCommonInfo::AT_NoInline; // "clang::noinline"
3094 }
3095 break;
3096 case 's': // 2 strings to match.
3097 switch (Name[8]) {
3098 default: break;
3099 case 'i': // 1 string to match.
3100 if (memcmp(s1: Name.data()+9, s2: "zed_by", n: 6) != 0)
3101 break;
3102 return AttributeCommonInfo::AT_SizedBy; // "clang::sized_by"
3103 case 'u': // 1 string to match.
3104 if (memcmp(s1: Name.data()+9, s2: "ppress", n: 6) != 0)
3105 break;
3106 return AttributeCommonInfo::AT_Suppress; // "clang::suppress"
3107 }
3108 break;
3109 }
3110 break;
3111 case 'g': // 9 strings to match.
3112 if (memcmp(s1: Name.data()+1, s2: "nu::", n: 4) != 0)
3113 break;
3114 switch (Name[5]) {
3115 default: break;
3116 case 'a': // 2 strings to match.
3117 switch (Name[6]) {
3118 default: break;
3119 case 'l': // 1 string to match.
3120 if (memcmp(s1: Name.data()+7, s2: "loc_size", n: 8) != 0)
3121 break;
3122 return AttributeCommonInfo::AT_AllocSize; // "gnu::alloc_size"
3123 case 'r': // 1 string to match.
3124 if (memcmp(s1: Name.data()+7, s2: "tificial", n: 8) != 0)
3125 break;
3126 return AttributeCommonInfo::AT_Artificial; // "gnu::artificial"
3127 }
3128 break;
3129 case 'd': // 2 strings to match.
3130 if (Name[6] != 'e')
3131 break;
3132 switch (Name[7]) {
3133 default: break;
3134 case 'p': // 1 string to match.
3135 if (memcmp(s1: Name.data()+8, s2: "recated", n: 7) != 0)
3136 break;
3137 return AttributeCommonInfo::AT_Deprecated; // "gnu::deprecated"
3138 case 's': // 1 string to match.
3139 if (memcmp(s1: Name.data()+8, s2: "tructor", n: 7) != 0)
3140 break;
3141 return AttributeCommonInfo::AT_Destructor; // "gnu::destructor"
3142 }
3143 break;
3144 case 'f': // 1 string to match.
3145 if (memcmp(s1: Name.data()+6, s2: "ormat_arg", n: 9) != 0)
3146 break;
3147 return AttributeCommonInfo::AT_FormatArg; // "gnu::format_arg"
3148 case 'g': // 1 string to match.
3149 if (memcmp(s1: Name.data()+6, s2: "nu_inline", n: 9) != 0)
3150 break;
3151 return AttributeCommonInfo::AT_GNUInline; // "gnu::gnu_inline"
3152 case 'n': // 1 string to match.
3153 if (memcmp(s1: Name.data()+6, s2: "ocf_check", n: 9) != 0)
3154 break;
3155 return AttributeCommonInfo::AT_AnyX86NoCfCheck; // "gnu::nocf_check"
3156 case 's': // 1 string to match.
3157 if (memcmp(s1: Name.data()+6, s2: "hort_call", n: 9) != 0)
3158 break;
3159 return AttributeCommonInfo::AT_MipsShortCall; // "gnu::short_call"
3160 case 'v': // 1 string to match.
3161 if (memcmp(s1: Name.data()+6, s2: "isibility", n: 9) != 0)
3162 break;
3163 return AttributeCommonInfo::AT_Visibility; // "gnu::visibility"
3164 }
3165 break;
3166 case 'm': // 1 string to match.
3167 if (memcmp(s1: Name.data()+1, s2: "svc::constexpr", n: 14) != 0)
3168 break;
3169 return AttributeCommonInfo::AT_MSConstexpr; // "msvc::constexpr"
3170 }
3171 break;
3172 case 16: // 11 strings to match.
3173 switch (Name[0]) {
3174 default: break;
3175 case 'c': // 4 strings to match.
3176 if (memcmp(s1: Name.data()+1, s2: "lang::", n: 6) != 0)
3177 break;
3178 switch (Name[7]) {
3179 default: break;
3180 case 'f': // 1 string to match.
3181 if (memcmp(s1: Name.data()+8, s2: "lag_enum", n: 8) != 0)
3182 break;
3183 return AttributeCommonInfo::AT_FlagEnum; // "clang::flag_enum"
3184 case 'n': // 1 string to match.
3185 if (memcmp(s1: Name.data()+8, s2: "ouwtable", n: 8) != 0)
3186 break;
3187 return AttributeCommonInfo::AT_NoUwtable; // "clang::nouwtable"
3188 case 's': // 1 string to match.
3189 if (memcmp(s1: Name.data()+8, s2: "wiftcall", n: 8) != 0)
3190 break;
3191 return AttributeCommonInfo::AT_SwiftCall; // "clang::swiftcall"
3192 case 'v': // 1 string to match.
3193 if (memcmp(s1: Name.data()+8, s2: "ecreturn", n: 8) != 0)
3194 break;
3195 return AttributeCommonInfo::AT_VecReturn; // "clang::vecreturn"
3196 }
3197 break;
3198 case 'g': // 6 strings to match.
3199 if (memcmp(s1: Name.data()+1, s2: "nu::", n: 4) != 0)
3200 break;
3201 switch (Name[5]) {
3202 default: break;
3203 case 'a': // 1 string to match.
3204 if (memcmp(s1: Name.data()+6, s2: "lloc_align", n: 10) != 0)
3205 break;
3206 return AttributeCommonInfo::AT_AllocAlign; // "gnu::alloc_align"
3207 case 'c': // 1 string to match.
3208 if (memcmp(s1: Name.data()+6, s2: "onstructor", n: 10) != 0)
3209 break;
3210 return AttributeCommonInfo::AT_Constructor; // "gnu::constructor"
3211 case 'f': // 1 string to match.
3212 if (memcmp(s1: Name.data()+6, s2: "allthrough", n: 10) != 0)
3213 break;
3214 return AttributeCommonInfo::AT_FallThrough; // "gnu::fallthrough"
3215 case 'n': // 1 string to match.
3216 if (memcmp(s1: Name.data()+6, s2: "omicromips", n: 10) != 0)
3217 break;
3218 return AttributeCommonInfo::AT_NoMicroMips; // "gnu::nomicromips"
3219 case 'v': // 1 string to match.
3220 if (memcmp(s1: Name.data()+6, s2: "ector_size", n: 10) != 0)
3221 break;
3222 return AttributeCommonInfo::AT_VectorSize; // "gnu::vector_size"
3223 case 'w': // 1 string to match.
3224 if (memcmp(s1: Name.data()+6, s2: "arn_unused", n: 10) != 0)
3225 break;
3226 return AttributeCommonInfo::AT_WarnUnused; // "gnu::warn_unused"
3227 }
3228 break;
3229 case 'r': // 1 string to match.
3230 if (memcmp(s1: Name.data()+1, s2: "iscv::vector_cc", n: 15) != 0)
3231 break;
3232 return AttributeCommonInfo::AT_RISCVVectorCC; // "riscv::vector_cc"
3233 }
3234 break;
3235 case 17: // 11 strings to match.
3236 switch (Name[0]) {
3237 default: break;
3238 case 'c': // 10 strings to match.
3239 if (memcmp(s1: Name.data()+1, s2: "lang::", n: 6) != 0)
3240 break;
3241 switch (Name[7]) {
3242 default: break;
3243 case 'a': // 1 string to match.
3244 if (memcmp(s1: Name.data()+8, s2: "llocating", n: 9) != 0)
3245 break;
3246 return AttributeCommonInfo::AT_Allocating; // "clang::allocating"
3247 case 'c': // 5 strings to match.
3248 switch (Name[8]) {
3249 default: break;
3250 case 'a': // 1 string to match.
3251 if (memcmp(s1: Name.data()+9, s2: "pability", n: 8) != 0)
3252 break;
3253 return AttributeCommonInfo::AT_Capability; // "clang::capability"
3254 case 'o': // 4 strings to match.
3255 switch (Name[9]) {
3256 default: break;
3257 case 'd': // 1 string to match.
3258 if (memcmp(s1: Name.data()+10, s2: "e_align", n: 7) != 0)
3259 break;
3260 return AttributeCommonInfo::AT_CodeAlign; // "clang::code_align"
3261 case 'n': // 2 strings to match.
3262 switch (Name[10]) {
3263 default: break;
3264 case 's': // 1 string to match.
3265 if (memcmp(s1: Name.data()+11, s2: "umable", n: 6) != 0)
3266 break;
3267 return AttributeCommonInfo::AT_Consumable; // "clang::consumable"
3268 case 'v': // 1 string to match.
3269 if (memcmp(s1: Name.data()+11, s2: "ergent", n: 6) != 0)
3270 break;
3271 return AttributeCommonInfo::AT_Convergent; // "clang::convergent"
3272 }
3273 break;
3274 case 'u': // 1 string to match.
3275 if (memcmp(s1: Name.data()+10, s2: "nted_by", n: 7) != 0)
3276 break;
3277 return AttributeCommonInfo::AT_CountedBy; // "clang::counted_by"
3278 }
3279 break;
3280 }
3281 break;
3282 case 'n': // 2 strings to match.
3283 if (memcmp(s1: Name.data()+8, s2: "o_", n: 2) != 0)
3284 break;
3285 switch (Name[10]) {
3286 default: break;
3287 case 'b': // 1 string to match.
3288 if (memcmp(s1: Name.data()+11, s2: "uiltin", n: 6) != 0)
3289 break;
3290 return AttributeCommonInfo::AT_NoBuiltin; // "clang::no_builtin"
3291 case 'd': // 1 string to match.
3292 if (memcmp(s1: Name.data()+11, s2: "estroy", n: 6) != 0)
3293 break;
3294 return AttributeCommonInfo::AT_NoDestroy; // "clang::no_destroy"
3295 }
3296 break;
3297 case 'u': // 1 string to match.
3298 if (memcmp(s1: Name.data()+8, s2: "se_handle", n: 9) != 0)
3299 break;
3300 return AttributeCommonInfo::AT_UseHandle; // "clang::use_handle"
3301 case 'v': // 1 string to match.
3302 if (memcmp(s1: Name.data()+8, s2: "ectorcall", n: 9) != 0)
3303 break;
3304 return AttributeCommonInfo::AT_VectorCall; // "clang::vectorcall"
3305 }
3306 break;
3307 case 'n': // 1 string to match.
3308 if (memcmp(s1: Name.data()+1, s2: "o_unique_address", n: 16) != 0)
3309 break;
3310 return AttributeCommonInfo::AT_NoUniqueAddress; // "no_unique_address"
3311 }
3312 break;
3313 case 18: // 26 strings to match.
3314 switch (Name[0]) {
3315 default: break;
3316 case 'c': // 22 strings to match.
3317 switch (Name[1]) {
3318 default: break;
3319 case 'a': // 1 string to match.
3320 if (memcmp(s1: Name.data()+2, s2: "rries_dependency", n: 16) != 0)
3321 break;
3322 return AttributeCommonInfo::AT_CarriesDependency; // "carries_dependency"
3323 case 'l': // 21 strings to match.
3324 if (memcmp(s1: Name.data()+2, s2: "ang::", n: 5) != 0)
3325 break;
3326 switch (Name[7]) {
3327 default: break;
3328 case 'c': // 2 strings to match.
3329 switch (Name[8]) {
3330 default: break;
3331 case 'a': // 1 string to match.
3332 if (memcmp(s1: Name.data()+9, s2: "lled_once", n: 9) != 0)
3333 break;
3334 return AttributeCommonInfo::AT_CalledOnce; // "clang::called_once"
3335 case 'f': // 1 string to match.
3336 if (memcmp(s1: Name.data()+9, s2: "_consumed", n: 9) != 0)
3337 break;
3338 return AttributeCommonInfo::AT_CFConsumed; // "clang::cf_consumed"
3339 }
3340 break;
3341 case 'e': // 2 strings to match.
3342 switch (Name[8]) {
3343 default: break;
3344 case 'n': // 1 string to match.
3345 if (memcmp(s1: Name.data()+9, s2: "force_tcb", n: 9) != 0)
3346 break;
3347 return AttributeCommonInfo::AT_EnforceTCB; // "clang::enforce_tcb"
3348 case 'x': // 1 string to match.
3349 if (memcmp(s1: Name.data()+9, s2: "port_name", n: 9) != 0)
3350 break;
3351 return AttributeCommonInfo::AT_WebAssemblyExportName; // "clang::export_name"
3352 }
3353 break;
3354 case 'f': // 1 string to match.
3355 if (memcmp(s1: Name.data()+8, s2: "allthrough", n: 10) != 0)
3356 break;
3357 return AttributeCommonInfo::AT_FallThrough; // "clang::fallthrough"
3358 case 'g': // 1 string to match.
3359 if (memcmp(s1: Name.data()+8, s2: "uarded_var", n: 10) != 0)
3360 break;
3361 return AttributeCommonInfo::AT_GuardedVar; // "clang::guarded_var"
3362 case 'i': // 1 string to match.
3363 if (memcmp(s1: Name.data()+8, s2: "mport_name", n: 10) != 0)
3364 break;
3365 return AttributeCommonInfo::AT_WebAssemblyImportName; // "clang::import_name"
3366 case 'm': // 2 strings to match.
3367 if (Name[8] != 'a')
3368 break;
3369 switch (Name[9]) {
3370 default: break;
3371 case 't': // 1 string to match.
3372 if (memcmp(s1: Name.data()+10, s2: "rix_type", n: 8) != 0)
3373 break;
3374 return AttributeCommonInfo::AT_MatrixType; // "clang::matrix_type"
3375 case 'y': // 1 string to match.
3376 if (memcmp(s1: Name.data()+10, s2: "be_undef", n: 8) != 0)
3377 break;
3378 return AttributeCommonInfo::AT_MaybeUndef; // "clang::maybe_undef"
3379 }
3380 break;
3381 case 'n': // 4 strings to match.
3382 switch (Name[8]) {
3383 default: break;
3384 case 'o': // 3 strings to match.
3385 switch (Name[9]) {
3386 default: break;
3387 case '_': // 1 string to match.
3388 if (memcmp(s1: Name.data()+10, s2: "sanitize", n: 8) != 0)
3389 break;
3390 return AttributeCommonInfo::AT_NoSanitize; // "clang::no_sanitize"
3391 case 'd': // 1 string to match.
3392 if (memcmp(s1: Name.data()+10, s2: "uplicate", n: 8) != 0)
3393 break;
3394 return AttributeCommonInfo::AT_NoDuplicate; // "clang::noduplicate"
3395 case 'n': // 1 string to match.
3396 if (memcmp(s1: Name.data()+10, s2: "blocking", n: 8) != 0)
3397 break;
3398 return AttributeCommonInfo::AT_NonBlocking; // "clang::nonblocking"
3399 }
3400 break;
3401 case 's': // 1 string to match.
3402 if (memcmp(s1: Name.data()+9, s2: "_consumed", n: 9) != 0)
3403 break;
3404 return AttributeCommonInfo::AT_NSConsumed; // "clang::ns_consumed"
3405 }
3406 break;
3407 case 'o': // 3 strings to match.
3408 switch (Name[8]) {
3409 default: break;
3410 case 'b': // 2 strings to match.
3411 if (memcmp(s1: Name.data()+9, s2: "jc_", n: 3) != 0)
3412 break;
3413 switch (Name[12]) {
3414 default: break;
3415 case 'b': // 1 string to match.
3416 if (memcmp(s1: Name.data()+13, s2: "ridge", n: 5) != 0)
3417 break;
3418 return AttributeCommonInfo::AT_ObjCBridge; // "clang::objc_bridge"
3419 case 'd': // 1 string to match.
3420 if (memcmp(s1: Name.data()+13, s2: "irect", n: 5) != 0)
3421 break;
3422 return AttributeCommonInfo::AT_ObjCDirect; // "clang::objc_direct"
3423 }
3424 break;
3425 case 's': // 1 string to match.
3426 if (memcmp(s1: Name.data()+9, s2: "_consumed", n: 9) != 0)
3427 break;
3428 return AttributeCommonInfo::AT_OSConsumed; // "clang::os_consumed"
3429 }
3430 break;
3431 case 's': // 2 strings to match.
3432 switch (Name[8]) {
3433 default: break;
3434 case 'w': // 1 string to match.
3435 if (memcmp(s1: Name.data()+9, s2: "ift_async", n: 9) != 0)
3436 break;
3437 return AttributeCommonInfo::AT_SwiftAsync; // "clang::swift_async"
3438 case 'y': // 1 string to match.
3439 if (memcmp(s1: Name.data()+9, s2: "cl_kernel", n: 9) != 0)
3440 break;
3441 return AttributeCommonInfo::AT_SYCLKernel; // "clang::sycl_kernel"
3442 }
3443 break;
3444 case 't': // 1 string to match.
3445 if (memcmp(s1: Name.data()+8, s2: "rivial_abi", n: 10) != 0)
3446 break;
3447 return AttributeCommonInfo::AT_TrivialABI; // "clang::trivial_abi"
3448 case 'u': // 1 string to match.
3449 if (memcmp(s1: Name.data()+8, s2: "navailable", n: 10) != 0)
3450 break;
3451 return AttributeCommonInfo::AT_Unavailable; // "clang::unavailable"
3452 case 'w': // 1 string to match.
3453 if (memcmp(s1: Name.data()+8, s2: "eak_import", n: 10) != 0)
3454 break;
3455 return AttributeCommonInfo::AT_WeakImport; // "clang::weak_import"
3456 }
3457 break;
3458 }
3459 break;
3460 case 'g': // 4 strings to match.
3461 if (memcmp(s1: Name.data()+1, s2: "nu::", n: 4) != 0)
3462 break;
3463 switch (Name[5]) {
3464 default: break;
3465 case 'a': // 1 string to match.
3466 if (memcmp(s1: Name.data()+6, s2: "lways_inline", n: 12) != 0)
3467 break;
3468 return AttributeCommonInfo::AT_AlwaysInline; // "gnu::always_inline"
3469 case 'i': // 1 string to match.
3470 if (memcmp(s1: Name.data()+6, s2: "nit_priority", n: 12) != 0)
3471 break;
3472 return AttributeCommonInfo::AT_InitPriority; // "gnu::init_priority"
3473 case 'r': // 1 string to match.
3474 if (memcmp(s1: Name.data()+6, s2: "eturns_twice", n: 12) != 0)
3475 break;
3476 return AttributeCommonInfo::AT_ReturnsTwice; // "gnu::returns_twice"
3477 case 't': // 1 string to match.
3478 if (memcmp(s1: Name.data()+6, s2: "arget_clones", n: 12) != 0)
3479 break;
3480 return AttributeCommonInfo::AT_TargetClones; // "gnu::target_clones"
3481 }
3482 break;
3483 }
3484 break;
3485 case 19: // 14 strings to match.
3486 switch (Name[0]) {
3487 default: break;
3488 case 'c': // 11 strings to match.
3489 if (memcmp(s1: Name.data()+1, s2: "lang::", n: 6) != 0)
3490 break;
3491 switch (Name[7]) {
3492 default: break;
3493 case 'a': // 1 string to match.
3494 if (memcmp(s1: Name.data()+8, s2: "vailability", n: 11) != 0)
3495 break;
3496 return AttributeCommonInfo::AT_Availability; // "clang::availability"
3497 case 'b': // 2 strings to match.
3498 if (memcmp(s1: Name.data()+8, s2: "tf_", n: 3) != 0)
3499 break;
3500 switch (Name[11]) {
3501 default: break;
3502 case 'd': // 1 string to match.
3503 if (memcmp(s1: Name.data()+12, s2: "ecl_tag", n: 7) != 0)
3504 break;
3505 return AttributeCommonInfo::AT_BTFDeclTag; // "clang::btf_decl_tag"
3506 case 't': // 1 string to match.
3507 if (memcmp(s1: Name.data()+12, s2: "ype_tag", n: 7) != 0)
3508 break;
3509 return AttributeCommonInfo::AT_BTFTypeTag; // "clang::btf_type_tag"
3510 }
3511 break;
3512 case 'c': // 3 strings to match.
3513 switch (Name[8]) {
3514 default: break;
3515 case 'o': // 1 string to match.
3516 if (memcmp(s1: Name.data()+9, s2: "ro_wrapper", n: 10) != 0)
3517 break;
3518 return AttributeCommonInfo::AT_CoroWrapper; // "clang::coro_wrapper"
3519 case 'p': // 2 strings to match.
3520 if (memcmp(s1: Name.data()+9, s2: "u_", n: 2) != 0)
3521 break;
3522 switch (Name[11]) {
3523 default: break;
3524 case 'd': // 1 string to match.
3525 if (memcmp(s1: Name.data()+12, s2: "ispatch", n: 7) != 0)
3526 break;
3527 return AttributeCommonInfo::AT_CPUDispatch; // "clang::cpu_dispatch"
3528 case 's': // 1 string to match.
3529 if (memcmp(s1: Name.data()+12, s2: "pecific", n: 7) != 0)
3530 break;
3531 return AttributeCommonInfo::AT_CPUSpecific; // "clang::cpu_specific"
3532 }
3533 break;
3534 }
3535 break;
3536 case 'n': // 1 string to match.
3537 if (memcmp(s1: Name.data()+8, s2: "vptx_kernel", n: 11) != 0)
3538 break;
3539 return AttributeCommonInfo::AT_NVPTXKernel; // "clang::nvptx_kernel"
3540 case 'o': // 3 strings to match.
3541 switch (Name[8]) {
3542 default: break;
3543 case 'b': // 1 string to match.
3544 if (memcmp(s1: Name.data()+9, s2: "jc_boxable", n: 10) != 0)
3545 break;
3546 return AttributeCommonInfo::AT_ObjCBoxable; // "clang::objc_boxable"
3547 case 'p': // 1 string to match.
3548 if (memcmp(s1: Name.data()+9, s2: "encl_local", n: 10) != 0)
3549 break;
3550 return AttributeCommonInfo::AT_OpenCLLocalAddressSpace; // "clang::opencl_local"
3551 case 'v': // 1 string to match.
3552 if (memcmp(s1: Name.data()+9, s2: "erloadable", n: 10) != 0)
3553 break;
3554 return AttributeCommonInfo::AT_Overloadable; // "clang::overloadable"
3555 }
3556 break;
3557 case 'p': // 1 string to match.
3558 if (memcmp(s1: Name.data()+8, s2: "reserve_all", n: 11) != 0)
3559 break;
3560 return AttributeCommonInfo::AT_PreserveAll; // "clang::preserve_all"
3561 }
3562 break;
3563 case 'g': // 3 strings to match.
3564 if (memcmp(s1: Name.data()+1, s2: "nu::", n: 4) != 0)
3565 break;
3566 switch (Name[5]) {
3567 default: break;
3568 case 'a': // 1 string to match.
3569 if (memcmp(s1: Name.data()+6, s2: "ssume_aligned", n: 13) != 0)
3570 break;
3571 return AttributeCommonInfo::AT_AssumeAligned; // "gnu::assume_aligned"
3572 case 'n': // 1 string to match.
3573 if (memcmp(s1: Name.data()+6, s2: "o_split_stack", n: 13) != 0)
3574 break;
3575 return AttributeCommonInfo::AT_NoSplitStack; // "gnu::no_split_stack"
3576 case 't': // 1 string to match.
3577 if (memcmp(s1: Name.data()+6, s2: "arget_version", n: 13) != 0)
3578 break;
3579 return AttributeCommonInfo::AT_TargetVersion; // "gnu::target_version"
3580 }
3581 break;
3582 }
3583 break;
3584 case 20: // 20 strings to match.
3585 switch (Name[0]) {
3586 default: break;
3587 case 'c': // 17 strings to match.
3588 if (memcmp(s1: Name.data()+1, s2: "lang::", n: 6) != 0)
3589 break;
3590 switch (Name[7]) {
3591 default: break;
3592 case 'a': // 4 strings to match.
3593 switch (Name[8]) {
3594 default: break;
3595 case 'd': // 1 string to match.
3596 if (memcmp(s1: Name.data()+9, s2: "dress_space", n: 11) != 0)
3597 break;
3598 return AttributeCommonInfo::AT_AddressSpace; // "clang::address_space"
3599 case 'l': // 1 string to match.
3600 if (memcmp(s1: Name.data()+9, s2: "ways_inline", n: 11) != 0)
3601 break;
3602 return AttributeCommonInfo::AT_AlwaysInline; // "clang::always_inline"
3603 case 'm': // 1 string to match.
3604 if (memcmp(s1: Name.data()+9, s2: "dgpu_kernel", n: 11) != 0)
3605 break;
3606 return AttributeCommonInfo::AT_AMDGPUKernelCall; // "clang::amdgpu_kernel"
3607 case 'n': // 1 string to match.
3608 if (memcmp(s1: Name.data()+9, s2: "notate_type", n: 11) != 0)
3609 break;
3610 return AttributeCommonInfo::AT_AnnotateType; // "clang::annotate_type"
3611 }
3612 break;
3613 case 'b': // 1 string to match.
3614 if (memcmp(s1: Name.data()+8, s2: "uiltin_alias", n: 12) != 0)
3615 break;
3616 return AttributeCommonInfo::AT_BuiltinAlias; // "clang::builtin_alias"
3617 case 'c': // 1 string to match.
3618 if (memcmp(s1: Name.data()+8, s2: "allable_when", n: 12) != 0)
3619 break;
3620 return AttributeCommonInfo::AT_CallableWhen; // "clang::callable_when"
3621 case 'i': // 1 string to match.
3622 if (memcmp(s1: Name.data()+8, s2: "mport_module", n: 12) != 0)
3623 break;
3624 return AttributeCommonInfo::AT_WebAssemblyImportModule; // "clang::import_module"
3625 case 'l': // 1 string to match.
3626 if (memcmp(s1: Name.data()+8, s2: "ifetimebound", n: 12) != 0)
3627 break;
3628 return AttributeCommonInfo::AT_LifetimeBound; // "clang::lifetimebound"
3629 case 'n': // 1 string to match.
3630 if (memcmp(s1: Name.data()+8, s2: "onallocating", n: 12) != 0)
3631 break;
3632 return AttributeCommonInfo::AT_NonAllocating; // "clang::nonallocating"
3633 case 'o': // 1 string to match.
3634 if (memcmp(s1: Name.data()+8, s2: "pencl_global", n: 12) != 0)
3635 break;
3636 return AttributeCommonInfo::AT_OpenCLGlobalAddressSpace; // "clang::opencl_global"
3637 case 'p': // 2 strings to match.
3638 if (memcmp(s1: Name.data()+8, s2: "reserve_", n: 8) != 0)
3639 break;
3640 switch (Name[16]) {
3641 default: break;
3642 case 'm': // 1 string to match.
3643 if (memcmp(s1: Name.data()+17, s2: "ost", n: 3) != 0)
3644 break;
3645 return AttributeCommonInfo::AT_PreserveMost; // "clang::preserve_most"
3646 case 'n': // 1 string to match.
3647 if (memcmp(s1: Name.data()+17, s2: "one", n: 3) != 0)
3648 break;
3649 return AttributeCommonInfo::AT_PreserveNone; // "clang::preserve_none"
3650 }
3651 break;
3652 case 'r': // 1 string to match.
3653 if (memcmp(s1: Name.data()+8, s2: "einitializes", n: 12) != 0)
3654 break;
3655 return AttributeCommonInfo::AT_Reinitializes; // "clang::reinitializes"
3656 case 's': // 2 strings to match.
3657 switch (Name[8]) {
3658 default: break;
3659 case 'e': // 1 string to match.
3660 if (memcmp(s1: Name.data()+9, s2: "t_typestate", n: 11) != 0)
3661 break;
3662 return AttributeCommonInfo::AT_SetTypestate; // "clang::set_typestate"
3663 case 'w': // 1 string to match.
3664 if (memcmp(s1: Name.data()+9, s2: "ift_context", n: 11) != 0)
3665 break;
3666 return AttributeCommonInfo::AT_SwiftContext; // "clang::swift_context"
3667 }
3668 break;
3669 case 'u': // 1 string to match.
3670 if (memcmp(s1: Name.data()+8, s2: "ninitialized", n: 12) != 0)
3671 break;
3672 return AttributeCommonInfo::AT_Uninitialized; // "clang::uninitialized"
3673 case 'x': // 1 string to match.
3674 if (memcmp(s1: Name.data()+8, s2: "ray_log_args", n: 12) != 0)
3675 break;
3676 return AttributeCommonInfo::AT_XRayLogArgs; // "clang::xray_log_args"
3677 }
3678 break;
3679 case 'g': // 2 strings to match.
3680 if (memcmp(s1: Name.data()+1, s2: "nu::", n: 4) != 0)
3681 break;
3682 switch (Name[5]) {
3683 default: break;
3684 case 'f': // 1 string to match.
3685 if (memcmp(s1: Name.data()+6, s2: "unction_return", n: 14) != 0)
3686 break;
3687 return AttributeCommonInfo::AT_FunctionReturnThunks; // "gnu::function_return"
3688 case 'r': // 1 string to match.
3689 if (memcmp(s1: Name.data()+6, s2: "eturns_nonnull", n: 14) != 0)
3690 break;
3691 return AttributeCommonInfo::AT_ReturnsNonNull; // "gnu::returns_nonnull"
3692 }
3693 break;
3694 case 'h': // 1 string to match.
3695 if (memcmp(s1: Name.data()+1, s2: "lsl::resource_class", n: 19) != 0)
3696 break;
3697 return AttributeCommonInfo::AT_HLSLResourceClass; // "hlsl::resource_class"
3698 }
3699 break;
3700 case 21: // 14 strings to match.
3701 switch (Name[0]) {
3702 default: break;
3703 case 'c': // 13 strings to match.
3704 if (memcmp(s1: Name.data()+1, s2: "lang::", n: 6) != 0)
3705 break;
3706 switch (Name[7]) {
3707 default: break;
3708 case 'a': // 2 strings to match.
3709 switch (Name[8]) {
3710 default: break;
3711 case 'c': // 1 string to match.
3712 if (memcmp(s1: Name.data()+9, s2: "quire_handle", n: 12) != 0)
3713 break;
3714 return AttributeCommonInfo::AT_AcquireHandle; // "clang::acquire_handle"
3715 case 'l': // 1 string to match.
3716 if (memcmp(s1: Name.data()+9, s2: "ways_destroy", n: 12) != 0)
3717 break;
3718 return AttributeCommonInfo::AT_AlwaysDestroy; // "clang::always_destroy"
3719 }
3720 break;
3721 case 'i': // 1 string to match.
3722 if (memcmp(s1: Name.data()+8, s2: "ntel_ocl_bicc", n: 13) != 0)
3723 break;
3724 return AttributeCommonInfo::AT_IntelOclBicc; // "clang::intel_ocl_bicc"
3725 case 'o': // 4 strings to match.
3726 switch (Name[8]) {
3727 default: break;
3728 case 'b': // 2 strings to match.
3729 if (memcmp(s1: Name.data()+9, s2: "jc_", n: 3) != 0)
3730 break;
3731 switch (Name[12]) {
3732 default: break;
3733 case 'e': // 1 string to match.
3734 if (memcmp(s1: Name.data()+13, s2: "xception", n: 8) != 0)
3735 break;
3736 return AttributeCommonInfo::AT_ObjCException; // "clang::objc_exception"
3737 case 'o': // 1 string to match.
3738 if (memcmp(s1: Name.data()+13, s2: "wnership", n: 8) != 0)
3739 break;
3740 return AttributeCommonInfo::AT_ObjCOwnership; // "clang::objc_ownership"
3741 }
3742 break;
3743 case 'p': // 2 strings to match.
3744 if (memcmp(s1: Name.data()+9, s2: "encl_", n: 5) != 0)
3745 break;
3746 switch (Name[14]) {
3747 default: break;
3748 case 'g': // 1 string to match.
3749 if (memcmp(s1: Name.data()+15, s2: "eneric", n: 6) != 0)
3750 break;
3751 return AttributeCommonInfo::AT_OpenCLGenericAddressSpace; // "clang::opencl_generic"
3752 case 'p': // 1 string to match.
3753 if (memcmp(s1: Name.data()+15, s2: "rivate", n: 6) != 0)
3754 break;
3755 return AttributeCommonInfo::AT_OpenCLPrivateAddressSpace; // "clang::opencl_private"
3756 }
3757 break;
3758 }
3759 break;
3760 case 'p': // 3 strings to match.
3761 switch (Name[8]) {
3762 default: break;
3763 case 'r': // 2 strings to match.
3764 if (memcmp(s1: Name.data()+9, s2: "eferred_", n: 8) != 0)
3765 break;
3766 switch (Name[17]) {
3767 default: break;
3768 case 'n': // 1 string to match.
3769 if (memcmp(s1: Name.data()+18, s2: "ame", n: 3) != 0)
3770 break;
3771 return AttributeCommonInfo::AT_PreferredName; // "clang::preferred_name"
3772 case 't': // 1 string to match.
3773 if (memcmp(s1: Name.data()+18, s2: "ype", n: 3) != 0)
3774 break;
3775 return AttributeCommonInfo::AT_PreferredType; // "clang::preferred_type"
3776 }
3777 break;
3778 case 't': // 1 string to match.
3779 if (memcmp(s1: Name.data()+9, s2: "_guarded_var", n: 12) != 0)
3780 break;
3781 return AttributeCommonInfo::AT_PtGuardedVar; // "clang::pt_guarded_var"
3782 }
3783 break;
3784 case 'r': // 1 string to match.
3785 if (memcmp(s1: Name.data()+8, s2: "elease_handle", n: 13) != 0)
3786 break;
3787 return AttributeCommonInfo::AT_ReleaseHandle; // "clang::release_handle"
3788 case 's': // 1 string to match.
3789 if (memcmp(s1: Name.data()+8, s2: "wiftasynccall", n: 13) != 0)
3790 break;
3791 return AttributeCommonInfo::AT_SwiftAsyncCall; // "clang::swiftasynccall"
3792 case 't': // 1 string to match.
3793 if (memcmp(s1: Name.data()+8, s2: "est_typestate", n: 13) != 0)
3794 break;
3795 return AttributeCommonInfo::AT_TestTypestate; // "clang::test_typestate"
3796 }
3797 break;
3798 case 'g': // 1 string to match.
3799 if (memcmp(s1: Name.data()+1, s2: "nu::randomize_layout", n: 20) != 0)
3800 break;
3801 return AttributeCommonInfo::AT_RandomizeLayout; // "gnu::randomize_layout"
3802 }
3803 break;
3804 case 22: // 16 strings to match.
3805 switch (Name[0]) {
3806 default: break;
3807 case 'c': // 15 strings to match.
3808 if (memcmp(s1: Name.data()+1, s2: "lang::", n: 6) != 0)
3809 break;
3810 switch (Name[7]) {
3811 default: break;
3812 case 'a': // 3 strings to match.
3813 switch (Name[8]) {
3814 default: break;
3815 case 'a': // 1 string to match.
3816 if (memcmp(s1: Name.data()+9, s2: "rch64_sve_pcs", n: 13) != 0)
3817 break;
3818 return AttributeCommonInfo::AT_AArch64SVEPcs; // "clang::aarch64_sve_pcs"
3819 case 'm': // 2 strings to match.
3820 if (memcmp(s1: Name.data()+9, s2: "dgpu_num_", n: 9) != 0)
3821 break;
3822 switch (Name[18]) {
3823 default: break;
3824 case 's': // 1 string to match.
3825 if (memcmp(s1: Name.data()+19, s2: "gpr", n: 3) != 0)
3826 break;
3827 return AttributeCommonInfo::AT_AMDGPUNumSGPR; // "clang::amdgpu_num_sgpr"
3828 case 'v': // 1 string to match.
3829 if (memcmp(s1: Name.data()+19, s2: "gpr", n: 3) != 0)
3830 break;
3831 return AttributeCommonInfo::AT_AMDGPUNumVGPR; // "clang::amdgpu_num_vgpr"
3832 }
3833 break;
3834 }
3835 break;
3836 case 'n': // 1 string to match.
3837 if (memcmp(s1: Name.data()+8, s2: "ot_tail_called", n: 14) != 0)
3838 break;
3839 return AttributeCommonInfo::AT_NotTailCalled; // "clang::not_tail_called"
3840 case 'o': // 5 strings to match.
3841 switch (Name[8]) {
3842 default: break;
3843 case 'b': // 2 strings to match.
3844 if (memcmp(s1: Name.data()+9, s2: "jc_", n: 3) != 0)
3845 break;
3846 switch (Name[12]) {
3847 default: break;
3848 case 'c': // 1 string to match.
3849 if (memcmp(s1: Name.data()+13, s2: "lass_stub", n: 9) != 0)
3850 break;
3851 return AttributeCommonInfo::AT_ObjCClassStub; // "clang::objc_class_stub"
3852 case 'r': // 1 string to match.
3853 if (memcmp(s1: Name.data()+13, s2: "oot_class", n: 9) != 0)
3854 break;
3855 return AttributeCommonInfo::AT_ObjCRootClass; // "clang::objc_root_class"
3856 }
3857 break;
3858 case 'p': // 1 string to match.
3859 if (memcmp(s1: Name.data()+9, s2: "encl_constant", n: 13) != 0)
3860 break;
3861 return AttributeCommonInfo::AT_OpenCLConstantAddressSpace; // "clang::opencl_constant"
3862 case 'w': // 2 strings to match.
3863 if (memcmp(s1: Name.data()+9, s2: "nership_", n: 8) != 0)
3864 break;
3865 switch (Name[17]) {
3866 default: break;
3867 case 'h': // 1 string to match.
3868 if (memcmp(s1: Name.data()+18, s2: "olds", n: 4) != 0)
3869 break;
3870 return AttributeCommonInfo::AT_Ownership; // "clang::ownership_holds"
3871 case 't': // 1 string to match.
3872 if (memcmp(s1: Name.data()+18, s2: "akes", n: 4) != 0)
3873 break;
3874 return AttributeCommonInfo::AT_Ownership; // "clang::ownership_takes"
3875 }
3876 break;
3877 }
3878 break;
3879 case 'p': // 1 string to match.
3880 if (memcmp(s1: Name.data()+8, s2: "aram_typestate", n: 14) != 0)
3881 break;
3882 return AttributeCommonInfo::AT_ParamTypestate; // "clang::param_typestate"
3883 case 'r': // 1 string to match.
3884 if (memcmp(s1: Name.data()+8, s2: "iscv_vector_cc", n: 14) != 0)
3885 break;
3886 return AttributeCommonInfo::AT_RISCVVectorCC; // "clang::riscv_vector_cc"
3887 case 's': // 1 string to match.
3888 if (memcmp(s1: Name.data()+8, s2: "coped_lockable", n: 14) != 0)
3889 break;
3890 return AttributeCommonInfo::AT_ScopedLockable; // "clang::scoped_lockable"
3891 case 't': // 1 string to match.
3892 if (memcmp(s1: Name.data()+8, s2: "ype_visibility", n: 14) != 0)
3893 break;
3894 return AttributeCommonInfo::AT_TypeVisibility; // "clang::type_visibility"
3895 case 'u': // 2 strings to match.
3896 switch (Name[8]) {
3897 default: break;
3898 case 'n': // 1 string to match.
3899 if (memcmp(s1: Name.data()+9, s2: "lock_function", n: 13) != 0)
3900 break;
3901 return AttributeCommonInfo::AT_ReleaseCapability; // "clang::unlock_function"
3902 case 's': // 1 string to match.
3903 if (memcmp(s1: Name.data()+9, s2: "ing_if_exists", n: 13) != 0)
3904 break;
3905 return AttributeCommonInfo::AT_UsingIfExists; // "clang::using_if_exists"
3906 }
3907 break;
3908 }
3909 break;
3910 case 'g': // 1 string to match.
3911 if (memcmp(s1: Name.data()+1, s2: "nu::transparent_union", n: 21) != 0)
3912 break;
3913 return AttributeCommonInfo::AT_TransparentUnion; // "gnu::transparent_union"
3914 }
3915 break;
3916 case 23: // 16 strings to match.
3917 switch (Name[0]) {
3918 default: break;
3919 case 'c': // 12 strings to match.
3920 if (memcmp(s1: Name.data()+1, s2: "lang::", n: 6) != 0)
3921 break;
3922 switch (Name[7]) {
3923 default: break;
3924 case 'c': // 1 string to match.
3925 if (memcmp(s1: Name.data()+8, s2: "oro_return_type", n: 15) != 0)
3926 break;
3927 return AttributeCommonInfo::AT_CoroReturnType; // "clang::coro_return_type"
3928 case 'e': // 1 string to match.
3929 if (memcmp(s1: Name.data()+8, s2: "nforce_tcb_leaf", n: 15) != 0)
3930 break;
3931 return AttributeCommonInfo::AT_EnforceTCBLeaf; // "clang::enforce_tcb_leaf"
3932 case 'h': // 1 string to match.
3933 if (memcmp(s1: Name.data()+8, s2: "ybrid_patchable", n: 15) != 0)
3934 break;
3935 return AttributeCommonInfo::AT_HybridPatchable; // "clang::hybrid_patchable"
3936 case 'i': // 1 string to match.
3937 if (memcmp(s1: Name.data()+8, s2: "nternal_linkage", n: 15) != 0)
3938 break;
3939 return AttributeCommonInfo::AT_InternalLinkage; // "clang::internal_linkage"
3940 case 'm': // 1 string to match.
3941 if (memcmp(s1: Name.data()+8, s2: "in_vector_width", n: 15) != 0)
3942 break;
3943 return AttributeCommonInfo::AT_MinVectorWidth; // "clang::min_vector_width"
3944 case 'n': // 2 strings to match.
3945 switch (Name[8]) {
3946 default: break;
3947 case 'e': // 1 string to match.
3948 if (memcmp(s1: Name.data()+9, s2: "on_vector_type", n: 14) != 0)
3949 break;
3950 return AttributeCommonInfo::AT_NeonVectorType; // "clang::neon_vector_type"
3951 case 's': // 1 string to match.
3952 if (memcmp(s1: Name.data()+9, s2: "_consumes_self", n: 14) != 0)
3953 break;
3954 return AttributeCommonInfo::AT_NSConsumesSelf; // "clang::ns_consumes_self"
3955 }
3956 break;
3957 case 'o': // 1 string to match.
3958 if (memcmp(s1: Name.data()+8, s2: "s_consumes_this", n: 15) != 0)
3959 break;
3960 return AttributeCommonInfo::AT_OSConsumesThis; // "clang::os_consumes_this"
3961 case 'p': // 1 string to match.
3962 if (memcmp(s1: Name.data()+8, s2: "ass_object_size", n: 15) != 0)
3963 break;
3964 return AttributeCommonInfo::AT_PassObjectSize; // "clang::pass_object_size"
3965 case 'r': // 1 string to match.
3966 if (memcmp(s1: Name.data()+8, s2: "eturn_typestate", n: 15) != 0)
3967 break;
3968 return AttributeCommonInfo::AT_ReturnTypestate; // "clang::return_typestate"
3969 case 's': // 2 strings to match.
3970 switch (Name[8]) {
3971 default: break;
3972 case 'i': // 1 string to match.
3973 if (memcmp(s1: Name.data()+9, s2: "zed_by_or_null", n: 14) != 0)
3974 break;
3975 return AttributeCommonInfo::AT_SizedByOrNull; // "clang::sized_by_or_null"
3976 case 't': // 1 string to match.
3977 if (memcmp(s1: Name.data()+9, s2: "andalone_debug", n: 14) != 0)
3978 break;
3979 return AttributeCommonInfo::AT_StandaloneDebug; // "clang::standalone_debug"
3980 }
3981 break;
3982 }
3983 break;
3984 case 'g': // 3 strings to match.
3985 if (memcmp(s1: Name.data()+1, s2: "nu::", n: 4) != 0)
3986 break;
3987 switch (Name[5]) {
3988 default: break;
3989 case 'n': // 2 strings to match.
3990 if (memcmp(s1: Name.data()+6, s2: "o_s", n: 3) != 0)
3991 break;
3992 switch (Name[9]) {
3993 default: break;
3994 case 'a': // 1 string to match.
3995 if (memcmp(s1: Name.data()+10, s2: "nitize_thread", n: 13) != 0)
3996 break;
3997 return AttributeCommonInfo::AT_NoSanitizeSpecific; // "gnu::no_sanitize_thread"
3998 case 't': // 1 string to match.
3999 if (memcmp(s1: Name.data()+10, s2: "ack_protector", n: 13) != 0)
4000 break;
4001 return AttributeCommonInfo::AT_NoStackProtector; // "gnu::no_stack_protector"
4002 }
4003 break;
4004 case 'w': // 1 string to match.
4005 if (memcmp(s1: Name.data()+6, s2: "arn_unused_result", n: 17) != 0)
4006 break;
4007 return AttributeCommonInfo::AT_WarnUnusedResult; // "gnu::warn_unused_result"
4008 }
4009 break;
4010 case 'm': // 1 string to match.
4011 if (memcmp(s1: Name.data()+1, s2: "svc::no_unique_address", n: 22) != 0)
4012 break;
4013 return AttributeCommonInfo::AT_NoUniqueAddress; // "msvc::no_unique_address"
4014 }
4015 break;
4016 case 24: // 8 strings to match.
4017 switch (Name[0]) {
4018 default: break;
4019 case 'c': // 5 strings to match.
4020 if (memcmp(s1: Name.data()+1, s2: "lang::", n: 6) != 0)
4021 break;
4022 switch (Name[7]) {
4023 default: break;
4024 case 'a': // 1 string to match.
4025 if (memcmp(s1: Name.data()+8, s2: "ssert_capability", n: 16) != 0)
4026 break;
4027 return AttributeCommonInfo::AT_AssertCapability; // "clang::assert_capability"
4028 case 'o': // 2 strings to match.
4029 switch (Name[8]) {
4030 default: break;
4031 case 'b': // 1 string to match.
4032 if (memcmp(s1: Name.data()+9, s2: "jc_runtime_name", n: 15) != 0)
4033 break;
4034 return AttributeCommonInfo::AT_ObjCRuntimeName; // "clang::objc_runtime_name"
4035 case 'w': // 1 string to match.
4036 if (memcmp(s1: Name.data()+9, s2: "nership_returns", n: 15) != 0)
4037 break;
4038 return AttributeCommonInfo::AT_Ownership; // "clang::ownership_returns"
4039 }
4040 break;
4041 case 's': // 2 strings to match.
4042 switch (Name[8]) {
4043 default: break;
4044 case 'h': // 1 string to match.
4045 if (memcmp(s1: Name.data()+9, s2: "ared_capability", n: 15) != 0)
4046 break;
4047 return AttributeCommonInfo::AT_Capability; // "clang::shared_capability"
4048 case 'w': // 1 string to match.
4049 if (memcmp(s1: Name.data()+9, s2: "ift_async_error", n: 15) != 0)
4050 break;
4051 return AttributeCommonInfo::AT_SwiftAsyncError; // "clang::swift_async_error"
4052 }
4053 break;
4054 }
4055 break;
4056 case 'g': // 3 strings to match.
4057 if (memcmp(s1: Name.data()+1, s2: "nu::", n: 4) != 0)
4058 break;
4059 switch (Name[5]) {
4060 default: break;
4061 case 'n': // 2 strings to match.
4062 if (memcmp(s1: Name.data()+6, s2: "o_", n: 2) != 0)
4063 break;
4064 switch (Name[8]) {
4065 default: break;
4066 case 'r': // 1 string to match.
4067 if (memcmp(s1: Name.data()+9, s2: "andomize_layout", n: 15) != 0)
4068 break;
4069 return AttributeCommonInfo::AT_NoRandomizeLayout; // "gnu::no_randomize_layout"
4070 case 's': // 1 string to match.
4071 if (memcmp(s1: Name.data()+9, s2: "anitize_address", n: 15) != 0)
4072 break;
4073 return AttributeCommonInfo::AT_NoSanitizeSpecific; // "gnu::no_sanitize_address"
4074 }
4075 break;
4076 case 'z': // 1 string to match.
4077 if (memcmp(s1: Name.data()+6, s2: "ero_call_used_regs", n: 18) != 0)
4078 break;
4079 return AttributeCommonInfo::AT_ZeroCallUsedRegs; // "gnu::zero_call_used_regs"
4080 }
4081 break;
4082 }
4083 break;
4084 case 25: // 17 strings to match.
4085 if (memcmp(s1: Name.data()+0, s2: "clang::", n: 7) != 0)
4086 break;
4087 switch (Name[7]) {
4088 default: break;
4089 case 'a': // 2 strings to match.
4090 switch (Name[8]) {
4091 default: break;
4092 case 'a': // 1 string to match.
4093 if (memcmp(s1: Name.data()+9, s2: "rch64_vector_pcs", n: 16) != 0)
4094 break;
4095 return AttributeCommonInfo::AT_AArch64VectorPcs; // "clang::aarch64_vector_pcs"
4096 case 'c': // 1 string to match.
4097 if (memcmp(s1: Name.data()+9, s2: "quire_capability", n: 16) != 0)
4098 break;
4099 return AttributeCommonInfo::AT_AcquireCapability; // "clang::acquire_capability"
4100 }
4101 break;
4102 case 'c': // 2 strings to match.
4103 if (Name[8] != 'o')
4104 break;
4105 switch (Name[9]) {
4106 default: break;
4107 case 'r': // 1 string to match.
4108 if (memcmp(s1: Name.data()+10, s2: "o_lifetimebound", n: 15) != 0)
4109 break;
4110 return AttributeCommonInfo::AT_CoroLifetimeBound; // "clang::coro_lifetimebound"
4111 case 'u': // 1 string to match.
4112 if (memcmp(s1: Name.data()+10, s2: "nted_by_or_null", n: 15) != 0)
4113 break;
4114 return AttributeCommonInfo::AT_CountedByOrNull; // "clang::counted_by_or_null"
4115 }
4116 break;
4117 case 'd': // 1 string to match.
4118 if (memcmp(s1: Name.data()+8, s2: "isable_tail_calls", n: 17) != 0)
4119 break;
4120 return AttributeCommonInfo::AT_DisableTailCalls; // "clang::disable_tail_calls"
4121 case 'e': // 1 string to match.
4122 if (memcmp(s1: Name.data()+8, s2: "num_extensibility", n: 17) != 0)
4123 break;
4124 return AttributeCommonInfo::AT_EnumExtensibility; // "clang::enum_extensibility"
4125 case 'i': // 1 string to match.
4126 if (memcmp(s1: Name.data()+8, s2: "boutletcollection", n: 17) != 0)
4127 break;
4128 return AttributeCommonInfo::AT_IBOutletCollection; // "clang::iboutletcollection"
4129 case 'm': // 1 string to match.
4130 if (memcmp(s1: Name.data()+8, s2: "ig_server_routine", n: 17) != 0)
4131 break;
4132 return AttributeCommonInfo::AT_MIGServerRoutine; // "clang::mig_server_routine"
4133 case 'n': // 2 strings to match.
4134 if (memcmp(s1: Name.data()+8, s2: "o_s", n: 3) != 0)
4135 break;
4136 switch (Name[11]) {
4137 default: break;
4138 case 'a': // 1 string to match.
4139 if (memcmp(s1: Name.data()+12, s2: "nitize_memory", n: 13) != 0)
4140 break;
4141 return AttributeCommonInfo::AT_NoSanitizeSpecific; // "clang::no_sanitize_memory"
4142 case 't': // 1 string to match.
4143 if (memcmp(s1: Name.data()+12, s2: "ack_protector", n: 13) != 0)
4144 break;
4145 return AttributeCommonInfo::AT_NoStackProtector; // "clang::no_stack_protector"
4146 }
4147 break;
4148 case 'o': // 3 strings to match.
4149 switch (Name[8]) {
4150 default: break;
4151 case 'b': // 2 strings to match.
4152 if (memcmp(s1: Name.data()+9, s2: "jc_", n: 3) != 0)
4153 break;
4154 switch (Name[12]) {
4155 default: break;
4156 case 'm': // 1 string to match.
4157 if (memcmp(s1: Name.data()+13, s2: "ethod_family", n: 12) != 0)
4158 break;
4159 return AttributeCommonInfo::AT_ObjCMethodFamily; // "clang::objc_method_family"
4160 case 'n': // 1 string to match.
4161 if (memcmp(s1: Name.data()+13, s2: "onlazy_class", n: 12) != 0)
4162 break;
4163 return AttributeCommonInfo::AT_ObjCNonLazyClass; // "clang::objc_nonlazy_class"
4164 }
4165 break;
4166 case 'p': // 1 string to match.
4167 if (memcmp(s1: Name.data()+9, s2: "encl_global_host", n: 16) != 0)
4168 break;
4169 return AttributeCommonInfo::AT_OpenCLGlobalHostAddressSpace; // "clang::opencl_global_host"
4170 }
4171 break;
4172 case 'r': // 1 string to match.
4173 if (memcmp(s1: Name.data()+8, s2: "elease_capability", n: 17) != 0)
4174 break;
4175 return AttributeCommonInfo::AT_ReleaseCapability; // "clang::release_capability"
4176 case 's': // 2 strings to match.
4177 switch (Name[8]) {
4178 default: break;
4179 case 'w': // 1 string to match.
4180 if (memcmp(s1: Name.data()+9, s2: "ift_error_result", n: 16) != 0)
4181 break;
4182 return AttributeCommonInfo::AT_SwiftErrorResult; // "clang::swift_error_result"
4183 case 'y': // 1 string to match.
4184 if (memcmp(s1: Name.data()+9, s2: "cl_special_class", n: 16) != 0)
4185 break;
4186 return AttributeCommonInfo::AT_SYCLSpecialClass; // "clang::sycl_special_class"
4187 }
4188 break;
4189 case 'w': // 1 string to match.
4190 if (memcmp(s1: Name.data()+8, s2: "arn_unused_result", n: 17) != 0)
4191 break;
4192 return AttributeCommonInfo::AT_WarnUnusedResult; // "clang::warn_unused_result"
4193 }
4194 break;
4195 case 26: // 14 strings to match.
4196 if (memcmp(s1: Name.data()+0, s2: "clang::", n: 7) != 0)
4197 break;
4198 switch (Name[7]) {
4199 default: break;
4200 case 'a': // 1 string to match.
4201 if (memcmp(s1: Name.data()+8, s2: "mdgpu_waves_per_eu", n: 18) != 0)
4202 break;
4203 return AttributeCommonInfo::AT_AMDGPUWavesPerEU; // "clang::amdgpu_waves_per_eu"
4204 case 'c': // 3 strings to match.
4205 if (memcmp(s1: Name.data()+8, s2: "f_", n: 2) != 0)
4206 break;
4207 switch (Name[10]) {
4208 default: break;
4209 case 'a': // 1 string to match.
4210 if (memcmp(s1: Name.data()+11, s2: "udited_transfer", n: 15) != 0)
4211 break;
4212 return AttributeCommonInfo::AT_CFAuditedTransfer; // "clang::cf_audited_transfer"
4213 case 'r': // 1 string to match.
4214 if (memcmp(s1: Name.data()+11, s2: "eturns_retained", n: 15) != 0)
4215 break;
4216 return AttributeCommonInfo::AT_CFReturnsRetained; // "clang::cf_returns_retained"
4217 case 'u': // 1 string to match.
4218 if (memcmp(s1: Name.data()+11, s2: "nknown_transfer", n: 15) != 0)
4219 break;
4220 return AttributeCommonInfo::AT_CFUnknownTransfer; // "clang::cf_unknown_transfer"
4221 }
4222 break;
4223 case 'd': // 1 string to match.
4224 if (memcmp(s1: Name.data()+8, s2: "iagnose_as_builtin", n: 18) != 0)
4225 break;
4226 return AttributeCommonInfo::AT_DiagnoseAsBuiltin; // "clang::diagnose_as_builtin"
4227 case 'n': // 1 string to match.
4228 if (memcmp(s1: Name.data()+8, s2: "s_returns_retained", n: 18) != 0)
4229 break;
4230 return AttributeCommonInfo::AT_NSReturnsRetained; // "clang::ns_returns_retained"
4231 case 'o': // 5 strings to match.
4232 switch (Name[8]) {
4233 default: break;
4234 case 'b': // 4 strings to match.
4235 if (memcmp(s1: Name.data()+9, s2: "jc_", n: 3) != 0)
4236 break;
4237 switch (Name[12]) {
4238 default: break;
4239 case 'b': // 2 strings to match.
4240 if (memcmp(s1: Name.data()+13, s2: "ridge_", n: 6) != 0)
4241 break;
4242 switch (Name[19]) {
4243 default: break;
4244 case 'm': // 1 string to match.
4245 if (memcmp(s1: Name.data()+20, s2: "utable", n: 6) != 0)
4246 break;
4247 return AttributeCommonInfo::AT_ObjCBridgeMutable; // "clang::objc_bridge_mutable"
4248 case 'r': // 1 string to match.
4249 if (memcmp(s1: Name.data()+20, s2: "elated", n: 6) != 0)
4250 break;
4251 return AttributeCommonInfo::AT_ObjCBridgeRelated; // "clang::objc_bridge_related"
4252 }
4253 break;
4254 case 'd': // 1 string to match.
4255 if (memcmp(s1: Name.data()+13, s2: "irect_members", n: 13) != 0)
4256 break;
4257 return AttributeCommonInfo::AT_ObjCDirectMembers; // "clang::objc_direct_members"
4258 case 'r': // 1 string to match.
4259 if (memcmp(s1: Name.data()+13, s2: "equires_super", n: 13) != 0)
4260 break;
4261 return AttributeCommonInfo::AT_ObjCRequiresSuper; // "clang::objc_requires_super"
4262 }
4263 break;
4264 case 's': // 1 string to match.
4265 if (memcmp(s1: Name.data()+9, s2: "_returns_retained", n: 17) != 0)
4266 break;
4267 return AttributeCommonInfo::AT_OSReturnsRetained; // "clang::os_returns_retained"
4268 }
4269 break;
4270 case 'r': // 1 string to match.
4271 if (memcmp(s1: Name.data()+8, s2: "equires_capability", n: 18) != 0)
4272 break;
4273 return AttributeCommonInfo::AT_RequiresCapability; // "clang::requires_capability"
4274 case 's': // 1 string to match.
4275 if (memcmp(s1: Name.data()+8, s2: "wift_async_context", n: 18) != 0)
4276 break;
4277 return AttributeCommonInfo::AT_SwiftAsyncContext; // "clang::swift_async_context"
4278 case 'u': // 1 string to match.
4279 if (memcmp(s1: Name.data()+8, s2: "nsafe_buffer_usage", n: 18) != 0)
4280 break;
4281 return AttributeCommonInfo::AT_UnsafeBufferUsage; // "clang::unsafe_buffer_usage"
4282 }
4283 break;
4284 case 27: // 6 strings to match.
4285 switch (Name[0]) {
4286 default: break;
4287 case 'c': // 5 strings to match.
4288 if (memcmp(s1: Name.data()+1, s2: "lang::", n: 6) != 0)
4289 break;
4290 switch (Name[7]) {
4291 default: break;
4292 case 'c': // 1 string to match.
4293 if (memcmp(s1: Name.data()+8, s2: "lspv_libclc_builtin", n: 19) != 0)
4294 break;
4295 return AttributeCommonInfo::AT_ClspvLibclcBuiltin; // "clang::clspv_libclc_builtin"
4296 case 'l': // 1 string to match.
4297 if (memcmp(s1: Name.data()+8, s2: "oader_uninitialized", n: 19) != 0)
4298 break;
4299 return AttributeCommonInfo::AT_LoaderUninitialized; // "clang::loader_uninitialized"
4300 case 'n': // 1 string to match.
4301 if (memcmp(s1: Name.data()+8, s2: "eon_polyvector_type", n: 19) != 0)
4302 break;
4303 return AttributeCommonInfo::AT_NeonPolyVectorType; // "clang::neon_polyvector_type"
4304 case 'o': // 2 strings to match.
4305 switch (Name[8]) {
4306 default: break;
4307 case 'b': // 1 string to match.
4308 if (memcmp(s1: Name.data()+9, s2: "jc_runtime_visible", n: 18) != 0)
4309 break;
4310 return AttributeCommonInfo::AT_ObjCRuntimeVisible; // "clang::objc_runtime_visible"
4311 case 'p': // 1 string to match.
4312 if (memcmp(s1: Name.data()+9, s2: "encl_global_device", n: 18) != 0)
4313 break;
4314 return AttributeCommonInfo::AT_OpenCLGlobalDeviceAddressSpace; // "clang::opencl_global_device"
4315 }
4316 break;
4317 }
4318 break;
4319 case 'g': // 1 string to match.
4320 if (memcmp(s1: Name.data()+1, s2: "nu::no_instrument_function", n: 26) != 0)
4321 break;
4322 return AttributeCommonInfo::AT_NoInstrumentFunction; // "gnu::no_instrument_function"
4323 }
4324 break;
4325 case 28: // 9 strings to match.
4326 switch (Name[0]) {
4327 default: break;
4328 case 'c': // 8 strings to match.
4329 if (memcmp(s1: Name.data()+1, s2: "lang::", n: 6) != 0)
4330 break;
4331 switch (Name[7]) {
4332 default: break;
4333 case 'l': // 1 string to match.
4334 if (memcmp(s1: Name.data()+8, s2: "to_visibility_public", n: 20) != 0)
4335 break;
4336 return AttributeCommonInfo::AT_LTOVisibilityPublic; // "clang::lto_visibility_public"
4337 case 'o': // 1 string to match.
4338 if (memcmp(s1: Name.data()+8, s2: "bjc_precise_lifetime", n: 20) != 0)
4339 break;
4340 return AttributeCommonInfo::AT_ObjCPreciseLifetime; // "clang::objc_precise_lifetime"
4341 case 'p': // 2 strings to match.
4342 switch (Name[8]) {
4343 default: break;
4344 case 'o': // 1 string to match.
4345 if (memcmp(s1: Name.data()+9, s2: "inter_with_type_tag", n: 19) != 0)
4346 break;
4347 return AttributeCommonInfo::AT_ArgumentWithTypeTag; // "clang::pointer_with_type_tag"
4348 case 'r': // 1 string to match.
4349 if (memcmp(s1: Name.data()+9, s2: "eserve_access_index", n: 19) != 0)
4350 break;
4351 return AttributeCommonInfo::AT_BPFPreserveAccessIndex; // "clang::preserve_access_index"
4352 }
4353 break;
4354 case 's': // 2 strings to match.
4355 switch (Name[8]) {
4356 default: break;
4357 case 'h': // 1 string to match.
4358 if (memcmp(s1: Name.data()+9, s2: "ared_locks_required", n: 19) != 0)
4359 break;
4360 return AttributeCommonInfo::AT_RequiresCapability; // "clang::shared_locks_required"
4361 case 'w': // 1 string to match.
4362 if (memcmp(s1: Name.data()+9, s2: "ift_indirect_result", n: 19) != 0)
4363 break;
4364 return AttributeCommonInfo::AT_SwiftIndirectResult; // "clang::swift_indirect_result"
4365 }
4366 break;
4367 case 't': // 1 string to match.
4368 if (memcmp(s1: Name.data()+8, s2: "ype_tag_for_datatype", n: 20) != 0)
4369 break;
4370 return AttributeCommonInfo::AT_TypeTagForDatatype; // "clang::type_tag_for_datatype"
4371 case 'x': // 1 string to match.
4372 if (memcmp(s1: Name.data()+8, s2: "ray_never_instrument", n: 20) != 0)
4373 break;
4374 return AttributeCommonInfo::AT_XRayInstrument; // "clang::xray_never_instrument"
4375 }
4376 break;
4377 case 'g': // 1 string to match.
4378 if (memcmp(s1: Name.data()+1, s2: "nu::force_align_arg_pointer", n: 27) != 0)
4379 break;
4380 return AttributeCommonInfo::AT_X86ForceAlignArgPointer; // "gnu::force_align_arg_pointer"
4381 }
4382 break;
4383 case 29: // 8 strings to match.
4384 switch (Name[0]) {
4385 default: break;
4386 case 'c': // 7 strings to match.
4387 if (memcmp(s1: Name.data()+1, s2: "lang::", n: 6) != 0)
4388 break;
4389 switch (Name[7]) {
4390 default: break;
4391 case 'a': // 1 string to match.
4392 if (memcmp(s1: Name.data()+8, s2: "rgument_with_type_tag", n: 21) != 0)
4393 break;
4394 return AttributeCommonInfo::AT_ArgumentWithTypeTag; // "clang::argument_with_type_tag"
4395 case 'e': // 1 string to match.
4396 if (memcmp(s1: Name.data()+8, s2: "xternal_source_symbol", n: 21) != 0)
4397 break;
4398 return AttributeCommonInfo::AT_ExternalSourceSymbol; // "clang::external_source_symbol"
4399 case 'o': // 1 string to match.
4400 if (memcmp(s1: Name.data()+8, s2: "bjc_independent_class", n: 21) != 0)
4401 break;
4402 return AttributeCommonInfo::AT_ObjCIndependentClass; // "clang::objc_independent_class"
4403 case 'p': // 2 strings to match.
4404 switch (Name[8]) {
4405 default: break;
4406 case 'r': // 1 string to match.
4407 if (memcmp(s1: Name.data()+9, s2: "eserve_static_offset", n: 20) != 0)
4408 break;
4409 return AttributeCommonInfo::AT_BPFPreserveStaticOffset; // "clang::preserve_static_offset"
4410 case 't': // 1 string to match.
4411 if (memcmp(s1: Name.data()+9, s2: "rauth_vtable_pointer", n: 20) != 0)
4412 break;
4413 return AttributeCommonInfo::AT_VTablePointerAuthentication; // "clang::ptrauth_vtable_pointer"
4414 }
4415 break;
4416 case 't': // 1 string to match.
4417 if (memcmp(s1: Name.data()+8, s2: "ry_acquire_capability", n: 21) != 0)
4418 break;
4419 return AttributeCommonInfo::AT_TryAcquireCapability; // "clang::try_acquire_capability"
4420 case 'x': // 1 string to match.
4421 if (memcmp(s1: Name.data()+8, s2: "ray_always_instrument", n: 21) != 0)
4422 break;
4423 return AttributeCommonInfo::AT_XRayInstrument; // "clang::xray_always_instrument"
4424 }
4425 break;
4426 case 'g': // 1 string to match.
4427 if (memcmp(s1: Name.data()+1, s2: "nu::patchable_function_entry", n: 28) != 0)
4428 break;
4429 return AttributeCommonInfo::AT_PatchableFunctionEntry; // "gnu::patchable_function_entry"
4430 }
4431 break;
4432 case 30: // 5 strings to match.
4433 switch (Name[0]) {
4434 default: break;
4435 case 'c': // 4 strings to match.
4436 if (memcmp(s1: Name.data()+1, s2: "lang::", n: 6) != 0)
4437 break;
4438 switch (Name[7]) {
4439 default: break;
4440 case 'c': // 1 string to match.
4441 if (memcmp(s1: Name.data()+8, s2: "f_returns_not_retained", n: 22) != 0)
4442 break;
4443 return AttributeCommonInfo::AT_CFReturnsNotRetained; // "clang::cf_returns_not_retained"
4444 case 'n': // 2 strings to match.
4445 if (memcmp(s1: Name.data()+8, s2: "s_returns_", n: 10) != 0)
4446 break;
4447 switch (Name[18]) {
4448 default: break;
4449 case 'a': // 1 string to match.
4450 if (memcmp(s1: Name.data()+19, s2: "utoreleased", n: 11) != 0)
4451 break;
4452 return AttributeCommonInfo::AT_NSReturnsAutoreleased; // "clang::ns_returns_autoreleased"
4453 case 'n': // 1 string to match.
4454 if (memcmp(s1: Name.data()+19, s2: "ot_retained", n: 11) != 0)
4455 break;
4456 return AttributeCommonInfo::AT_NSReturnsNotRetained; // "clang::ns_returns_not_retained"
4457 }
4458 break;
4459 case 'o': // 1 string to match.
4460 if (memcmp(s1: Name.data()+8, s2: "s_returns_not_retained", n: 22) != 0)
4461 break;
4462 return AttributeCommonInfo::AT_OSReturnsNotRetained; // "clang::os_returns_not_retained"
4463 }
4464 break;
4465 case 'g': // 1 string to match.
4466 if (memcmp(s1: Name.data()+1, s2: "nu::no_caller_saved_registers", n: 29) != 0)
4467 break;
4468 return AttributeCommonInfo::AT_AnyX86NoCallerSavedRegisters; // "gnu::no_caller_saved_registers"
4469 }
4470 break;
4471 case 31: // 6 strings to match.
4472 switch (Name[0]) {
4473 default: break;
4474 case 'c': // 5 strings to match.
4475 if (memcmp(s1: Name.data()+1, s2: "lang::", n: 6) != 0)
4476 break;
4477 switch (Name[7]) {
4478 default: break;
4479 case 'a': // 1 string to match.
4480 if (memcmp(s1: Name.data()+8, s2: "ssert_shared_capability", n: 23) != 0)
4481 break;
4482 return AttributeCommonInfo::AT_AssertCapability; // "clang::assert_shared_capability"
4483 case 'c': // 1 string to match.
4484 if (memcmp(s1: Name.data()+8, s2: "fi_canonical_jump_table", n: 23) != 0)
4485 break;
4486 return AttributeCommonInfo::AT_CFICanonicalJumpTable; // "clang::cfi_canonical_jump_table"
4487 case 'e': // 1 string to match.
4488 if (memcmp(s1: Name.data()+8, s2: "xclusive_locks_required", n: 23) != 0)
4489 break;
4490 return AttributeCommonInfo::AT_RequiresCapability; // "clang::exclusive_locks_required"
4491 case 'o': // 1 string to match.
4492 if (memcmp(s1: Name.data()+8, s2: "bjc_externally_retained", n: 23) != 0)
4493 break;
4494 return AttributeCommonInfo::AT_ObjCExternallyRetained; // "clang::objc_externally_retained"
4495 case 'p': // 1 string to match.
4496 if (memcmp(s1: Name.data()+8, s2: "ass_dynamic_object_size", n: 23) != 0)
4497 break;
4498 return AttributeCommonInfo::AT_PassObjectSize; // "clang::pass_dynamic_object_size"
4499 }
4500 break;
4501 case 'g': // 1 string to match.
4502 if (memcmp(s1: Name.data()+1, s2: "nu::no_address_safety_analysis", n: 30) != 0)
4503 break;
4504 return AttributeCommonInfo::AT_NoSanitizeSpecific; // "gnu::no_address_safety_analysis"
4505 }
4506 break;
4507 case 32: // 5 strings to match.
4508 if (memcmp(s1: Name.data()+0, s2: "clang::", n: 7) != 0)
4509 break;
4510 switch (Name[7]) {
4511 default: break;
4512 case '_': // 1 string to match.
4513 if (memcmp(s1: Name.data()+8, s2: "_clang_arm_builtin_alias", n: 24) != 0)
4514 break;
4515 return AttributeCommonInfo::AT_ArmBuiltinAlias; // "clang::__clang_arm_builtin_alias"
4516 case 'a': // 1 string to match.
4517 if (memcmp(s1: Name.data()+8, s2: "cquire_shared_capability", n: 24) != 0)
4518 break;
4519 return AttributeCommonInfo::AT_AcquireCapability; // "clang::acquire_shared_capability"
4520 case 'n': // 1 string to match.
4521 if (memcmp(s1: Name.data()+8, s2: "o_thread_safety_analysis", n: 24) != 0)
4522 break;
4523 return AttributeCommonInfo::AT_NoThreadSafetyAnalysis; // "clang::no_thread_safety_analysis"
4524 case 'o': // 1 string to match.
4525 if (memcmp(s1: Name.data()+8, s2: "bjc_non_runtime_protocol", n: 24) != 0)
4526 break;
4527 return AttributeCommonInfo::AT_ObjCNonRuntimeProtocol; // "clang::objc_non_runtime_protocol"
4528 case 'r': // 1 string to match.
4529 if (memcmp(s1: Name.data()+8, s2: "elease_shared_capability", n: 24) != 0)
4530 break;
4531 return AttributeCommonInfo::AT_ReleaseCapability; // "clang::release_shared_capability"
4532 }
4533 break;
4534 case 33: // 7 strings to match.
4535 if (memcmp(s1: Name.data()+0, s2: "clang::", n: 7) != 0)
4536 break;
4537 switch (Name[7]) {
4538 default: break;
4539 case 'a': // 1 string to match.
4540 if (memcmp(s1: Name.data()+8, s2: "mdgpu_max_num_work_groups", n: 25) != 0)
4541 break;
4542 return AttributeCommonInfo::AT_AMDGPUMaxNumWorkGroups; // "clang::amdgpu_max_num_work_groups"
4543 case 'c': // 2 strings to match.
4544 if (Name[8] != 'o')
4545 break;
4546 switch (Name[9]) {
4547 default: break;
4548 case 'n': // 1 string to match.
4549 if (memcmp(s1: Name.data()+10, s2: "sumable_auto_cast_state", n: 23) != 0)
4550 break;
4551 return AttributeCommonInfo::AT_ConsumableAutoCast; // "clang::consumable_auto_cast_state"
4552 case 'r': // 1 string to match.
4553 if (memcmp(s1: Name.data()+10, s2: "o_disable_lifetimebound", n: 23) != 0)
4554 break;
4555 return AttributeCommonInfo::AT_CoroDisableLifetimeBound; // "clang::coro_disable_lifetimebound"
4556 }
4557 break;
4558 case 'o': // 1 string to match.
4559 if (memcmp(s1: Name.data()+8, s2: "bjc_returns_inner_pointer", n: 25) != 0)
4560 break;
4561 return AttributeCommonInfo::AT_ObjCReturnsInnerPointer; // "clang::objc_returns_inner_pointer"
4562 case 'r': // 2 strings to match.
4563 if (Name[8] != 'e')
4564 break;
4565 switch (Name[9]) {
4566 default: break;
4567 case 'l': // 1 string to match.
4568 if (memcmp(s1: Name.data()+10, s2: "ease_generic_capability", n: 23) != 0)
4569 break;
4570 return AttributeCommonInfo::AT_ReleaseCapability; // "clang::release_generic_capability"
4571 case 'q': // 1 string to match.
4572 if (memcmp(s1: Name.data()+10, s2: "uires_shared_capability", n: 23) != 0)
4573 break;
4574 return AttributeCommonInfo::AT_RequiresCapability; // "clang::requires_shared_capability"
4575 }
4576 break;
4577 case 's': // 1 string to match.
4578 if (memcmp(s1: Name.data()+8, s2: "peculative_load_hardening", n: 25) != 0)
4579 break;
4580 return AttributeCommonInfo::AT_SpeculativeLoadHardening; // "clang::speculative_load_hardening"
4581 }
4582 break;
4583 case 34: // 5 strings to match.
4584 if (memcmp(s1: Name.data()+0, s2: "clang::", n: 7) != 0)
4585 break;
4586 switch (Name[7]) {
4587 default: break;
4588 case 'a': // 1 string to match.
4589 if (memcmp(s1: Name.data()+8, s2: "mdgpu_flat_work_group_size", n: 26) != 0)
4590 break;
4591 return AttributeCommonInfo::AT_AMDGPUFlatWorkGroupSize; // "clang::amdgpu_flat_work_group_size"
4592 case 'e': // 1 string to match.
4593 if (memcmp(s1: Name.data()+8, s2: "nforce_read_only_placement", n: 26) != 0)
4594 break;
4595 return AttributeCommonInfo::AT_ReadOnlyPlacement; // "clang::enforce_read_only_placement"
4596 case 'o': // 3 strings to match.
4597 switch (Name[8]) {
4598 default: break;
4599 case 'b': // 2 strings to match.
4600 if (memcmp(s1: Name.data()+9, s2: "jc_", n: 3) != 0)
4601 break;
4602 switch (Name[12]) {
4603 default: break;
4604 case 'd': // 1 string to match.
4605 if (memcmp(s1: Name.data()+13, s2: "esignated_initializer", n: 21) != 0)
4606 break;
4607 return AttributeCommonInfo::AT_ObjCDesignatedInitializer; // "clang::objc_designated_initializer"
4608 case 's': // 1 string to match.
4609 if (memcmp(s1: Name.data()+13, s2: "ubclassing_restricted", n: 21) != 0)
4610 break;
4611 return AttributeCommonInfo::AT_ObjCSubclassingRestricted; // "clang::objc_subclassing_restricted"
4612 }
4613 break;
4614 case 's': // 1 string to match.
4615 if (memcmp(s1: Name.data()+9, s2: "_returns_retained_on_zero", n: 25) != 0)
4616 break;
4617 return AttributeCommonInfo::AT_OSReturnsRetainedOnZero; // "clang::os_returns_retained_on_zero"
4618 }
4619 break;
4620 }
4621 break;
4622 case 35: // 2 strings to match.
4623 switch (Name[0]) {
4624 default: break;
4625 case 'c': // 1 string to match.
4626 if (memcmp(s1: Name.data()+1, s2: "lang::consumable_set_state_on_read", n: 34) != 0)
4627 break;
4628 return AttributeCommonInfo::AT_ConsumableSetOnRead; // "clang::consumable_set_state_on_read"
4629 case 'g': // 1 string to match.
4630 if (memcmp(s1: Name.data()+1, s2: "nu::no_profile_instrument_function", n: 34) != 0)
4631 break;
4632 return AttributeCommonInfo::AT_NoProfileFunction; // "gnu::no_profile_instrument_function"
4633 }
4634 break;
4635 case 36: // 2 strings to match.
4636 if (memcmp(s1: Name.data()+0, s2: "clang::", n: 7) != 0)
4637 break;
4638 switch (Name[7]) {
4639 default: break;
4640 case 'n': // 1 string to match.
4641 if (memcmp(s1: Name.data()+8, s2: "o_speculative_load_hardening", n: 28) != 0)
4642 break;
4643 return AttributeCommonInfo::AT_NoSpeculativeLoadHardening; // "clang::no_speculative_load_hardening"
4644 case 't': // 1 string to match.
4645 if (memcmp(s1: Name.data()+8, s2: "ry_acquire_shared_capability", n: 28) != 0)
4646 break;
4647 return AttributeCommonInfo::AT_TryAcquireCapability; // "clang::try_acquire_shared_capability"
4648 }
4649 break;
4650 case 38: // 3 strings to match.
4651 if (memcmp(s1: Name.data()+0, s2: "clang::", n: 7) != 0)
4652 break;
4653 switch (Name[7]) {
4654 default: break;
4655 case 'c': // 1 string to match.
4656 if (memcmp(s1: Name.data()+8, s2: "oro_only_destroy_when_complete", n: 30) != 0)
4657 break;
4658 return AttributeCommonInfo::AT_CoroOnlyDestroyWhenComplete; // "clang::coro_only_destroy_when_complete"
4659 case 'o': // 1 string to match.
4660 if (memcmp(s1: Name.data()+8, s2: "s_returns_retained_on_non_zero", n: 30) != 0)
4661 break;
4662 return AttributeCommonInfo::AT_OSReturnsRetainedOnNonZero; // "clang::os_returns_retained_on_non_zero"
4663 case 'r': // 1 string to match.
4664 if (memcmp(s1: Name.data()+8, s2: "equire_constant_initialization", n: 30) != 0)
4665 break;
4666 return AttributeCommonInfo::AT_ConstInit; // "clang::require_constant_initialization"
4667 }
4668 break;
4669 case 40: // 1 string to match.
4670 if (memcmp(s1: Name.data()+0, s2: "clang::disable_sanitizer_instrumentation", n: 40) != 0)
4671 break;
4672 return AttributeCommonInfo::AT_DisableSanitizerInstrumentation; // "clang::disable_sanitizer_instrumentation"
4673 case 41: // 1 string to match.
4674 if (memcmp(s1: Name.data()+0, s2: "clang::objc_requires_property_definitions", n: 41) != 0)
4675 break;
4676 return AttributeCommonInfo::AT_ObjCRequiresPropertyDefs; // "clang::objc_requires_property_definitions"
4677 case 42: // 3 strings to match.
4678 if (memcmp(s1: Name.data()+0, s2: "clang::", n: 7) != 0)
4679 break;
4680 switch (Name[7]) {
4681 default: break;
4682 case '_': // 1 string to match.
4683 if (memcmp(s1: Name.data()+8, s2: "_clang_arm_mve_strict_polymorphism", n: 34) != 0)
4684 break;
4685 return AttributeCommonInfo::AT_ArmMveStrictPolymorphism; // "clang::__clang_arm_mve_strict_polymorphism"
4686 case 'e': // 1 string to match.
4687 if (memcmp(s1: Name.data()+8, s2: "xclude_from_explicit_instantiation", n: 34) != 0)
4688 break;
4689 return AttributeCommonInfo::AT_ExcludeFromExplicitInstantiation; // "clang::exclude_from_explicit_instantiation"
4690 case 'o': // 1 string to match.
4691 if (memcmp(s1: Name.data()+8, s2: "bjc_arc_weak_reference_unavailable", n: 34) != 0)
4692 break;
4693 return AttributeCommonInfo::AT_ArcWeakrefUnavailable; // "clang::objc_arc_weak_reference_unavailable"
4694 }
4695 break;
4696 case 44: // 1 string to match.
4697 if (memcmp(s1: Name.data()+0, s2: "clang::available_only_in_default_eval_method", n: 44) != 0)
4698 break;
4699 return AttributeCommonInfo::AT_AvailableOnlyInDefaultEvalMethod; // "clang::available_only_in_default_eval_method"
4700 case 53: // 1 string to match.
4701 if (memcmp(s1: Name.data()+0, s2: "clang::objc_protocol_requires_explicit_implementation", n: 53) != 0)
4702 break;
4703 return AttributeCommonInfo::AT_ObjCExplicitProtocolImpl; // "clang::objc_protocol_requires_explicit_implementation"
4704 }
4705 } else if (AttributeCommonInfo::AS_C23 == Syntax) {
4706 switch (Name.size()) {
4707 default: break;
4708 case 8: // 4 strings to match.
4709 switch (Name[0]) {
4710 default: break;
4711 case 'g': // 3 strings to match.
4712 if (memcmp(s1: Name.data()+1, s2: "nu::", n: 4) != 0)
4713 break;
4714 switch (Name[5]) {
4715 default: break;
4716 case 'f': // 1 string to match.
4717 if (memcmp(s1: Name.data()+6, s2: "ar", n: 2) != 0)
4718 break;
4719 return AttributeCommonInfo::AT_MipsLongCall; // "gnu::far"
4720 case 'h': // 1 string to match.
4721 if (memcmp(s1: Name.data()+6, s2: "ot", n: 2) != 0)
4722 break;
4723 return AttributeCommonInfo::AT_Hot; // "gnu::hot"
4724 case 'p': // 1 string to match.
4725 if (memcmp(s1: Name.data()+6, s2: "cs", n: 2) != 0)
4726 break;
4727 return AttributeCommonInfo::AT_Pcs; // "gnu::pcs"
4728 }
4729 break;
4730 case 'n': // 1 string to match.
4731 if (memcmp(s1: Name.data()+1, s2: "oreturn", n: 7) != 0)
4732 break;
4733 return AttributeCommonInfo::AT_CXX11NoReturn; // "noreturn"
4734 }
4735 break;
4736 case 9: // 9 strings to match.
4737 switch (Name[0]) {
4738 default: break;
4739 case '_': // 1 string to match.
4740 if (memcmp(s1: Name.data()+1, s2: "Noreturn", n: 8) != 0)
4741 break;
4742 return AttributeCommonInfo::AT_CXX11NoReturn; // "_Noreturn"
4743 case 'g': // 7 strings to match.
4744 if (memcmp(s1: Name.data()+1, s2: "nu::", n: 4) != 0)
4745 break;
4746 switch (Name[5]) {
4747 default: break;
4748 case 'c': // 1 string to match.
4749 if (memcmp(s1: Name.data()+6, s2: "old", n: 3) != 0)
4750 break;
4751 return AttributeCommonInfo::AT_Cold; // "gnu::cold"
4752 case 'l': // 1 string to match.
4753 if (memcmp(s1: Name.data()+6, s2: "eaf", n: 3) != 0)
4754 break;
4755 return AttributeCommonInfo::AT_Leaf; // "gnu::leaf"
4756 case 'm': // 1 string to match.
4757 if (memcmp(s1: Name.data()+6, s2: "ode", n: 3) != 0)
4758 break;
4759 return AttributeCommonInfo::AT_Mode; // "gnu::mode"
4760 case 'n': // 1 string to match.
4761 if (memcmp(s1: Name.data()+6, s2: "ear", n: 3) != 0)
4762 break;
4763 return AttributeCommonInfo::AT_MipsShortCall; // "gnu::near"
4764 case 'p': // 1 string to match.
4765 if (memcmp(s1: Name.data()+6, s2: "ure", n: 3) != 0)
4766 break;
4767 return AttributeCommonInfo::AT_Pure; // "gnu::pure"
4768 case 'u': // 1 string to match.
4769 if (memcmp(s1: Name.data()+6, s2: "sed", n: 3) != 0)
4770 break;
4771 return AttributeCommonInfo::AT_Used; // "gnu::used"
4772 case 'w': // 1 string to match.
4773 if (memcmp(s1: Name.data()+6, s2: "eak", n: 3) != 0)
4774 break;
4775 return AttributeCommonInfo::AT_Weak; // "gnu::weak"
4776 }
4777 break;
4778 case 'n': // 1 string to match.
4779 if (memcmp(s1: Name.data()+1, s2: "odiscard", n: 8) != 0)
4780 break;
4781 return AttributeCommonInfo::AT_WarnUnusedResult; // "nodiscard"
4782 }
4783 break;
4784 case 10: // 8 strings to match.
4785 switch (Name[0]) {
4786 default: break;
4787 case 'd': // 1 string to match.
4788 if (memcmp(s1: Name.data()+1, s2: "eprecated", n: 9) != 0)
4789 break;
4790 return AttributeCommonInfo::AT_Deprecated; // "deprecated"
4791 case 'g': // 7 strings to match.
4792 if (memcmp(s1: Name.data()+1, s2: "nu::", n: 4) != 0)
4793 break;
4794 switch (Name[5]) {
4795 default: break;
4796 case 'a': // 1 string to match.
4797 if (memcmp(s1: Name.data()+6, s2: "lias", n: 4) != 0)
4798 break;
4799 return AttributeCommonInfo::AT_Alias; // "gnu::alias"
4800 case 'c': // 2 strings to match.
4801 switch (Name[6]) {
4802 default: break;
4803 case 'd': // 1 string to match.
4804 if (memcmp(s1: Name.data()+7, s2: "ecl", n: 3) != 0)
4805 break;
4806 return AttributeCommonInfo::AT_CDecl; // "gnu::cdecl"
4807 case 'o': // 1 string to match.
4808 if (memcmp(s1: Name.data()+7, s2: "nst", n: 3) != 0)
4809 break;
4810 return AttributeCommonInfo::AT_Const; // "gnu::const"
4811 }
4812 break;
4813 case 'e': // 1 string to match.
4814 if (memcmp(s1: Name.data()+6, s2: "rror", n: 4) != 0)
4815 break;
4816 return AttributeCommonInfo::AT_Error; // "gnu::error"
4817 case 'i': // 1 string to match.
4818 if (memcmp(s1: Name.data()+6, s2: "func", n: 4) != 0)
4819 break;
4820 return AttributeCommonInfo::AT_IFunc; // "gnu::ifunc"
4821 case 'm': // 1 string to match.
4822 if (memcmp(s1: Name.data()+6, s2: "odel", n: 4) != 0)
4823 break;
4824 return AttributeCommonInfo::AT_CodeModel; // "gnu::model"
4825 case 'n': // 1 string to match.
4826 if (memcmp(s1: Name.data()+6, s2: "aked", n: 4) != 0)
4827 break;
4828 return AttributeCommonInfo::AT_Naked; // "gnu::naked"
4829 }
4830 break;
4831 }
4832 break;
4833 case 11: // 11 strings to match.
4834 switch (Name[0]) {
4835 default: break;
4836 case 'f': // 1 string to match.
4837 if (memcmp(s1: Name.data()+1, s2: "allthrough", n: 10) != 0)
4838 break;
4839 return AttributeCommonInfo::AT_FallThrough; // "fallthrough"
4840 case 'g': // 10 strings to match.
4841 if (memcmp(s1: Name.data()+1, s2: "nu::", n: 4) != 0)
4842 break;
4843 switch (Name[5]) {
4844 default: break;
4845 case 'c': // 1 string to match.
4846 if (memcmp(s1: Name.data()+6, s2: "ommon", n: 5) != 0)
4847 break;
4848 return AttributeCommonInfo::AT_Common; // "gnu::common"
4849 case 'f': // 1 string to match.
4850 if (memcmp(s1: Name.data()+6, s2: "ormat", n: 5) != 0)
4851 break;
4852 return AttributeCommonInfo::AT_Format; // "gnu::format"
4853 case 'm': // 3 strings to match.
4854 switch (Name[6]) {
4855 default: break;
4856 case 'a': // 1 string to match.
4857 if (memcmp(s1: Name.data()+7, s2: "lloc", n: 4) != 0)
4858 break;
4859 return AttributeCommonInfo::AT_Restrict; // "gnu::malloc"
4860 case 'i': // 1 string to match.
4861 if (memcmp(s1: Name.data()+7, s2: "ps16", n: 4) != 0)
4862 break;
4863 return AttributeCommonInfo::AT_Mips16; // "gnu::mips16"
4864 case 's': // 1 string to match.
4865 if (memcmp(s1: Name.data()+7, s2: "_abi", n: 4) != 0)
4866 break;
4867 return AttributeCommonInfo::AT_MSABI; // "gnu::ms_abi"
4868 }
4869 break;
4870 case 'p': // 1 string to match.
4871 if (memcmp(s1: Name.data()+6, s2: "acked", n: 5) != 0)
4872 break;
4873 return AttributeCommonInfo::AT_Packed; // "gnu::packed"
4874 case 'r': // 1 string to match.
4875 if (memcmp(s1: Name.data()+6, s2: "etain", n: 5) != 0)
4876 break;
4877 return AttributeCommonInfo::AT_Retain; // "gnu::retain"
4878 case 's': // 1 string to match.
4879 if (memcmp(s1: Name.data()+6, s2: "ignal", n: 5) != 0)
4880 break;
4881 return AttributeCommonInfo::AT_AVRSignal; // "gnu::signal"
4882 case 't': // 1 string to match.
4883 if (memcmp(s1: Name.data()+6, s2: "arget", n: 5) != 0)
4884 break;
4885 return AttributeCommonInfo::AT_Target; // "gnu::target"
4886 case 'u': // 1 string to match.
4887 if (memcmp(s1: Name.data()+6, s2: "nused", n: 5) != 0)
4888 break;
4889 return AttributeCommonInfo::AT_Unused; // "gnu::unused"
4890 }
4891 break;
4892 }
4893 break;
4894 case 12: // 15 strings to match.
4895 switch (Name[0]) {
4896 default: break;
4897 case 'c': // 1 string to match.
4898 if (memcmp(s1: Name.data()+1, s2: "lang::guard", n: 11) != 0)
4899 break;
4900 return AttributeCommonInfo::AT_CFGuard; // "clang::guard"
4901 case 'g': // 13 strings to match.
4902 if (memcmp(s1: Name.data()+1, s2: "nu::", n: 4) != 0)
4903 break;
4904 switch (Name[5]) {
4905 default: break;
4906 case '_': // 1 string to match.
4907 if (memcmp(s1: Name.data()+6, s2: "_const", n: 6) != 0)
4908 break;
4909 return AttributeCommonInfo::AT_Const; // "gnu::__const"
4910 case 'a': // 1 string to match.
4911 if (memcmp(s1: Name.data()+6, s2: "ligned", n: 6) != 0)
4912 break;
4913 return AttributeCommonInfo::AT_Aligned; // "gnu::aligned"
4914 case 'c': // 1 string to match.
4915 if (memcmp(s1: Name.data()+6, s2: "leanup", n: 6) != 0)
4916 break;
4917 return AttributeCommonInfo::AT_Cleanup; // "gnu::cleanup"
4918 case 'f': // 1 string to match.
4919 if (memcmp(s1: Name.data()+6, s2: "latten", n: 6) != 0)
4920 break;
4921 return AttributeCommonInfo::AT_Flatten; // "gnu::flatten"
4922 case 'n': // 3 strings to match.
4923 if (Name[6] != 'o')
4924 break;
4925 switch (Name[7]) {
4926 default: break;
4927 case 'd': // 1 string to match.
4928 if (memcmp(s1: Name.data()+8, s2: "ebug", n: 4) != 0)
4929 break;
4930 return AttributeCommonInfo::AT_NoDebug; // "gnu::nodebug"
4931 case 'n': // 1 string to match.
4932 if (memcmp(s1: Name.data()+8, s2: "null", n: 4) != 0)
4933 break;
4934 return AttributeCommonInfo::AT_NonNull; // "gnu::nonnull"
4935 case 't': // 1 string to match.
4936 if (memcmp(s1: Name.data()+8, s2: "hrow", n: 4) != 0)
4937 break;
4938 return AttributeCommonInfo::AT_NoThrow; // "gnu::nothrow"
4939 }
4940 break;
4941 case 'r': // 2 strings to match.
4942 if (memcmp(s1: Name.data()+6, s2: "eg", n: 2) != 0)
4943 break;
4944 switch (Name[8]) {
4945 default: break;
4946 case 'c': // 1 string to match.
4947 if (memcmp(s1: Name.data()+9, s2: "all", n: 3) != 0)
4948 break;
4949 return AttributeCommonInfo::AT_RegCall; // "gnu::regcall"
4950 case 'p': // 1 string to match.
4951 if (memcmp(s1: Name.data()+9, s2: "arm", n: 3) != 0)
4952 break;
4953 return AttributeCommonInfo::AT_Regparm; // "gnu::regparm"
4954 }
4955 break;
4956 case 's': // 2 strings to match.
4957 switch (Name[6]) {
4958 default: break;
4959 case 'e': // 1 string to match.
4960 if (memcmp(s1: Name.data()+7, s2: "ction", n: 5) != 0)
4961 break;
4962 return AttributeCommonInfo::AT_Section; // "gnu::section"
4963 case 't': // 1 string to match.
4964 if (memcmp(s1: Name.data()+7, s2: "dcall", n: 5) != 0)
4965 break;
4966 return AttributeCommonInfo::AT_StdCall; // "gnu::stdcall"
4967 }
4968 break;
4969 case 'w': // 2 strings to match.
4970 switch (Name[6]) {
4971 default: break;
4972 case 'a': // 1 string to match.
4973 if (memcmp(s1: Name.data()+7, s2: "rning", n: 5) != 0)
4974 break;
4975 return AttributeCommonInfo::AT_Error; // "gnu::warning"
4976 case 'e': // 1 string to match.
4977 if (memcmp(s1: Name.data()+7, s2: "akref", n: 5) != 0)
4978 break;
4979 return AttributeCommonInfo::AT_WeakRef; // "gnu::weakref"
4980 }
4981 break;
4982 }
4983 break;
4984 case 'm': // 1 string to match.
4985 if (memcmp(s1: Name.data()+1, s2: "aybe_unused", n: 11) != 0)
4986 break;
4987 return AttributeCommonInfo::AT_Unused; // "maybe_unused"
4988 }
4989 break;
4990 case 13: // 12 strings to match.
4991 switch (Name[0]) {
4992 default: break;
4993 case 'c': // 4 strings to match.
4994 if (memcmp(s1: Name.data()+1, s2: "lang::", n: 6) != 0)
4995 break;
4996 switch (Name[7]) {
4997 default: break;
4998 case 'a': // 1 string to match.
4999 if (memcmp(s1: Name.data()+8, s2: "ssume", n: 5) != 0)
5000 break;
5001 return AttributeCommonInfo::AT_CXXAssume; // "clang::assume"
5002 case 'b': // 1 string to match.
5003 if (memcmp(s1: Name.data()+8, s2: "locks", n: 5) != 0)
5004 break;
5005 return AttributeCommonInfo::AT_Blocks; // "clang::blocks"
5006 case 'l': // 1 string to match.
5007 if (memcmp(s1: Name.data()+8, s2: "ikely", n: 5) != 0)
5008 break;
5009 return AttributeCommonInfo::AT_Likely; // "clang::likely"
5010 case 'p': // 1 string to match.
5011 if (memcmp(s1: Name.data()+8, s2: "ascal", n: 5) != 0)
5012 break;
5013 return AttributeCommonInfo::AT_Pascal; // "clang::pascal"
5014 }
5015 break;
5016 case 'g': // 8 strings to match.
5017 if (memcmp(s1: Name.data()+1, s2: "nu::", n: 4) != 0)
5018 break;
5019 switch (Name[5]) {
5020 default: break;
5021 case 'f': // 1 string to match.
5022 if (memcmp(s1: Name.data()+6, s2: "astcall", n: 7) != 0)
5023 break;
5024 return AttributeCommonInfo::AT_FastCall; // "gnu::fastcall"
5025 case 'n': // 4 strings to match.
5026 if (Name[6] != 'o')
5027 break;
5028 switch (Name[7]) {
5029 default: break;
5030 case 'c': // 1 string to match.
5031 if (memcmp(s1: Name.data()+8, s2: "ommon", n: 5) != 0)
5032 break;
5033 return AttributeCommonInfo::AT_NoCommon; // "gnu::nocommon"
5034 case 'i': // 1 string to match.
5035 if (memcmp(s1: Name.data()+8, s2: "nline", n: 5) != 0)
5036 break;
5037 return AttributeCommonInfo::AT_NoInline; // "gnu::noinline"
5038 case 'm': // 1 string to match.
5039 if (memcmp(s1: Name.data()+8, s2: "ips16", n: 5) != 0)
5040 break;
5041 return AttributeCommonInfo::AT_NoMips16; // "gnu::nomips16"
5042 case 'r': // 1 string to match.
5043 if (memcmp(s1: Name.data()+8, s2: "eturn", n: 5) != 0)
5044 break;
5045 return AttributeCommonInfo::AT_NoReturn; // "gnu::noreturn"
5046 }
5047 break;
5048 case 's': // 2 strings to match.
5049 switch (Name[6]) {
5050 default: break;
5051 case 'e': // 1 string to match.
5052 if (memcmp(s1: Name.data()+7, s2: "ntinel", n: 6) != 0)
5053 break;
5054 return AttributeCommonInfo::AT_Sentinel; // "gnu::sentinel"
5055 case 'y': // 1 string to match.
5056 if (memcmp(s1: Name.data()+7, s2: "sv_abi", n: 6) != 0)
5057 break;
5058 return AttributeCommonInfo::AT_SysVABI; // "gnu::sysv_abi"
5059 }
5060 break;
5061 case 't': // 1 string to match.
5062 if (memcmp(s1: Name.data()+6, s2: "hiscall", n: 7) != 0)
5063 break;
5064 return AttributeCommonInfo::AT_ThisCall; // "gnu::thiscall"
5065 }
5066 break;
5067 }
5068 break;
5069 case 14: // 15 strings to match.
5070 switch (Name[0]) {
5071 default: break;
5072 case 'c': // 5 strings to match.
5073 if (memcmp(s1: Name.data()+1, s2: "lang::", n: 6) != 0)
5074 break;
5075 switch (Name[7]) {
5076 default: break;
5077 case 'm': // 1 string to match.
5078 if (memcmp(s1: Name.data()+8, s2: "insize", n: 6) != 0)
5079 break;
5080 return AttributeCommonInfo::AT_MinSize; // "clang::minsize"
5081 case 'n': // 2 strings to match.
5082 if (Name[8] != 'o')
5083 break;
5084 switch (Name[9]) {
5085 default: break;
5086 case 'd': // 1 string to match.
5087 if (memcmp(s1: Name.data()+10, s2: "eref", n: 4) != 0)
5088 break;
5089 return AttributeCommonInfo::AT_NoDeref; // "clang::noderef"
5090 case 'm': // 1 string to match.
5091 if (memcmp(s1: Name.data()+10, s2: "erge", n: 4) != 0)
5092 break;
5093 return AttributeCommonInfo::AT_NoMerge; // "clang::nomerge"
5094 }
5095 break;
5096 case 'o': // 2 strings to match.
5097 switch (Name[8]) {
5098 default: break;
5099 case 'b': // 1 string to match.
5100 if (memcmp(s1: Name.data()+9, s2: "jc_gc", n: 5) != 0)
5101 break;
5102 return AttributeCommonInfo::AT_ObjCGC; // "clang::objc_gc"
5103 case 'p': // 1 string to match.
5104 if (memcmp(s1: Name.data()+9, s2: "tnone", n: 5) != 0)
5105 break;
5106 return AttributeCommonInfo::AT_OptimizeNone; // "clang::optnone"
5107 }
5108 break;
5109 }
5110 break;
5111 case 'g': // 9 strings to match.
5112 if (memcmp(s1: Name.data()+1, s2: "nu::", n: 4) != 0)
5113 break;
5114 switch (Name[5]) {
5115 default: break;
5116 case 'd': // 2 strings to match.
5117 if (memcmp(s1: Name.data()+6, s2: "ll", n: 2) != 0)
5118 break;
5119 switch (Name[8]) {
5120 default: break;
5121 case 'e': // 1 string to match.
5122 if (memcmp(s1: Name.data()+9, s2: "xport", n: 5) != 0)
5123 break;
5124 return AttributeCommonInfo::AT_DLLExport; // "gnu::dllexport"
5125 case 'i': // 1 string to match.
5126 if (memcmp(s1: Name.data()+9, s2: "mport", n: 5) != 0)
5127 break;
5128 return AttributeCommonInfo::AT_DLLImport; // "gnu::dllimport"
5129 }
5130 break;
5131 case 'i': // 1 string to match.
5132 if (memcmp(s1: Name.data()+6, s2: "nterrupt", n: 8) != 0)
5133 break;
5134 return AttributeCommonInfo::AT_Interrupt; // "gnu::interrupt"
5135 case 'l': // 1 string to match.
5136 if (memcmp(s1: Name.data()+6, s2: "ong_call", n: 8) != 0)
5137 break;
5138 return AttributeCommonInfo::AT_MipsLongCall; // "gnu::long_call"
5139 case 'm': // 3 strings to match.
5140 switch (Name[6]) {
5141 default: break;
5142 case 'a': // 1 string to match.
5143 if (memcmp(s1: Name.data()+7, s2: "y_alias", n: 7) != 0)
5144 break;
5145 return AttributeCommonInfo::AT_MayAlias; // "gnu::may_alias"
5146 case 'i': // 1 string to match.
5147 if (memcmp(s1: Name.data()+7, s2: "cromips", n: 7) != 0)
5148 break;
5149 return AttributeCommonInfo::AT_MicroMips; // "gnu::micromips"
5150 case 's': // 1 string to match.
5151 if (memcmp(s1: Name.data()+7, s2: "_struct", n: 7) != 0)
5152 break;
5153 return AttributeCommonInfo::AT_MSStruct; // "gnu::ms_struct"
5154 }
5155 break;
5156 case 's': // 1 string to match.
5157 if (memcmp(s1: Name.data()+6, s2: "electany", n: 8) != 0)
5158 break;
5159 return AttributeCommonInfo::AT_SelectAny; // "gnu::selectany"
5160 case 't': // 1 string to match.
5161 if (memcmp(s1: Name.data()+6, s2: "ls_model", n: 8) != 0)
5162 break;
5163 return AttributeCommonInfo::AT_TLSModel; // "gnu::tls_model"
5164 }
5165 break;
5166 case 'm': // 1 string to match.
5167 if (memcmp(s1: Name.data()+1, s2: "svc::noinline", n: 13) != 0)
5168 break;
5169 return AttributeCommonInfo::AT_NoInline; // "msvc::noinline"
5170 }
5171 break;
5172 case 15: // 22 strings to match.
5173 switch (Name[0]) {
5174 default: break;
5175 case 'c': // 13 strings to match.
5176 if (memcmp(s1: Name.data()+1, s2: "lang::", n: 6) != 0)
5177 break;
5178 switch (Name[7]) {
5179 default: break;
5180 case 'N': // 1 string to match.
5181 if (memcmp(s1: Name.data()+8, s2: "SObject", n: 7) != 0)
5182 break;
5183 return AttributeCommonInfo::AT_ObjCNSObject; // "clang::NSObject"
5184 case 'a': // 1 string to match.
5185 if (memcmp(s1: Name.data()+8, s2: "nnotate", n: 7) != 0)
5186 break;
5187 return AttributeCommonInfo::AT_Annotate; // "clang::annotate"
5188 case 'b': // 1 string to match.
5189 if (memcmp(s1: Name.data()+8, s2: "locking", n: 7) != 0)
5190 break;
5191 return AttributeCommonInfo::AT_Blocking; // "clang::blocking"
5192 case 'c': // 1 string to match.
5193 if (memcmp(s1: Name.data()+8, s2: "allback", n: 7) != 0)
5194 break;
5195 return AttributeCommonInfo::AT_Callback; // "clang::callback"
5196 case 'i': // 2 strings to match.
5197 if (Name[8] != 'b')
5198 break;
5199 switch (Name[9]) {
5200 default: break;
5201 case 'a': // 1 string to match.
5202 if (memcmp(s1: Name.data()+10, s2: "ction", n: 5) != 0)
5203 break;
5204 return AttributeCommonInfo::AT_IBAction; // "clang::ibaction"
5205 case 'o': // 1 string to match.
5206 if (memcmp(s1: Name.data()+10, s2: "utlet", n: 5) != 0)
5207 break;
5208 return AttributeCommonInfo::AT_IBOutlet; // "clang::iboutlet"
5209 }
5210 break;
5211 case 'm': // 2 strings to match.
5212 switch (Name[8]) {
5213 default: break;
5214 case '6': // 1 string to match.
5215 if (memcmp(s1: Name.data()+9, s2: "8k_rtd", n: 6) != 0)
5216 break;
5217 return AttributeCommonInfo::AT_M68kRTD; // "clang::m68k_rtd"
5218 case 'u': // 1 string to match.
5219 if (memcmp(s1: Name.data()+9, s2: "sttail", n: 6) != 0)
5220 break;
5221 return AttributeCommonInfo::AT_MustTail; // "clang::musttail"
5222 }
5223 break;
5224 case 'n': // 2 strings to match.
5225 if (Name[8] != 'o')
5226 break;
5227 switch (Name[9]) {
5228 default: break;
5229 case 'e': // 1 string to match.
5230 if (memcmp(s1: Name.data()+10, s2: "scape", n: 5) != 0)
5231 break;
5232 return AttributeCommonInfo::AT_NoEscape; // "clang::noescape"
5233 case 'i': // 1 string to match.
5234 if (memcmp(s1: Name.data()+10, s2: "nline", n: 5) != 0)
5235 break;
5236 return AttributeCommonInfo::AT_NoInline; // "clang::noinline"
5237 }
5238 break;
5239 case 's': // 2 strings to match.
5240 switch (Name[8]) {
5241 default: break;
5242 case 'i': // 1 string to match.
5243 if (memcmp(s1: Name.data()+9, s2: "zed_by", n: 6) != 0)
5244 break;
5245 return AttributeCommonInfo::AT_SizedBy; // "clang::sized_by"
5246 case 'u': // 1 string to match.
5247 if (memcmp(s1: Name.data()+9, s2: "ppress", n: 6) != 0)
5248 break;
5249 return AttributeCommonInfo::AT_Suppress; // "clang::suppress"
5250 }
5251 break;
5252 case 'u': // 1 string to match.
5253 if (memcmp(s1: Name.data()+8, s2: "nlikely", n: 7) != 0)
5254 break;
5255 return AttributeCommonInfo::AT_Unlikely; // "clang::unlikely"
5256 }
5257 break;
5258 case 'g': // 9 strings to match.
5259 if (memcmp(s1: Name.data()+1, s2: "nu::", n: 4) != 0)
5260 break;
5261 switch (Name[5]) {
5262 default: break;
5263 case 'a': // 2 strings to match.
5264 switch (Name[6]) {
5265 default: break;
5266 case 'l': // 1 string to match.
5267 if (memcmp(s1: Name.data()+7, s2: "loc_size", n: 8) != 0)
5268 break;
5269 return AttributeCommonInfo::AT_AllocSize; // "gnu::alloc_size"
5270 case 'r': // 1 string to match.
5271 if (memcmp(s1: Name.data()+7, s2: "tificial", n: 8) != 0)
5272 break;
5273 return AttributeCommonInfo::AT_Artificial; // "gnu::artificial"
5274 }
5275 break;
5276 case 'd': // 2 strings to match.
5277 if (Name[6] != 'e')
5278 break;
5279 switch (Name[7]) {
5280 default: break;
5281 case 'p': // 1 string to match.
5282 if (memcmp(s1: Name.data()+8, s2: "recated", n: 7) != 0)
5283 break;
5284 return AttributeCommonInfo::AT_Deprecated; // "gnu::deprecated"
5285 case 's': // 1 string to match.
5286 if (memcmp(s1: Name.data()+8, s2: "tructor", n: 7) != 0)
5287 break;
5288 return AttributeCommonInfo::AT_Destructor; // "gnu::destructor"
5289 }
5290 break;
5291 case 'f': // 1 string to match.
5292 if (memcmp(s1: Name.data()+6, s2: "ormat_arg", n: 9) != 0)
5293 break;
5294 return AttributeCommonInfo::AT_FormatArg; // "gnu::format_arg"
5295 case 'g': // 1 string to match.
5296 if (memcmp(s1: Name.data()+6, s2: "nu_inline", n: 9) != 0)
5297 break;
5298 return AttributeCommonInfo::AT_GNUInline; // "gnu::gnu_inline"
5299 case 'n': // 1 string to match.
5300 if (memcmp(s1: Name.data()+6, s2: "ocf_check", n: 9) != 0)
5301 break;
5302 return AttributeCommonInfo::AT_AnyX86NoCfCheck; // "gnu::nocf_check"
5303 case 's': // 1 string to match.
5304 if (memcmp(s1: Name.data()+6, s2: "hort_call", n: 9) != 0)
5305 break;
5306 return AttributeCommonInfo::AT_MipsShortCall; // "gnu::short_call"
5307 case 'v': // 1 string to match.
5308 if (memcmp(s1: Name.data()+6, s2: "isibility", n: 9) != 0)
5309 break;
5310 return AttributeCommonInfo::AT_Visibility; // "gnu::visibility"
5311 }
5312 break;
5313 }
5314 break;
5315 case 16: // 10 strings to match.
5316 switch (Name[0]) {
5317 default: break;
5318 case 'c': // 3 strings to match.
5319 if (memcmp(s1: Name.data()+1, s2: "lang::", n: 6) != 0)
5320 break;
5321 switch (Name[7]) {
5322 default: break;
5323 case 'f': // 1 string to match.
5324 if (memcmp(s1: Name.data()+8, s2: "lag_enum", n: 8) != 0)
5325 break;
5326 return AttributeCommonInfo::AT_FlagEnum; // "clang::flag_enum"
5327 case 'n': // 1 string to match.
5328 if (memcmp(s1: Name.data()+8, s2: "ouwtable", n: 8) != 0)
5329 break;
5330 return AttributeCommonInfo::AT_NoUwtable; // "clang::nouwtable"
5331 case 's': // 1 string to match.
5332 if (memcmp(s1: Name.data()+8, s2: "wiftcall", n: 8) != 0)
5333 break;
5334 return AttributeCommonInfo::AT_SwiftCall; // "clang::swiftcall"
5335 }
5336 break;
5337 case 'g': // 6 strings to match.
5338 if (memcmp(s1: Name.data()+1, s2: "nu::", n: 4) != 0)
5339 break;
5340 switch (Name[5]) {
5341 default: break;
5342 case 'a': // 1 string to match.
5343 if (memcmp(s1: Name.data()+6, s2: "lloc_align", n: 10) != 0)
5344 break;
5345 return AttributeCommonInfo::AT_AllocAlign; // "gnu::alloc_align"
5346 case 'c': // 1 string to match.
5347 if (memcmp(s1: Name.data()+6, s2: "onstructor", n: 10) != 0)
5348 break;
5349 return AttributeCommonInfo::AT_Constructor; // "gnu::constructor"
5350 case 'f': // 1 string to match.
5351 if (memcmp(s1: Name.data()+6, s2: "allthrough", n: 10) != 0)
5352 break;
5353 return AttributeCommonInfo::AT_FallThrough; // "gnu::fallthrough"
5354 case 'n': // 1 string to match.
5355 if (memcmp(s1: Name.data()+6, s2: "omicromips", n: 10) != 0)
5356 break;
5357 return AttributeCommonInfo::AT_NoMicroMips; // "gnu::nomicromips"
5358 case 'v': // 1 string to match.
5359 if (memcmp(s1: Name.data()+6, s2: "ector_size", n: 10) != 0)
5360 break;
5361 return AttributeCommonInfo::AT_VectorSize; // "gnu::vector_size"
5362 case 'w': // 1 string to match.
5363 if (memcmp(s1: Name.data()+6, s2: "arn_unused", n: 10) != 0)
5364 break;
5365 return AttributeCommonInfo::AT_WarnUnused; // "gnu::warn_unused"
5366 }
5367 break;
5368 case 'r': // 1 string to match.
5369 if (memcmp(s1: Name.data()+1, s2: "iscv::vector_cc", n: 15) != 0)
5370 break;
5371 return AttributeCommonInfo::AT_RISCVVectorCC; // "riscv::vector_cc"
5372 }
5373 break;
5374 case 17: // 7 strings to match.
5375 if (memcmp(s1: Name.data()+0, s2: "clang::", n: 7) != 0)
5376 break;
5377 switch (Name[7]) {
5378 default: break;
5379 case 'a': // 1 string to match.
5380 if (memcmp(s1: Name.data()+8, s2: "llocating", n: 9) != 0)
5381 break;
5382 return AttributeCommonInfo::AT_Allocating; // "clang::allocating"
5383 case 'c': // 3 strings to match.
5384 if (Name[8] != 'o')
5385 break;
5386 switch (Name[9]) {
5387 default: break;
5388 case 'd': // 1 string to match.
5389 if (memcmp(s1: Name.data()+10, s2: "e_align", n: 7) != 0)
5390 break;
5391 return AttributeCommonInfo::AT_CodeAlign; // "clang::code_align"
5392 case 'n': // 1 string to match.
5393 if (memcmp(s1: Name.data()+10, s2: "vergent", n: 7) != 0)
5394 break;
5395 return AttributeCommonInfo::AT_Convergent; // "clang::convergent"
5396 case 'u': // 1 string to match.
5397 if (memcmp(s1: Name.data()+10, s2: "nted_by", n: 7) != 0)
5398 break;
5399 return AttributeCommonInfo::AT_CountedBy; // "clang::counted_by"
5400 }
5401 break;
5402 case 'n': // 1 string to match.
5403 if (memcmp(s1: Name.data()+8, s2: "o_builtin", n: 9) != 0)
5404 break;
5405 return AttributeCommonInfo::AT_NoBuiltin; // "clang::no_builtin"
5406 case 'u': // 1 string to match.
5407 if (memcmp(s1: Name.data()+8, s2: "se_handle", n: 9) != 0)
5408 break;
5409 return AttributeCommonInfo::AT_UseHandle; // "clang::use_handle"
5410 case 'v': // 1 string to match.
5411 if (memcmp(s1: Name.data()+8, s2: "ectorcall", n: 9) != 0)
5412 break;
5413 return AttributeCommonInfo::AT_VectorCall; // "clang::vectorcall"
5414 }
5415 break;
5416 case 18: // 21 strings to match.
5417 switch (Name[0]) {
5418 default: break;
5419 case 'c': // 18 strings to match.
5420 if (memcmp(s1: Name.data()+1, s2: "lang::", n: 6) != 0)
5421 break;
5422 switch (Name[7]) {
5423 default: break;
5424 case 'c': // 2 strings to match.
5425 switch (Name[8]) {
5426 default: break;
5427 case 'a': // 1 string to match.
5428 if (memcmp(s1: Name.data()+9, s2: "lled_once", n: 9) != 0)
5429 break;
5430 return AttributeCommonInfo::AT_CalledOnce; // "clang::called_once"
5431 case 'f': // 1 string to match.
5432 if (memcmp(s1: Name.data()+9, s2: "_consumed", n: 9) != 0)
5433 break;
5434 return AttributeCommonInfo::AT_CFConsumed; // "clang::cf_consumed"
5435 }
5436 break;
5437 case 'e': // 2 strings to match.
5438 switch (Name[8]) {
5439 default: break;
5440 case 'n': // 1 string to match.
5441 if (memcmp(s1: Name.data()+9, s2: "force_tcb", n: 9) != 0)
5442 break;
5443 return AttributeCommonInfo::AT_EnforceTCB; // "clang::enforce_tcb"
5444 case 'x': // 1 string to match.
5445 if (memcmp(s1: Name.data()+9, s2: "port_name", n: 9) != 0)
5446 break;
5447 return AttributeCommonInfo::AT_WebAssemblyExportName; // "clang::export_name"
5448 }
5449 break;
5450 case 'i': // 1 string to match.
5451 if (memcmp(s1: Name.data()+8, s2: "mport_name", n: 10) != 0)
5452 break;
5453 return AttributeCommonInfo::AT_WebAssemblyImportName; // "clang::import_name"
5454 case 'm': // 2 strings to match.
5455 if (Name[8] != 'a')
5456 break;
5457 switch (Name[9]) {
5458 default: break;
5459 case 't': // 1 string to match.
5460 if (memcmp(s1: Name.data()+10, s2: "rix_type", n: 8) != 0)
5461 break;
5462 return AttributeCommonInfo::AT_MatrixType; // "clang::matrix_type"
5463 case 'y': // 1 string to match.
5464 if (memcmp(s1: Name.data()+10, s2: "be_undef", n: 8) != 0)
5465 break;
5466 return AttributeCommonInfo::AT_MaybeUndef; // "clang::maybe_undef"
5467 }
5468 break;
5469 case 'n': // 4 strings to match.
5470 switch (Name[8]) {
5471 default: break;
5472 case 'o': // 3 strings to match.
5473 switch (Name[9]) {
5474 default: break;
5475 case '_': // 1 string to match.
5476 if (memcmp(s1: Name.data()+10, s2: "sanitize", n: 8) != 0)
5477 break;
5478 return AttributeCommonInfo::AT_NoSanitize; // "clang::no_sanitize"
5479 case 'd': // 1 string to match.
5480 if (memcmp(s1: Name.data()+10, s2: "uplicate", n: 8) != 0)
5481 break;
5482 return AttributeCommonInfo::AT_NoDuplicate; // "clang::noduplicate"
5483 case 'n': // 1 string to match.
5484 if (memcmp(s1: Name.data()+10, s2: "blocking", n: 8) != 0)
5485 break;
5486 return AttributeCommonInfo::AT_NonBlocking; // "clang::nonblocking"
5487 }
5488 break;
5489 case 's': // 1 string to match.
5490 if (memcmp(s1: Name.data()+9, s2: "_consumed", n: 9) != 0)
5491 break;
5492 return AttributeCommonInfo::AT_NSConsumed; // "clang::ns_consumed"
5493 }
5494 break;
5495 case 'o': // 3 strings to match.
5496 switch (Name[8]) {
5497 default: break;
5498 case 'b': // 2 strings to match.
5499 if (memcmp(s1: Name.data()+9, s2: "jc_", n: 3) != 0)
5500 break;
5501 switch (Name[12]) {
5502 default: break;
5503 case 'b': // 1 string to match.
5504 if (memcmp(s1: Name.data()+13, s2: "ridge", n: 5) != 0)
5505 break;
5506 return AttributeCommonInfo::AT_ObjCBridge; // "clang::objc_bridge"
5507 case 'd': // 1 string to match.
5508 if (memcmp(s1: Name.data()+13, s2: "irect", n: 5) != 0)
5509 break;
5510 return AttributeCommonInfo::AT_ObjCDirect; // "clang::objc_direct"
5511 }
5512 break;
5513 case 's': // 1 string to match.
5514 if (memcmp(s1: Name.data()+9, s2: "_consumed", n: 9) != 0)
5515 break;
5516 return AttributeCommonInfo::AT_OSConsumed; // "clang::os_consumed"
5517 }
5518 break;
5519 case 's': // 2 strings to match.
5520 switch (Name[8]) {
5521 default: break;
5522 case 'w': // 1 string to match.
5523 if (memcmp(s1: Name.data()+9, s2: "ift_async", n: 9) != 0)
5524 break;
5525 return AttributeCommonInfo::AT_SwiftAsync; // "clang::swift_async"
5526 case 'y': // 1 string to match.
5527 if (memcmp(s1: Name.data()+9, s2: "cl_kernel", n: 9) != 0)
5528 break;
5529 return AttributeCommonInfo::AT_SYCLKernel; // "clang::sycl_kernel"
5530 }
5531 break;
5532 case 'u': // 1 string to match.
5533 if (memcmp(s1: Name.data()+8, s2: "navailable", n: 10) != 0)
5534 break;
5535 return AttributeCommonInfo::AT_Unavailable; // "clang::unavailable"
5536 case 'w': // 1 string to match.
5537 if (memcmp(s1: Name.data()+8, s2: "eak_import", n: 10) != 0)
5538 break;
5539 return AttributeCommonInfo::AT_WeakImport; // "clang::weak_import"
5540 }
5541 break;
5542 case 'g': // 3 strings to match.
5543 if (memcmp(s1: Name.data()+1, s2: "nu::", n: 4) != 0)
5544 break;
5545 switch (Name[5]) {
5546 default: break;
5547 case 'a': // 1 string to match.
5548 if (memcmp(s1: Name.data()+6, s2: "lways_inline", n: 12) != 0)
5549 break;
5550 return AttributeCommonInfo::AT_AlwaysInline; // "gnu::always_inline"
5551 case 'r': // 1 string to match.
5552 if (memcmp(s1: Name.data()+6, s2: "eturns_twice", n: 12) != 0)
5553 break;
5554 return AttributeCommonInfo::AT_ReturnsTwice; // "gnu::returns_twice"
5555 case 't': // 1 string to match.
5556 if (memcmp(s1: Name.data()+6, s2: "arget_clones", n: 12) != 0)
5557 break;
5558 return AttributeCommonInfo::AT_TargetClones; // "gnu::target_clones"
5559 }
5560 break;
5561 }
5562 break;
5563 case 19: // 14 strings to match.
5564 switch (Name[0]) {
5565 default: break;
5566 case 'c': // 11 strings to match.
5567 if (memcmp(s1: Name.data()+1, s2: "lang::", n: 6) != 0)
5568 break;
5569 switch (Name[7]) {
5570 default: break;
5571 case 'a': // 1 string to match.
5572 if (memcmp(s1: Name.data()+8, s2: "vailability", n: 11) != 0)
5573 break;
5574 return AttributeCommonInfo::AT_Availability; // "clang::availability"
5575 case 'b': // 2 strings to match.
5576 if (memcmp(s1: Name.data()+8, s2: "tf_", n: 3) != 0)
5577 break;
5578 switch (Name[11]) {
5579 default: break;
5580 case 'd': // 1 string to match.
5581 if (memcmp(s1: Name.data()+12, s2: "ecl_tag", n: 7) != 0)
5582 break;
5583 return AttributeCommonInfo::AT_BTFDeclTag; // "clang::btf_decl_tag"
5584 case 't': // 1 string to match.
5585 if (memcmp(s1: Name.data()+12, s2: "ype_tag", n: 7) != 0)
5586 break;
5587 return AttributeCommonInfo::AT_BTFTypeTag; // "clang::btf_type_tag"
5588 }
5589 break;
5590 case 'c': // 3 strings to match.
5591 switch (Name[8]) {
5592 default: break;
5593 case 'o': // 1 string to match.
5594 if (memcmp(s1: Name.data()+9, s2: "ro_wrapper", n: 10) != 0)
5595 break;
5596 return AttributeCommonInfo::AT_CoroWrapper; // "clang::coro_wrapper"
5597 case 'p': // 2 strings to match.
5598 if (memcmp(s1: Name.data()+9, s2: "u_", n: 2) != 0)
5599 break;
5600 switch (Name[11]) {
5601 default: break;
5602 case 'd': // 1 string to match.
5603 if (memcmp(s1: Name.data()+12, s2: "ispatch", n: 7) != 0)
5604 break;
5605 return AttributeCommonInfo::AT_CPUDispatch; // "clang::cpu_dispatch"
5606 case 's': // 1 string to match.
5607 if (memcmp(s1: Name.data()+12, s2: "pecific", n: 7) != 0)
5608 break;
5609 return AttributeCommonInfo::AT_CPUSpecific; // "clang::cpu_specific"
5610 }
5611 break;
5612 }
5613 break;
5614 case 'n': // 1 string to match.
5615 if (memcmp(s1: Name.data()+8, s2: "vptx_kernel", n: 11) != 0)
5616 break;
5617 return AttributeCommonInfo::AT_NVPTXKernel; // "clang::nvptx_kernel"
5618 case 'o': // 3 strings to match.
5619 switch (Name[8]) {
5620 default: break;
5621 case 'b': // 1 string to match.
5622 if (memcmp(s1: Name.data()+9, s2: "jc_boxable", n: 10) != 0)
5623 break;
5624 return AttributeCommonInfo::AT_ObjCBoxable; // "clang::objc_boxable"
5625 case 'p': // 1 string to match.
5626 if (memcmp(s1: Name.data()+9, s2: "encl_local", n: 10) != 0)
5627 break;
5628 return AttributeCommonInfo::AT_OpenCLLocalAddressSpace; // "clang::opencl_local"
5629 case 'v': // 1 string to match.
5630 if (memcmp(s1: Name.data()+9, s2: "erloadable", n: 10) != 0)
5631 break;
5632 return AttributeCommonInfo::AT_Overloadable; // "clang::overloadable"
5633 }
5634 break;
5635 case 'p': // 1 string to match.
5636 if (memcmp(s1: Name.data()+8, s2: "reserve_all", n: 11) != 0)
5637 break;
5638 return AttributeCommonInfo::AT_PreserveAll; // "clang::preserve_all"
5639 }
5640 break;
5641 case 'g': // 3 strings to match.
5642 if (memcmp(s1: Name.data()+1, s2: "nu::", n: 4) != 0)
5643 break;
5644 switch (Name[5]) {
5645 default: break;
5646 case 'a': // 1 string to match.
5647 if (memcmp(s1: Name.data()+6, s2: "ssume_aligned", n: 13) != 0)
5648 break;
5649 return AttributeCommonInfo::AT_AssumeAligned; // "gnu::assume_aligned"
5650 case 'n': // 1 string to match.
5651 if (memcmp(s1: Name.data()+6, s2: "o_split_stack", n: 13) != 0)
5652 break;
5653 return AttributeCommonInfo::AT_NoSplitStack; // "gnu::no_split_stack"
5654 case 't': // 1 string to match.
5655 if (memcmp(s1: Name.data()+6, s2: "arget_version", n: 13) != 0)
5656 break;
5657 return AttributeCommonInfo::AT_TargetVersion; // "gnu::target_version"
5658 }
5659 break;
5660 }
5661 break;
5662 case 20: // 14 strings to match.
5663 switch (Name[0]) {
5664 default: break;
5665 case 'c': // 12 strings to match.
5666 if (memcmp(s1: Name.data()+1, s2: "lang::", n: 6) != 0)
5667 break;
5668 switch (Name[7]) {
5669 default: break;
5670 case 'a': // 4 strings to match.
5671 switch (Name[8]) {
5672 default: break;
5673 case 'd': // 1 string to match.
5674 if (memcmp(s1: Name.data()+9, s2: "dress_space", n: 11) != 0)
5675 break;
5676 return AttributeCommonInfo::AT_AddressSpace; // "clang::address_space"
5677 case 'l': // 1 string to match.
5678 if (memcmp(s1: Name.data()+9, s2: "ways_inline", n: 11) != 0)
5679 break;
5680 return AttributeCommonInfo::AT_AlwaysInline; // "clang::always_inline"
5681 case 'm': // 1 string to match.
5682 if (memcmp(s1: Name.data()+9, s2: "dgpu_kernel", n: 11) != 0)
5683 break;
5684 return AttributeCommonInfo::AT_AMDGPUKernelCall; // "clang::amdgpu_kernel"
5685 case 'n': // 1 string to match.
5686 if (memcmp(s1: Name.data()+9, s2: "notate_type", n: 11) != 0)
5687 break;
5688 return AttributeCommonInfo::AT_AnnotateType; // "clang::annotate_type"
5689 }
5690 break;
5691 case 'b': // 1 string to match.
5692 if (memcmp(s1: Name.data()+8, s2: "uiltin_alias", n: 12) != 0)
5693 break;
5694 return AttributeCommonInfo::AT_BuiltinAlias; // "clang::builtin_alias"
5695 case 'i': // 1 string to match.
5696 if (memcmp(s1: Name.data()+8, s2: "mport_module", n: 12) != 0)
5697 break;
5698 return AttributeCommonInfo::AT_WebAssemblyImportModule; // "clang::import_module"
5699 case 'n': // 1 string to match.
5700 if (memcmp(s1: Name.data()+8, s2: "onallocating", n: 12) != 0)
5701 break;
5702 return AttributeCommonInfo::AT_NonAllocating; // "clang::nonallocating"
5703 case 'o': // 1 string to match.
5704 if (memcmp(s1: Name.data()+8, s2: "pencl_global", n: 12) != 0)
5705 break;
5706 return AttributeCommonInfo::AT_OpenCLGlobalAddressSpace; // "clang::opencl_global"
5707 case 'p': // 2 strings to match.
5708 if (memcmp(s1: Name.data()+8, s2: "reserve_", n: 8) != 0)
5709 break;
5710 switch (Name[16]) {
5711 default: break;
5712 case 'm': // 1 string to match.
5713 if (memcmp(s1: Name.data()+17, s2: "ost", n: 3) != 0)
5714 break;
5715 return AttributeCommonInfo::AT_PreserveMost; // "clang::preserve_most"
5716 case 'n': // 1 string to match.
5717 if (memcmp(s1: Name.data()+17, s2: "one", n: 3) != 0)
5718 break;
5719 return AttributeCommonInfo::AT_PreserveNone; // "clang::preserve_none"
5720 }
5721 break;
5722 case 's': // 1 string to match.
5723 if (memcmp(s1: Name.data()+8, s2: "wift_context", n: 12) != 0)
5724 break;
5725 return AttributeCommonInfo::AT_SwiftContext; // "clang::swift_context"
5726 case 'x': // 1 string to match.
5727 if (memcmp(s1: Name.data()+8, s2: "ray_log_args", n: 12) != 0)
5728 break;
5729 return AttributeCommonInfo::AT_XRayLogArgs; // "clang::xray_log_args"
5730 }
5731 break;
5732 case 'g': // 2 strings to match.
5733 if (memcmp(s1: Name.data()+1, s2: "nu::", n: 4) != 0)
5734 break;
5735 switch (Name[5]) {
5736 default: break;
5737 case 'f': // 1 string to match.
5738 if (memcmp(s1: Name.data()+6, s2: "unction_return", n: 14) != 0)
5739 break;
5740 return AttributeCommonInfo::AT_FunctionReturnThunks; // "gnu::function_return"
5741 case 'r': // 1 string to match.
5742 if (memcmp(s1: Name.data()+6, s2: "eturns_nonnull", n: 14) != 0)
5743 break;
5744 return AttributeCommonInfo::AT_ReturnsNonNull; // "gnu::returns_nonnull"
5745 }
5746 break;
5747 }
5748 break;
5749 case 21: // 9 strings to match.
5750 switch (Name[0]) {
5751 default: break;
5752 case 'c': // 8 strings to match.
5753 if (memcmp(s1: Name.data()+1, s2: "lang::", n: 6) != 0)
5754 break;
5755 switch (Name[7]) {
5756 default: break;
5757 case 'a': // 1 string to match.
5758 if (memcmp(s1: Name.data()+8, s2: "cquire_handle", n: 13) != 0)
5759 break;
5760 return AttributeCommonInfo::AT_AcquireHandle; // "clang::acquire_handle"
5761 case 'o': // 4 strings to match.
5762 switch (Name[8]) {
5763 default: break;
5764 case 'b': // 2 strings to match.
5765 if (memcmp(s1: Name.data()+9, s2: "jc_", n: 3) != 0)
5766 break;
5767 switch (Name[12]) {
5768 default: break;
5769 case 'e': // 1 string to match.
5770 if (memcmp(s1: Name.data()+13, s2: "xception", n: 8) != 0)
5771 break;
5772 return AttributeCommonInfo::AT_ObjCException; // "clang::objc_exception"
5773 case 'o': // 1 string to match.
5774 if (memcmp(s1: Name.data()+13, s2: "wnership", n: 8) != 0)
5775 break;
5776 return AttributeCommonInfo::AT_ObjCOwnership; // "clang::objc_ownership"
5777 }
5778 break;
5779 case 'p': // 2 strings to match.
5780 if (memcmp(s1: Name.data()+9, s2: "encl_", n: 5) != 0)
5781 break;
5782 switch (Name[14]) {
5783 default: break;
5784 case 'g': // 1 string to match.
5785 if (memcmp(s1: Name.data()+15, s2: "eneric", n: 6) != 0)
5786 break;
5787 return AttributeCommonInfo::AT_OpenCLGenericAddressSpace; // "clang::opencl_generic"
5788 case 'p': // 1 string to match.
5789 if (memcmp(s1: Name.data()+15, s2: "rivate", n: 6) != 0)
5790 break;
5791 return AttributeCommonInfo::AT_OpenCLPrivateAddressSpace; // "clang::opencl_private"
5792 }
5793 break;
5794 }
5795 break;
5796 case 'p': // 1 string to match.
5797 if (memcmp(s1: Name.data()+8, s2: "referred_type", n: 13) != 0)
5798 break;
5799 return AttributeCommonInfo::AT_PreferredType; // "clang::preferred_type"
5800 case 'r': // 1 string to match.
5801 if (memcmp(s1: Name.data()+8, s2: "elease_handle", n: 13) != 0)
5802 break;
5803 return AttributeCommonInfo::AT_ReleaseHandle; // "clang::release_handle"
5804 case 's': // 1 string to match.
5805 if (memcmp(s1: Name.data()+8, s2: "wiftasynccall", n: 13) != 0)
5806 break;
5807 return AttributeCommonInfo::AT_SwiftAsyncCall; // "clang::swiftasynccall"
5808 }
5809 break;
5810 case 'g': // 1 string to match.
5811 if (memcmp(s1: Name.data()+1, s2: "nu::randomize_layout", n: 20) != 0)
5812 break;
5813 return AttributeCommonInfo::AT_RandomizeLayout; // "gnu::randomize_layout"
5814 }
5815 break;
5816 case 22: // 10 strings to match.
5817 switch (Name[0]) {
5818 default: break;
5819 case 'c': // 9 strings to match.
5820 if (memcmp(s1: Name.data()+1, s2: "lang::", n: 6) != 0)
5821 break;
5822 switch (Name[7]) {
5823 default: break;
5824 case 'a': // 1 string to match.
5825 if (memcmp(s1: Name.data()+8, s2: "arch64_sve_pcs", n: 14) != 0)
5826 break;
5827 return AttributeCommonInfo::AT_AArch64SVEPcs; // "clang::aarch64_sve_pcs"
5828 case 'n': // 1 string to match.
5829 if (memcmp(s1: Name.data()+8, s2: "ot_tail_called", n: 14) != 0)
5830 break;
5831 return AttributeCommonInfo::AT_NotTailCalled; // "clang::not_tail_called"
5832 case 'o': // 5 strings to match.
5833 switch (Name[8]) {
5834 default: break;
5835 case 'b': // 2 strings to match.
5836 if (memcmp(s1: Name.data()+9, s2: "jc_", n: 3) != 0)
5837 break;
5838 switch (Name[12]) {
5839 default: break;
5840 case 'c': // 1 string to match.
5841 if (memcmp(s1: Name.data()+13, s2: "lass_stub", n: 9) != 0)
5842 break;
5843 return AttributeCommonInfo::AT_ObjCClassStub; // "clang::objc_class_stub"
5844 case 'r': // 1 string to match.
5845 if (memcmp(s1: Name.data()+13, s2: "oot_class", n: 9) != 0)
5846 break;
5847 return AttributeCommonInfo::AT_ObjCRootClass; // "clang::objc_root_class"
5848 }
5849 break;
5850 case 'p': // 1 string to match.
5851 if (memcmp(s1: Name.data()+9, s2: "encl_constant", n: 13) != 0)
5852 break;
5853 return AttributeCommonInfo::AT_OpenCLConstantAddressSpace; // "clang::opencl_constant"
5854 case 'w': // 2 strings to match.
5855 if (memcmp(s1: Name.data()+9, s2: "nership_", n: 8) != 0)
5856 break;
5857 switch (Name[17]) {
5858 default: break;
5859 case 'h': // 1 string to match.
5860 if (memcmp(s1: Name.data()+18, s2: "olds", n: 4) != 0)
5861 break;
5862 return AttributeCommonInfo::AT_Ownership; // "clang::ownership_holds"
5863 case 't': // 1 string to match.
5864 if (memcmp(s1: Name.data()+18, s2: "akes", n: 4) != 0)
5865 break;
5866 return AttributeCommonInfo::AT_Ownership; // "clang::ownership_takes"
5867 }
5868 break;
5869 }
5870 break;
5871 case 'r': // 1 string to match.
5872 if (memcmp(s1: Name.data()+8, s2: "iscv_vector_cc", n: 14) != 0)
5873 break;
5874 return AttributeCommonInfo::AT_RISCVVectorCC; // "clang::riscv_vector_cc"
5875 case 't': // 1 string to match.
5876 if (memcmp(s1: Name.data()+8, s2: "ype_visibility", n: 14) != 0)
5877 break;
5878 return AttributeCommonInfo::AT_TypeVisibility; // "clang::type_visibility"
5879 }
5880 break;
5881 case 'g': // 1 string to match.
5882 if (memcmp(s1: Name.data()+1, s2: "nu::transparent_union", n: 21) != 0)
5883 break;
5884 return AttributeCommonInfo::AT_TransparentUnion; // "gnu::transparent_union"
5885 }
5886 break;
5887 case 23: // 13 strings to match.
5888 switch (Name[0]) {
5889 default: break;
5890 case 'c': // 10 strings to match.
5891 if (memcmp(s1: Name.data()+1, s2: "lang::", n: 6) != 0)
5892 break;
5893 switch (Name[7]) {
5894 default: break;
5895 case 'c': // 1 string to match.
5896 if (memcmp(s1: Name.data()+8, s2: "oro_return_type", n: 15) != 0)
5897 break;
5898 return AttributeCommonInfo::AT_CoroReturnType; // "clang::coro_return_type"
5899 case 'e': // 1 string to match.
5900 if (memcmp(s1: Name.data()+8, s2: "nforce_tcb_leaf", n: 15) != 0)
5901 break;
5902 return AttributeCommonInfo::AT_EnforceTCBLeaf; // "clang::enforce_tcb_leaf"
5903 case 'h': // 1 string to match.
5904 if (memcmp(s1: Name.data()+8, s2: "ybrid_patchable", n: 15) != 0)
5905 break;
5906 return AttributeCommonInfo::AT_HybridPatchable; // "clang::hybrid_patchable"
5907 case 'i': // 1 string to match.
5908 if (memcmp(s1: Name.data()+8, s2: "nternal_linkage", n: 15) != 0)
5909 break;
5910 return AttributeCommonInfo::AT_InternalLinkage; // "clang::internal_linkage"
5911 case 'm': // 1 string to match.
5912 if (memcmp(s1: Name.data()+8, s2: "in_vector_width", n: 15) != 0)
5913 break;
5914 return AttributeCommonInfo::AT_MinVectorWidth; // "clang::min_vector_width"
5915 case 'n': // 2 strings to match.
5916 switch (Name[8]) {
5917 default: break;
5918 case 'e': // 1 string to match.
5919 if (memcmp(s1: Name.data()+9, s2: "on_vector_type", n: 14) != 0)
5920 break;
5921 return AttributeCommonInfo::AT_NeonVectorType; // "clang::neon_vector_type"
5922 case 's': // 1 string to match.
5923 if (memcmp(s1: Name.data()+9, s2: "_consumes_self", n: 14) != 0)
5924 break;
5925 return AttributeCommonInfo::AT_NSConsumesSelf; // "clang::ns_consumes_self"
5926 }
5927 break;
5928 case 'o': // 1 string to match.
5929 if (memcmp(s1: Name.data()+8, s2: "s_consumes_this", n: 15) != 0)
5930 break;
5931 return AttributeCommonInfo::AT_OSConsumesThis; // "clang::os_consumes_this"
5932 case 'p': // 1 string to match.
5933 if (memcmp(s1: Name.data()+8, s2: "ass_object_size", n: 15) != 0)
5934 break;
5935 return AttributeCommonInfo::AT_PassObjectSize; // "clang::pass_object_size"
5936 case 's': // 1 string to match.
5937 if (memcmp(s1: Name.data()+8, s2: "ized_by_or_null", n: 15) != 0)
5938 break;
5939 return AttributeCommonInfo::AT_SizedByOrNull; // "clang::sized_by_or_null"
5940 }
5941 break;
5942 case 'g': // 3 strings to match.
5943 if (memcmp(s1: Name.data()+1, s2: "nu::", n: 4) != 0)
5944 break;
5945 switch (Name[5]) {
5946 default: break;
5947 case 'n': // 2 strings to match.
5948 if (memcmp(s1: Name.data()+6, s2: "o_s", n: 3) != 0)
5949 break;
5950 switch (Name[9]) {
5951 default: break;
5952 case 'a': // 1 string to match.
5953 if (memcmp(s1: Name.data()+10, s2: "nitize_thread", n: 13) != 0)
5954 break;
5955 return AttributeCommonInfo::AT_NoSanitizeSpecific; // "gnu::no_sanitize_thread"
5956 case 't': // 1 string to match.
5957 if (memcmp(s1: Name.data()+10, s2: "ack_protector", n: 13) != 0)
5958 break;
5959 return AttributeCommonInfo::AT_NoStackProtector; // "gnu::no_stack_protector"
5960 }
5961 break;
5962 case 'w': // 1 string to match.
5963 if (memcmp(s1: Name.data()+6, s2: "arn_unused_result", n: 17) != 0)
5964 break;
5965 return AttributeCommonInfo::AT_WarnUnusedResult; // "gnu::warn_unused_result"
5966 }
5967 break;
5968 }
5969 break;
5970 case 24: // 6 strings to match.
5971 switch (Name[0]) {
5972 default: break;
5973 case 'c': // 3 strings to match.
5974 if (memcmp(s1: Name.data()+1, s2: "lang::", n: 6) != 0)
5975 break;
5976 switch (Name[7]) {
5977 default: break;
5978 case 'o': // 2 strings to match.
5979 switch (Name[8]) {
5980 default: break;
5981 case 'b': // 1 string to match.
5982 if (memcmp(s1: Name.data()+9, s2: "jc_runtime_name", n: 15) != 0)
5983 break;
5984 return AttributeCommonInfo::AT_ObjCRuntimeName; // "clang::objc_runtime_name"
5985 case 'w': // 1 string to match.
5986 if (memcmp(s1: Name.data()+9, s2: "nership_returns", n: 15) != 0)
5987 break;
5988 return AttributeCommonInfo::AT_Ownership; // "clang::ownership_returns"
5989 }
5990 break;
5991 case 's': // 1 string to match.
5992 if (memcmp(s1: Name.data()+8, s2: "wift_async_error", n: 16) != 0)
5993 break;
5994 return AttributeCommonInfo::AT_SwiftAsyncError; // "clang::swift_async_error"
5995 }
5996 break;
5997 case 'g': // 3 strings to match.
5998 if (memcmp(s1: Name.data()+1, s2: "nu::", n: 4) != 0)
5999 break;
6000 switch (Name[5]) {
6001 default: break;
6002 case 'n': // 2 strings to match.
6003 if (memcmp(s1: Name.data()+6, s2: "o_", n: 2) != 0)
6004 break;
6005 switch (Name[8]) {
6006 default: break;
6007 case 'r': // 1 string to match.
6008 if (memcmp(s1: Name.data()+9, s2: "andomize_layout", n: 15) != 0)
6009 break;
6010 return AttributeCommonInfo::AT_NoRandomizeLayout; // "gnu::no_randomize_layout"
6011 case 's': // 1 string to match.
6012 if (memcmp(s1: Name.data()+9, s2: "anitize_address", n: 15) != 0)
6013 break;
6014 return AttributeCommonInfo::AT_NoSanitizeSpecific; // "gnu::no_sanitize_address"
6015 }
6016 break;
6017 case 'z': // 1 string to match.
6018 if (memcmp(s1: Name.data()+6, s2: "ero_call_used_regs", n: 18) != 0)
6019 break;
6020 return AttributeCommonInfo::AT_ZeroCallUsedRegs; // "gnu::zero_call_used_regs"
6021 }
6022 break;
6023 }
6024 break;
6025 case 25: // 14 strings to match.
6026 if (memcmp(s1: Name.data()+0, s2: "clang::", n: 7) != 0)
6027 break;
6028 switch (Name[7]) {
6029 default: break;
6030 case 'a': // 1 string to match.
6031 if (memcmp(s1: Name.data()+8, s2: "arch64_vector_pcs", n: 17) != 0)
6032 break;
6033 return AttributeCommonInfo::AT_AArch64VectorPcs; // "clang::aarch64_vector_pcs"
6034 case 'c': // 2 strings to match.
6035 if (Name[8] != 'o')
6036 break;
6037 switch (Name[9]) {
6038 default: break;
6039 case 'r': // 1 string to match.
6040 if (memcmp(s1: Name.data()+10, s2: "o_lifetimebound", n: 15) != 0)
6041 break;
6042 return AttributeCommonInfo::AT_CoroLifetimeBound; // "clang::coro_lifetimebound"
6043 case 'u': // 1 string to match.
6044 if (memcmp(s1: Name.data()+10, s2: "nted_by_or_null", n: 15) != 0)
6045 break;
6046 return AttributeCommonInfo::AT_CountedByOrNull; // "clang::counted_by_or_null"
6047 }
6048 break;
6049 case 'd': // 1 string to match.
6050 if (memcmp(s1: Name.data()+8, s2: "isable_tail_calls", n: 17) != 0)
6051 break;
6052 return AttributeCommonInfo::AT_DisableTailCalls; // "clang::disable_tail_calls"
6053 case 'e': // 1 string to match.
6054 if (memcmp(s1: Name.data()+8, s2: "num_extensibility", n: 17) != 0)
6055 break;
6056 return AttributeCommonInfo::AT_EnumExtensibility; // "clang::enum_extensibility"
6057 case 'i': // 1 string to match.
6058 if (memcmp(s1: Name.data()+8, s2: "boutletcollection", n: 17) != 0)
6059 break;
6060 return AttributeCommonInfo::AT_IBOutletCollection; // "clang::iboutletcollection"
6061 case 'm': // 1 string to match.
6062 if (memcmp(s1: Name.data()+8, s2: "ig_server_routine", n: 17) != 0)
6063 break;
6064 return AttributeCommonInfo::AT_MIGServerRoutine; // "clang::mig_server_routine"
6065 case 'n': // 2 strings to match.
6066 if (memcmp(s1: Name.data()+8, s2: "o_s", n: 3) != 0)
6067 break;
6068 switch (Name[11]) {
6069 default: break;
6070 case 'a': // 1 string to match.
6071 if (memcmp(s1: Name.data()+12, s2: "nitize_memory", n: 13) != 0)
6072 break;
6073 return AttributeCommonInfo::AT_NoSanitizeSpecific; // "clang::no_sanitize_memory"
6074 case 't': // 1 string to match.
6075 if (memcmp(s1: Name.data()+12, s2: "ack_protector", n: 13) != 0)
6076 break;
6077 return AttributeCommonInfo::AT_NoStackProtector; // "clang::no_stack_protector"
6078 }
6079 break;
6080 case 'o': // 3 strings to match.
6081 switch (Name[8]) {
6082 default: break;
6083 case 'b': // 2 strings to match.
6084 if (memcmp(s1: Name.data()+9, s2: "jc_", n: 3) != 0)
6085 break;
6086 switch (Name[12]) {
6087 default: break;
6088 case 'm': // 1 string to match.
6089 if (memcmp(s1: Name.data()+13, s2: "ethod_family", n: 12) != 0)
6090 break;
6091 return AttributeCommonInfo::AT_ObjCMethodFamily; // "clang::objc_method_family"
6092 case 'n': // 1 string to match.
6093 if (memcmp(s1: Name.data()+13, s2: "onlazy_class", n: 12) != 0)
6094 break;
6095 return AttributeCommonInfo::AT_ObjCNonLazyClass; // "clang::objc_nonlazy_class"
6096 }
6097 break;
6098 case 'p': // 1 string to match.
6099 if (memcmp(s1: Name.data()+9, s2: "encl_global_host", n: 16) != 0)
6100 break;
6101 return AttributeCommonInfo::AT_OpenCLGlobalHostAddressSpace; // "clang::opencl_global_host"
6102 }
6103 break;
6104 case 's': // 2 strings to match.
6105 switch (Name[8]) {
6106 default: break;
6107 case 'w': // 1 string to match.
6108 if (memcmp(s1: Name.data()+9, s2: "ift_error_result", n: 16) != 0)
6109 break;
6110 return AttributeCommonInfo::AT_SwiftErrorResult; // "clang::swift_error_result"
6111 case 'y': // 1 string to match.
6112 if (memcmp(s1: Name.data()+9, s2: "cl_special_class", n: 16) != 0)
6113 break;
6114 return AttributeCommonInfo::AT_SYCLSpecialClass; // "clang::sycl_special_class"
6115 }
6116 break;
6117 }
6118 break;
6119 case 26: // 12 strings to match.
6120 if (memcmp(s1: Name.data()+0, s2: "clang::", n: 7) != 0)
6121 break;
6122 switch (Name[7]) {
6123 default: break;
6124 case 'c': // 3 strings to match.
6125 if (memcmp(s1: Name.data()+8, s2: "f_", n: 2) != 0)
6126 break;
6127 switch (Name[10]) {
6128 default: break;
6129 case 'a': // 1 string to match.
6130 if (memcmp(s1: Name.data()+11, s2: "udited_transfer", n: 15) != 0)
6131 break;
6132 return AttributeCommonInfo::AT_CFAuditedTransfer; // "clang::cf_audited_transfer"
6133 case 'r': // 1 string to match.
6134 if (memcmp(s1: Name.data()+11, s2: "eturns_retained", n: 15) != 0)
6135 break;
6136 return AttributeCommonInfo::AT_CFReturnsRetained; // "clang::cf_returns_retained"
6137 case 'u': // 1 string to match.
6138 if (memcmp(s1: Name.data()+11, s2: "nknown_transfer", n: 15) != 0)
6139 break;
6140 return AttributeCommonInfo::AT_CFUnknownTransfer; // "clang::cf_unknown_transfer"
6141 }
6142 break;
6143 case 'd': // 1 string to match.
6144 if (memcmp(s1: Name.data()+8, s2: "iagnose_as_builtin", n: 18) != 0)
6145 break;
6146 return AttributeCommonInfo::AT_DiagnoseAsBuiltin; // "clang::diagnose_as_builtin"
6147 case 'n': // 1 string to match.
6148 if (memcmp(s1: Name.data()+8, s2: "s_returns_retained", n: 18) != 0)
6149 break;
6150 return AttributeCommonInfo::AT_NSReturnsRetained; // "clang::ns_returns_retained"
6151 case 'o': // 5 strings to match.
6152 switch (Name[8]) {
6153 default: break;
6154 case 'b': // 4 strings to match.
6155 if (memcmp(s1: Name.data()+9, s2: "jc_", n: 3) != 0)
6156 break;
6157 switch (Name[12]) {
6158 default: break;
6159 case 'b': // 2 strings to match.
6160 if (memcmp(s1: Name.data()+13, s2: "ridge_", n: 6) != 0)
6161 break;
6162 switch (Name[19]) {
6163 default: break;
6164 case 'm': // 1 string to match.
6165 if (memcmp(s1: Name.data()+20, s2: "utable", n: 6) != 0)
6166 break;
6167 return AttributeCommonInfo::AT_ObjCBridgeMutable; // "clang::objc_bridge_mutable"
6168 case 'r': // 1 string to match.
6169 if (memcmp(s1: Name.data()+20, s2: "elated", n: 6) != 0)
6170 break;
6171 return AttributeCommonInfo::AT_ObjCBridgeRelated; // "clang::objc_bridge_related"
6172 }
6173 break;
6174 case 'd': // 1 string to match.
6175 if (memcmp(s1: Name.data()+13, s2: "irect_members", n: 13) != 0)
6176 break;
6177 return AttributeCommonInfo::AT_ObjCDirectMembers; // "clang::objc_direct_members"
6178 case 'r': // 1 string to match.
6179 if (memcmp(s1: Name.data()+13, s2: "equires_super", n: 13) != 0)
6180 break;
6181 return AttributeCommonInfo::AT_ObjCRequiresSuper; // "clang::objc_requires_super"
6182 }
6183 break;
6184 case 's': // 1 string to match.
6185 if (memcmp(s1: Name.data()+9, s2: "_returns_retained", n: 17) != 0)
6186 break;
6187 return AttributeCommonInfo::AT_OSReturnsRetained; // "clang::os_returns_retained"
6188 }
6189 break;
6190 case 's': // 1 string to match.
6191 if (memcmp(s1: Name.data()+8, s2: "wift_async_context", n: 18) != 0)
6192 break;
6193 return AttributeCommonInfo::AT_SwiftAsyncContext; // "clang::swift_async_context"
6194 case 'u': // 1 string to match.
6195 if (memcmp(s1: Name.data()+8, s2: "nsafe_buffer_usage", n: 18) != 0)
6196 break;
6197 return AttributeCommonInfo::AT_UnsafeBufferUsage; // "clang::unsafe_buffer_usage"
6198 }
6199 break;
6200 case 27: // 6 strings to match.
6201 switch (Name[0]) {
6202 default: break;
6203 case 'c': // 5 strings to match.
6204 if (memcmp(s1: Name.data()+1, s2: "lang::", n: 6) != 0)
6205 break;
6206 switch (Name[7]) {
6207 default: break;
6208 case 'c': // 1 string to match.
6209 if (memcmp(s1: Name.data()+8, s2: "lspv_libclc_builtin", n: 19) != 0)
6210 break;
6211 return AttributeCommonInfo::AT_ClspvLibclcBuiltin; // "clang::clspv_libclc_builtin"
6212 case 'l': // 1 string to match.
6213 if (memcmp(s1: Name.data()+8, s2: "oader_uninitialized", n: 19) != 0)
6214 break;
6215 return AttributeCommonInfo::AT_LoaderUninitialized; // "clang::loader_uninitialized"
6216 case 'n': // 1 string to match.
6217 if (memcmp(s1: Name.data()+8, s2: "eon_polyvector_type", n: 19) != 0)
6218 break;
6219 return AttributeCommonInfo::AT_NeonPolyVectorType; // "clang::neon_polyvector_type"
6220 case 'o': // 2 strings to match.
6221 switch (Name[8]) {
6222 default: break;
6223 case 'b': // 1 string to match.
6224 if (memcmp(s1: Name.data()+9, s2: "jc_runtime_visible", n: 18) != 0)
6225 break;
6226 return AttributeCommonInfo::AT_ObjCRuntimeVisible; // "clang::objc_runtime_visible"
6227 case 'p': // 1 string to match.
6228 if (memcmp(s1: Name.data()+9, s2: "encl_global_device", n: 18) != 0)
6229 break;
6230 return AttributeCommonInfo::AT_OpenCLGlobalDeviceAddressSpace; // "clang::opencl_global_device"
6231 }
6232 break;
6233 }
6234 break;
6235 case 'g': // 1 string to match.
6236 if (memcmp(s1: Name.data()+1, s2: "nu::no_instrument_function", n: 26) != 0)
6237 break;
6238 return AttributeCommonInfo::AT_NoInstrumentFunction; // "gnu::no_instrument_function"
6239 }
6240 break;
6241 case 28: // 8 strings to match.
6242 switch (Name[0]) {
6243 default: break;
6244 case 'c': // 7 strings to match.
6245 if (memcmp(s1: Name.data()+1, s2: "lang::", n: 6) != 0)
6246 break;
6247 switch (Name[7]) {
6248 default: break;
6249 case 'l': // 1 string to match.
6250 if (memcmp(s1: Name.data()+8, s2: "to_visibility_public", n: 20) != 0)
6251 break;
6252 return AttributeCommonInfo::AT_LTOVisibilityPublic; // "clang::lto_visibility_public"
6253 case 'o': // 1 string to match.
6254 if (memcmp(s1: Name.data()+8, s2: "bjc_precise_lifetime", n: 20) != 0)
6255 break;
6256 return AttributeCommonInfo::AT_ObjCPreciseLifetime; // "clang::objc_precise_lifetime"
6257 case 'p': // 2 strings to match.
6258 switch (Name[8]) {
6259 default: break;
6260 case 'o': // 1 string to match.
6261 if (memcmp(s1: Name.data()+9, s2: "inter_with_type_tag", n: 19) != 0)
6262 break;
6263 return AttributeCommonInfo::AT_ArgumentWithTypeTag; // "clang::pointer_with_type_tag"
6264 case 'r': // 1 string to match.
6265 if (memcmp(s1: Name.data()+9, s2: "eserve_access_index", n: 19) != 0)
6266 break;
6267 return AttributeCommonInfo::AT_BPFPreserveAccessIndex; // "clang::preserve_access_index"
6268 }
6269 break;
6270 case 's': // 1 string to match.
6271 if (memcmp(s1: Name.data()+8, s2: "wift_indirect_result", n: 20) != 0)
6272 break;
6273 return AttributeCommonInfo::AT_SwiftIndirectResult; // "clang::swift_indirect_result"
6274 case 't': // 1 string to match.
6275 if (memcmp(s1: Name.data()+8, s2: "ype_tag_for_datatype", n: 20) != 0)
6276 break;
6277 return AttributeCommonInfo::AT_TypeTagForDatatype; // "clang::type_tag_for_datatype"
6278 case 'x': // 1 string to match.
6279 if (memcmp(s1: Name.data()+8, s2: "ray_never_instrument", n: 20) != 0)
6280 break;
6281 return AttributeCommonInfo::AT_XRayInstrument; // "clang::xray_never_instrument"
6282 }
6283 break;
6284 case 'g': // 1 string to match.
6285 if (memcmp(s1: Name.data()+1, s2: "nu::force_align_arg_pointer", n: 27) != 0)
6286 break;
6287 return AttributeCommonInfo::AT_X86ForceAlignArgPointer; // "gnu::force_align_arg_pointer"
6288 }
6289 break;
6290 case 29: // 7 strings to match.
6291 switch (Name[0]) {
6292 default: break;
6293 case 'c': // 6 strings to match.
6294 if (memcmp(s1: Name.data()+1, s2: "lang::", n: 6) != 0)
6295 break;
6296 switch (Name[7]) {
6297 default: break;
6298 case 'a': // 1 string to match.
6299 if (memcmp(s1: Name.data()+8, s2: "rgument_with_type_tag", n: 21) != 0)
6300 break;
6301 return AttributeCommonInfo::AT_ArgumentWithTypeTag; // "clang::argument_with_type_tag"
6302 case 'e': // 1 string to match.
6303 if (memcmp(s1: Name.data()+8, s2: "xternal_source_symbol", n: 21) != 0)
6304 break;
6305 return AttributeCommonInfo::AT_ExternalSourceSymbol; // "clang::external_source_symbol"
6306 case 'o': // 1 string to match.
6307 if (memcmp(s1: Name.data()+8, s2: "bjc_independent_class", n: 21) != 0)
6308 break;
6309 return AttributeCommonInfo::AT_ObjCIndependentClass; // "clang::objc_independent_class"
6310 case 'p': // 2 strings to match.
6311 switch (Name[8]) {
6312 default: break;
6313 case 'r': // 1 string to match.
6314 if (memcmp(s1: Name.data()+9, s2: "eserve_static_offset", n: 20) != 0)
6315 break;
6316 return AttributeCommonInfo::AT_BPFPreserveStaticOffset; // "clang::preserve_static_offset"
6317 case 't': // 1 string to match.
6318 if (memcmp(s1: Name.data()+9, s2: "rauth_vtable_pointer", n: 20) != 0)
6319 break;
6320 return AttributeCommonInfo::AT_VTablePointerAuthentication; // "clang::ptrauth_vtable_pointer"
6321 }
6322 break;
6323 case 'x': // 1 string to match.
6324 if (memcmp(s1: Name.data()+8, s2: "ray_always_instrument", n: 21) != 0)
6325 break;
6326 return AttributeCommonInfo::AT_XRayInstrument; // "clang::xray_always_instrument"
6327 }
6328 break;
6329 case 'g': // 1 string to match.
6330 if (memcmp(s1: Name.data()+1, s2: "nu::patchable_function_entry", n: 28) != 0)
6331 break;
6332 return AttributeCommonInfo::AT_PatchableFunctionEntry; // "gnu::patchable_function_entry"
6333 }
6334 break;
6335 case 30: // 5 strings to match.
6336 switch (Name[0]) {
6337 default: break;
6338 case 'c': // 4 strings to match.
6339 if (memcmp(s1: Name.data()+1, s2: "lang::", n: 6) != 0)
6340 break;
6341 switch (Name[7]) {
6342 default: break;
6343 case 'c': // 1 string to match.
6344 if (memcmp(s1: Name.data()+8, s2: "f_returns_not_retained", n: 22) != 0)
6345 break;
6346 return AttributeCommonInfo::AT_CFReturnsNotRetained; // "clang::cf_returns_not_retained"
6347 case 'n': // 2 strings to match.
6348 if (memcmp(s1: Name.data()+8, s2: "s_returns_", n: 10) != 0)
6349 break;
6350 switch (Name[18]) {
6351 default: break;
6352 case 'a': // 1 string to match.
6353 if (memcmp(s1: Name.data()+19, s2: "utoreleased", n: 11) != 0)
6354 break;
6355 return AttributeCommonInfo::AT_NSReturnsAutoreleased; // "clang::ns_returns_autoreleased"
6356 case 'n': // 1 string to match.
6357 if (memcmp(s1: Name.data()+19, s2: "ot_retained", n: 11) != 0)
6358 break;
6359 return AttributeCommonInfo::AT_NSReturnsNotRetained; // "clang::ns_returns_not_retained"
6360 }
6361 break;
6362 case 'o': // 1 string to match.
6363 if (memcmp(s1: Name.data()+8, s2: "s_returns_not_retained", n: 22) != 0)
6364 break;
6365 return AttributeCommonInfo::AT_OSReturnsNotRetained; // "clang::os_returns_not_retained"
6366 }
6367 break;
6368 case 'g': // 1 string to match.
6369 if (memcmp(s1: Name.data()+1, s2: "nu::no_caller_saved_registers", n: 29) != 0)
6370 break;
6371 return AttributeCommonInfo::AT_AnyX86NoCallerSavedRegisters; // "gnu::no_caller_saved_registers"
6372 }
6373 break;
6374 case 31: // 4 strings to match.
6375 switch (Name[0]) {
6376 default: break;
6377 case 'c': // 3 strings to match.
6378 if (memcmp(s1: Name.data()+1, s2: "lang::", n: 6) != 0)
6379 break;
6380 switch (Name[7]) {
6381 default: break;
6382 case 'c': // 1 string to match.
6383 if (memcmp(s1: Name.data()+8, s2: "fi_canonical_jump_table", n: 23) != 0)
6384 break;
6385 return AttributeCommonInfo::AT_CFICanonicalJumpTable; // "clang::cfi_canonical_jump_table"
6386 case 'o': // 1 string to match.
6387 if (memcmp(s1: Name.data()+8, s2: "bjc_externally_retained", n: 23) != 0)
6388 break;
6389 return AttributeCommonInfo::AT_ObjCExternallyRetained; // "clang::objc_externally_retained"
6390 case 'p': // 1 string to match.
6391 if (memcmp(s1: Name.data()+8, s2: "ass_dynamic_object_size", n: 23) != 0)
6392 break;
6393 return AttributeCommonInfo::AT_PassObjectSize; // "clang::pass_dynamic_object_size"
6394 }
6395 break;
6396 case 'g': // 1 string to match.
6397 if (memcmp(s1: Name.data()+1, s2: "nu::no_address_safety_analysis", n: 30) != 0)
6398 break;
6399 return AttributeCommonInfo::AT_NoSanitizeSpecific; // "gnu::no_address_safety_analysis"
6400 }
6401 break;
6402 case 32: // 3 strings to match.
6403 if (memcmp(s1: Name.data()+0, s2: "clang::", n: 7) != 0)
6404 break;
6405 switch (Name[7]) {
6406 default: break;
6407 case '_': // 1 string to match.
6408 if (memcmp(s1: Name.data()+8, s2: "_clang_arm_builtin_alias", n: 24) != 0)
6409 break;
6410 return AttributeCommonInfo::AT_ArmBuiltinAlias; // "clang::__clang_arm_builtin_alias"
6411 case 'n': // 1 string to match.
6412 if (memcmp(s1: Name.data()+8, s2: "o_thread_safety_analysis", n: 24) != 0)
6413 break;
6414 return AttributeCommonInfo::AT_NoThreadSafetyAnalysis; // "clang::no_thread_safety_analysis"
6415 case 'o': // 1 string to match.
6416 if (memcmp(s1: Name.data()+8, s2: "bjc_non_runtime_protocol", n: 24) != 0)
6417 break;
6418 return AttributeCommonInfo::AT_ObjCNonRuntimeProtocol; // "clang::objc_non_runtime_protocol"
6419 }
6420 break;
6421 case 33: // 3 strings to match.
6422 if (memcmp(s1: Name.data()+0, s2: "clang::", n: 7) != 0)
6423 break;
6424 switch (Name[7]) {
6425 default: break;
6426 case 'c': // 1 string to match.
6427 if (memcmp(s1: Name.data()+8, s2: "oro_disable_lifetimebound", n: 25) != 0)
6428 break;
6429 return AttributeCommonInfo::AT_CoroDisableLifetimeBound; // "clang::coro_disable_lifetimebound"
6430 case 'o': // 1 string to match.
6431 if (memcmp(s1: Name.data()+8, s2: "bjc_returns_inner_pointer", n: 25) != 0)
6432 break;
6433 return AttributeCommonInfo::AT_ObjCReturnsInnerPointer; // "clang::objc_returns_inner_pointer"
6434 case 's': // 1 string to match.
6435 if (memcmp(s1: Name.data()+8, s2: "peculative_load_hardening", n: 25) != 0)
6436 break;
6437 return AttributeCommonInfo::AT_SpeculativeLoadHardening; // "clang::speculative_load_hardening"
6438 }
6439 break;
6440 case 34: // 4 strings to match.
6441 if (memcmp(s1: Name.data()+0, s2: "clang::", n: 7) != 0)
6442 break;
6443 switch (Name[7]) {
6444 default: break;
6445 case 'e': // 1 string to match.
6446 if (memcmp(s1: Name.data()+8, s2: "nforce_read_only_placement", n: 26) != 0)
6447 break;
6448 return AttributeCommonInfo::AT_ReadOnlyPlacement; // "clang::enforce_read_only_placement"
6449 case 'o': // 3 strings to match.
6450 switch (Name[8]) {
6451 default: break;
6452 case 'b': // 2 strings to match.
6453 if (memcmp(s1: Name.data()+9, s2: "jc_", n: 3) != 0)
6454 break;
6455 switch (Name[12]) {
6456 default: break;
6457 case 'd': // 1 string to match.
6458 if (memcmp(s1: Name.data()+13, s2: "esignated_initializer", n: 21) != 0)
6459 break;
6460 return AttributeCommonInfo::AT_ObjCDesignatedInitializer; // "clang::objc_designated_initializer"
6461 case 's': // 1 string to match.
6462 if (memcmp(s1: Name.data()+13, s2: "ubclassing_restricted", n: 21) != 0)
6463 break;
6464 return AttributeCommonInfo::AT_ObjCSubclassingRestricted; // "clang::objc_subclassing_restricted"
6465 }
6466 break;
6467 case 's': // 1 string to match.
6468 if (memcmp(s1: Name.data()+9, s2: "_returns_retained_on_zero", n: 25) != 0)
6469 break;
6470 return AttributeCommonInfo::AT_OSReturnsRetainedOnZero; // "clang::os_returns_retained_on_zero"
6471 }
6472 break;
6473 }
6474 break;
6475 case 35: // 1 string to match.
6476 if (memcmp(s1: Name.data()+0, s2: "gnu::no_profile_instrument_function", n: 35) != 0)
6477 break;
6478 return AttributeCommonInfo::AT_NoProfileFunction; // "gnu::no_profile_instrument_function"
6479 case 36: // 1 string to match.
6480 if (memcmp(s1: Name.data()+0, s2: "clang::no_speculative_load_hardening", n: 36) != 0)
6481 break;
6482 return AttributeCommonInfo::AT_NoSpeculativeLoadHardening; // "clang::no_speculative_load_hardening"
6483 case 38: // 2 strings to match.
6484 if (memcmp(s1: Name.data()+0, s2: "clang::", n: 7) != 0)
6485 break;
6486 switch (Name[7]) {
6487 default: break;
6488 case 'c': // 1 string to match.
6489 if (memcmp(s1: Name.data()+8, s2: "oro_only_destroy_when_complete", n: 30) != 0)
6490 break;
6491 return AttributeCommonInfo::AT_CoroOnlyDestroyWhenComplete; // "clang::coro_only_destroy_when_complete"
6492 case 'o': // 1 string to match.
6493 if (memcmp(s1: Name.data()+8, s2: "s_returns_retained_on_non_zero", n: 30) != 0)
6494 break;
6495 return AttributeCommonInfo::AT_OSReturnsRetainedOnNonZero; // "clang::os_returns_retained_on_non_zero"
6496 }
6497 break;
6498 case 40: // 1 string to match.
6499 if (memcmp(s1: Name.data()+0, s2: "clang::disable_sanitizer_instrumentation", n: 40) != 0)
6500 break;
6501 return AttributeCommonInfo::AT_DisableSanitizerInstrumentation; // "clang::disable_sanitizer_instrumentation"
6502 case 41: // 1 string to match.
6503 if (memcmp(s1: Name.data()+0, s2: "clang::objc_requires_property_definitions", n: 41) != 0)
6504 break;
6505 return AttributeCommonInfo::AT_ObjCRequiresPropertyDefs; // "clang::objc_requires_property_definitions"
6506 case 42: // 3 strings to match.
6507 if (memcmp(s1: Name.data()+0, s2: "clang::", n: 7) != 0)
6508 break;
6509 switch (Name[7]) {
6510 default: break;
6511 case '_': // 1 string to match.
6512 if (memcmp(s1: Name.data()+8, s2: "_clang_arm_mve_strict_polymorphism", n: 34) != 0)
6513 break;
6514 return AttributeCommonInfo::AT_ArmMveStrictPolymorphism; // "clang::__clang_arm_mve_strict_polymorphism"
6515 case 'e': // 1 string to match.
6516 if (memcmp(s1: Name.data()+8, s2: "xclude_from_explicit_instantiation", n: 34) != 0)
6517 break;
6518 return AttributeCommonInfo::AT_ExcludeFromExplicitInstantiation; // "clang::exclude_from_explicit_instantiation"
6519 case 'o': // 1 string to match.
6520 if (memcmp(s1: Name.data()+8, s2: "bjc_arc_weak_reference_unavailable", n: 34) != 0)
6521 break;
6522 return AttributeCommonInfo::AT_ArcWeakrefUnavailable; // "clang::objc_arc_weak_reference_unavailable"
6523 }
6524 break;
6525 case 44: // 1 string to match.
6526 if (memcmp(s1: Name.data()+0, s2: "clang::available_only_in_default_eval_method", n: 44) != 0)
6527 break;
6528 return AttributeCommonInfo::AT_AvailableOnlyInDefaultEvalMethod; // "clang::available_only_in_default_eval_method"
6529 case 53: // 1 string to match.
6530 if (memcmp(s1: Name.data()+0, s2: "clang::objc_protocol_requires_explicit_implementation", n: 53) != 0)
6531 break;
6532 return AttributeCommonInfo::AT_ObjCExplicitProtocolImpl; // "clang::objc_protocol_requires_explicit_implementation"
6533 }
6534 } else if (AttributeCommonInfo::AS_Keyword == Syntax || AttributeCommonInfo::AS_ContextSensitiveKeyword == Syntax) {
6535 switch (Name.size()) {
6536 default: break;
6537 case 2: // 1 string to match.
6538 if (memcmp(s1: Name.data()+0, s2: "in", n: 2) != 0)
6539 break;
6540 return AttributeCommonInfo::AT_HLSLParamModifier; // "in"
6541 case 3: // 1 string to match.
6542 if (memcmp(s1: Name.data()+0, s2: "out", n: 3) != 0)
6543 break;
6544 return AttributeCommonInfo::AT_HLSLParamModifier; // "out"
6545 case 5: // 3 strings to match.
6546 switch (Name[0]) {
6547 default: break;
6548 case '_': // 1 string to match.
6549 if (memcmp(s1: Name.data()+1, s2: "_w64", n: 4) != 0)
6550 break;
6551 return AttributeCommonInfo::IgnoredAttribute; // "__w64"
6552 case 'i': // 1 string to match.
6553 if (memcmp(s1: Name.data()+1, s2: "nout", n: 4) != 0)
6554 break;
6555 return AttributeCommonInfo::AT_HLSLParamModifier; // "inout"
6556 case 'l': // 1 string to match.
6557 if (memcmp(s1: Name.data()+1, s2: "ocal", n: 4) != 0)
6558 break;
6559 return AttributeCommonInfo::AT_OpenCLLocalAddressSpace; // "local"
6560 }
6561 break;
6562 case 6: // 5 strings to match.
6563 switch (Name[0]) {
6564 default: break;
6565 case '_': // 3 strings to match.
6566 switch (Name[1]) {
6567 default: break;
6568 case '_': // 2 strings to match.
6569 switch (Name[2]) {
6570 default: break;
6571 case 's': // 1 string to match.
6572 if (memcmp(s1: Name.data()+3, s2: "ptr", n: 3) != 0)
6573 break;
6574 return AttributeCommonInfo::AT_SPtr; // "__sptr"
6575 case 'u': // 1 string to match.
6576 if (memcmp(s1: Name.data()+3, s2: "ptr", n: 3) != 0)
6577 break;
6578 return AttributeCommonInfo::AT_UPtr; // "__uptr"
6579 }
6580 break;
6581 case 'c': // 1 string to match.
6582 if (memcmp(s1: Name.data()+2, s2: "decl", n: 4) != 0)
6583 break;
6584 return AttributeCommonInfo::AT_CDecl; // "_cdecl"
6585 }
6586 break;
6587 case 'g': // 1 string to match.
6588 if (memcmp(s1: Name.data()+1, s2: "lobal", n: 5) != 0)
6589 break;
6590 return AttributeCommonInfo::AT_OpenCLGlobalAddressSpace; // "global"
6591 case 'k': // 1 string to match.
6592 if (memcmp(s1: Name.data()+1, s2: "ernel", n: 5) != 0)
6593 break;
6594 return AttributeCommonInfo::AT_OpenCLKernel; // "kernel"
6595 }
6596 break;
6597 case 7: // 8 strings to match.
6598 switch (Name[0]) {
6599 default: break;
6600 case '_': // 5 strings to match.
6601 switch (Name[1]) {
6602 default: break;
6603 case '_': // 4 strings to match.
6604 switch (Name[2]) {
6605 default: break;
6606 case 'c': // 1 string to match.
6607 if (memcmp(s1: Name.data()+3, s2: "decl", n: 4) != 0)
6608 break;
6609 return AttributeCommonInfo::AT_CDecl; // "__cdecl"
6610 case 'l': // 1 string to match.
6611 if (memcmp(s1: Name.data()+3, s2: "ocal", n: 4) != 0)
6612 break;
6613 return AttributeCommonInfo::AT_OpenCLLocalAddressSpace; // "__local"
6614 case 'p': // 2 strings to match.
6615 if (memcmp(s1: Name.data()+3, s2: "tr", n: 2) != 0)
6616 break;
6617 switch (Name[5]) {
6618 default: break;
6619 case '3': // 1 string to match.
6620 if (Name[6] != '2')
6621 break;
6622 return AttributeCommonInfo::AT_Ptr32; // "__ptr32"
6623 case '6': // 1 string to match.
6624 if (Name[6] != '4')
6625 break;
6626 return AttributeCommonInfo::AT_Ptr64; // "__ptr64"
6627 }
6628 break;
6629 }
6630 break;
6631 case 'p': // 1 string to match.
6632 if (memcmp(s1: Name.data()+2, s2: "ascal", n: 5) != 0)
6633 break;
6634 return AttributeCommonInfo::AT_Pascal; // "_pascal"
6635 }
6636 break;
6637 case 'a': // 1 string to match.
6638 if (memcmp(s1: Name.data()+1, s2: "lignas", n: 6) != 0)
6639 break;
6640 return AttributeCommonInfo::AT_Aligned; // "alignas"
6641 case 'g': // 1 string to match.
6642 if (memcmp(s1: Name.data()+1, s2: "eneric", n: 6) != 0)
6643 break;
6644 return AttributeCommonInfo::AT_OpenCLGenericAddressSpace; // "generic"
6645 case 'p': // 1 string to match.
6646 if (memcmp(s1: Name.data()+1, s2: "rivate", n: 6) != 0)
6647 break;
6648 return AttributeCommonInfo::AT_OpenCLPrivateAddressSpace; // "private"
6649 }
6650 break;
6651 case 8: // 9 strings to match.
6652 switch (Name[0]) {
6653 default: break;
6654 case '_': // 8 strings to match.
6655 switch (Name[1]) {
6656 default: break;
6657 case 'A': // 1 string to match.
6658 if (memcmp(s1: Name.data()+2, s2: "lignas", n: 6) != 0)
6659 break;
6660 return AttributeCommonInfo::AT_Aligned; // "_Alignas"
6661 case 'N': // 1 string to match.
6662 if (memcmp(s1: Name.data()+2, s2: "onnull", n: 6) != 0)
6663 break;
6664 return AttributeCommonInfo::AT_TypeNonNull; // "_Nonnull"
6665 case '_': // 5 strings to match.
6666 switch (Name[2]) {
6667 default: break;
6668 case 'a': // 1 string to match.
6669 if (memcmp(s1: Name.data()+3, s2: "rm_in", n: 5) != 0)
6670 break;
6671 return AttributeCommonInfo::AT_ArmIn; // "__arm_in"
6672 case 'g': // 1 string to match.
6673 if (memcmp(s1: Name.data()+3, s2: "lobal", n: 5) != 0)
6674 break;
6675 return AttributeCommonInfo::AT_OpenCLGlobalAddressSpace; // "__global"
6676 case 'k': // 2 strings to match.
6677 switch (Name[3]) {
6678 default: break;
6679 case 'e': // 1 string to match.
6680 if (memcmp(s1: Name.data()+4, s2: "rnel", n: 4) != 0)
6681 break;
6682 return AttributeCommonInfo::AT_OpenCLKernel; // "__kernel"
6683 case 'i': // 1 string to match.
6684 if (memcmp(s1: Name.data()+4, s2: "ndof", n: 4) != 0)
6685 break;
6686 return AttributeCommonInfo::AT_ObjCKindOf; // "__kindof"
6687 }
6688 break;
6689 case 'p': // 1 string to match.
6690 if (memcmp(s1: Name.data()+3, s2: "ascal", n: 5) != 0)
6691 break;
6692 return AttributeCommonInfo::AT_Pascal; // "__pascal"
6693 }
6694 break;
6695 case 's': // 1 string to match.
6696 if (memcmp(s1: Name.data()+2, s2: "tdcall", n: 6) != 0)
6697 break;
6698 return AttributeCommonInfo::AT_StdCall; // "_stdcall"
6699 }
6700 break;
6701 case 'c': // 1 string to match.
6702 if (memcmp(s1: Name.data()+1, s2: "onstant", n: 7) != 0)
6703 break;
6704 return AttributeCommonInfo::AT_OpenCLConstantAddressSpace; // "constant"
6705 }
6706 break;
6707 case 9: // 12 strings to match.
6708 switch (Name[0]) {
6709 default: break;
6710 case '_': // 10 strings to match.
6711 switch (Name[1]) {
6712 default: break;
6713 case 'N': // 1 string to match.
6714 if (memcmp(s1: Name.data()+2, s2: "ullable", n: 7) != 0)
6715 break;
6716 return AttributeCommonInfo::AT_TypeNullable; // "_Nullable"
6717 case '_': // 7 strings to match.
6718 switch (Name[2]) {
6719 default: break;
6720 case 'a': // 2 strings to match.
6721 if (memcmp(s1: Name.data()+3, s2: "rm_", n: 3) != 0)
6722 break;
6723 switch (Name[6]) {
6724 default: break;
6725 case 'n': // 1 string to match.
6726 if (memcmp(s1: Name.data()+7, s2: "ew", n: 2) != 0)
6727 break;
6728 return AttributeCommonInfo::AT_ArmNew; // "__arm_new"
6729 case 'o': // 1 string to match.
6730 if (memcmp(s1: Name.data()+7, s2: "ut", n: 2) != 0)
6731 break;
6732 return AttributeCommonInfo::AT_ArmOut; // "__arm_out"
6733 }
6734 break;
6735 case 'f': // 1 string to match.
6736 if (memcmp(s1: Name.data()+3, s2: "uncref", n: 6) != 0)
6737 break;
6738 return AttributeCommonInfo::AT_WebAssemblyFuncref; // "__funcref"
6739 case 'g': // 1 string to match.
6740 if (memcmp(s1: Name.data()+3, s2: "eneric", n: 6) != 0)
6741 break;
6742 return AttributeCommonInfo::AT_OpenCLGenericAddressSpace; // "__generic"
6743 case 'p': // 1 string to match.
6744 if (memcmp(s1: Name.data()+3, s2: "rivate", n: 6) != 0)
6745 break;
6746 return AttributeCommonInfo::AT_OpenCLPrivateAddressSpace; // "__private"
6747 case 'r': // 1 string to match.
6748 if (memcmp(s1: Name.data()+3, s2: "egcall", n: 6) != 0)
6749 break;
6750 return AttributeCommonInfo::AT_RegCall; // "__regcall"
6751 case 's': // 1 string to match.
6752 if (memcmp(s1: Name.data()+3, s2: "tdcall", n: 6) != 0)
6753 break;
6754 return AttributeCommonInfo::AT_StdCall; // "__stdcall"
6755 }
6756 break;
6757 case 'f': // 1 string to match.
6758 if (memcmp(s1: Name.data()+2, s2: "astcall", n: 7) != 0)
6759 break;
6760 return AttributeCommonInfo::AT_FastCall; // "_fastcall"
6761 case 't': // 1 string to match.
6762 if (memcmp(s1: Name.data()+2, s2: "hiscall", n: 7) != 0)
6763 break;
6764 return AttributeCommonInfo::AT_ThisCall; // "_thiscall"
6765 }
6766 break;
6767 case 'c': // 1 string to match.
6768 if (memcmp(s1: Name.data()+1, s2: "onstinit", n: 8) != 0)
6769 break;
6770 return AttributeCommonInfo::AT_ConstInit; // "constinit"
6771 case 'r': // 1 string to match.
6772 if (memcmp(s1: Name.data()+1, s2: "ead_only", n: 8) != 0)
6773 break;
6774 return AttributeCommonInfo::AT_OpenCLAccess; // "read_only"
6775 }
6776 break;
6777 case 10: // 5 strings to match.
6778 switch (Name[0]) {
6779 default: break;
6780 case '_': // 3 strings to match.
6781 if (Name[1] != '_')
6782 break;
6783 switch (Name[2]) {
6784 default: break;
6785 case 'c': // 1 string to match.
6786 if (memcmp(s1: Name.data()+3, s2: "onstant", n: 7) != 0)
6787 break;
6788 return AttributeCommonInfo::AT_OpenCLConstantAddressSpace; // "__constant"
6789 case 'f': // 1 string to match.
6790 if (memcmp(s1: Name.data()+3, s2: "astcall", n: 7) != 0)
6791 break;
6792 return AttributeCommonInfo::AT_FastCall; // "__fastcall"
6793 case 't': // 1 string to match.
6794 if (memcmp(s1: Name.data()+3, s2: "hiscall", n: 7) != 0)
6795 break;
6796 return AttributeCommonInfo::AT_ThisCall; // "__thiscall"
6797 }
6798 break;
6799 case 'r': // 1 string to match.
6800 if (memcmp(s1: Name.data()+1, s2: "ead_write", n: 9) != 0)
6801 break;
6802 return AttributeCommonInfo::AT_OpenCLAccess; // "read_write"
6803 case 'w': // 1 string to match.
6804 if (memcmp(s1: Name.data()+1, s2: "rite_only", n: 9) != 0)
6805 break;
6806 return AttributeCommonInfo::AT_OpenCLAccess; // "write_only"
6807 }
6808 break;
6809 case 11: // 4 strings to match.
6810 switch (Name[0]) {
6811 default: break;
6812 case '_': // 3 strings to match.
6813 switch (Name[1]) {
6814 default: break;
6815 case '_': // 2 strings to match.
6816 switch (Name[2]) {
6817 default: break;
6818 case 'a': // 1 string to match.
6819 if (memcmp(s1: Name.data()+3, s2: "rm_inout", n: 8) != 0)
6820 break;
6821 return AttributeCommonInfo::AT_ArmInOut; // "__arm_inout"
6822 case 'r': // 1 string to match.
6823 if (memcmp(s1: Name.data()+3, s2: "ead_only", n: 8) != 0)
6824 break;
6825 return AttributeCommonInfo::AT_OpenCLAccess; // "__read_only"
6826 }
6827 break;
6828 case 'v': // 1 string to match.
6829 if (memcmp(s1: Name.data()+2, s2: "ectorcall", n: 9) != 0)
6830 break;
6831 return AttributeCommonInfo::AT_VectorCall; // "_vectorcall"
6832 }
6833 break;
6834 case 'g': // 1 string to match.
6835 if (memcmp(s1: Name.data()+1, s2: "roupshared", n: 10) != 0)
6836 break;
6837 return AttributeCommonInfo::AT_HLSLGroupSharedAddressSpace; // "groupshared"
6838 }
6839 break;
6840 case 12: // 4 strings to match.
6841 if (memcmp(s1: Name.data()+0, s2: "__", n: 2) != 0)
6842 break;
6843 switch (Name[2]) {
6844 default: break;
6845 case 'n': // 1 string to match.
6846 if (memcmp(s1: Name.data()+3, s2: "oinline__", n: 9) != 0)
6847 break;
6848 return AttributeCommonInfo::AT_NoInline; // "__noinline__"
6849 case 'r': // 1 string to match.
6850 if (memcmp(s1: Name.data()+3, s2: "ead_write", n: 9) != 0)
6851 break;
6852 return AttributeCommonInfo::AT_OpenCLAccess; // "__read_write"
6853 case 'v': // 1 string to match.
6854 if (memcmp(s1: Name.data()+3, s2: "ectorcall", n: 9) != 0)
6855 break;
6856 return AttributeCommonInfo::AT_VectorCall; // "__vectorcall"
6857 case 'w': // 1 string to match.
6858 if (memcmp(s1: Name.data()+3, s2: "rite_only", n: 9) != 0)
6859 break;
6860 return AttributeCommonInfo::AT_OpenCLAccess; // "__write_only"
6861 }
6862 break;
6863 case 13: // 1 string to match.
6864 if (memcmp(s1: Name.data()+0, s2: "__forceinline", n: 13) != 0)
6865 break;
6866 return AttributeCommonInfo::AT_AlwaysInline; // "__forceinline"
6867 case 15: // 2 strings to match.
6868 if (memcmp(s1: Name.data()+0, s2: "__arm_", n: 6) != 0)
6869 break;
6870 switch (Name[6]) {
6871 default: break;
6872 case 'p': // 1 string to match.
6873 if (memcmp(s1: Name.data()+7, s2: "reserves", n: 8) != 0)
6874 break;
6875 return AttributeCommonInfo::AT_ArmPreserves; // "__arm_preserves"
6876 case 's': // 1 string to match.
6877 if (memcmp(s1: Name.data()+7, s2: "treaming", n: 8) != 0)
6878 break;
6879 return AttributeCommonInfo::AT_ArmStreaming; // "__arm_streaming"
6880 }
6881 break;
6882 case 16: // 1 string to match.
6883 if (memcmp(s1: Name.data()+0, s2: "_Nullable_result", n: 16) != 0)
6884 break;
6885 return AttributeCommonInfo::AT_TypeNullableResult; // "_Nullable_result"
6886 case 17: // 1 string to match.
6887 if (memcmp(s1: Name.data()+0, s2: "_Null_unspecified", n: 17) != 0)
6888 break;
6889 return AttributeCommonInfo::AT_TypeNullUnspecified; // "_Null_unspecified"
6890 case 19: // 1 string to match.
6891 if (memcmp(s1: Name.data()+0, s2: "__unsafe_unretained", n: 19) != 0)
6892 break;
6893 return AttributeCommonInfo::AT_ObjCInertUnsafeUnretained; // "__unsafe_unretained"
6894 case 20: // 1 string to match.
6895 if (memcmp(s1: Name.data()+0, s2: "__single_inheritance", n: 20) != 0)
6896 break;
6897 return AttributeCommonInfo::AT_MSInheritance; // "__single_inheritance"
6898 case 21: // 1 string to match.
6899 if (memcmp(s1: Name.data()+0, s2: "__virtual_inheritance", n: 21) != 0)
6900 break;
6901 return AttributeCommonInfo::AT_MSInheritance; // "__virtual_inheritance"
6902 case 22: // 1 string to match.
6903 if (memcmp(s1: Name.data()+0, s2: "__multiple_inheritance", n: 22) != 0)
6904 break;
6905 return AttributeCommonInfo::AT_MSInheritance; // "__multiple_inheritance"
6906 case 23: // 1 string to match.
6907 if (memcmp(s1: Name.data()+0, s2: "__arm_locally_streaming", n: 23) != 0)
6908 break;
6909 return AttributeCommonInfo::AT_ArmLocallyStreaming; // "__arm_locally_streaming"
6910 case 25: // 1 string to match.
6911 if (memcmp(s1: Name.data()+0, s2: "__unspecified_inheritance", n: 25) != 0)
6912 break;
6913 return AttributeCommonInfo::AT_MSInheritance; // "__unspecified_inheritance"
6914 case 26: // 1 string to match.
6915 if (memcmp(s1: Name.data()+0, s2: "__arm_streaming_compatible", n: 26) != 0)
6916 break;
6917 return AttributeCommonInfo::AT_ArmStreamingCompatible; // "__arm_streaming_compatible"
6918 }
6919 } else if (AttributeCommonInfo::AS_Pragma == Syntax) {
6920 switch (Name.size()) {
6921 default: break;
6922 case 4: // 1 string to match.
6923 if (memcmp(s1: Name.data()+0, s2: "loop", n: 4) != 0)
6924 break;
6925 return AttributeCommonInfo::AT_LoopHint; // "loop"
6926 case 6: // 1 string to match.
6927 if (memcmp(s1: Name.data()+0, s2: "unroll", n: 6) != 0)
6928 break;
6929 return AttributeCommonInfo::AT_LoopHint; // "unroll"
6930 case 8: // 1 string to match.
6931 if (memcmp(s1: Name.data()+0, s2: "nounroll", n: 8) != 0)
6932 break;
6933 return AttributeCommonInfo::AT_LoopHint; // "nounroll"
6934 case 14: // 1 string to match.
6935 if (memcmp(s1: Name.data()+0, s2: "unroll_and_jam", n: 14) != 0)
6936 break;
6937 return AttributeCommonInfo::AT_LoopHint; // "unroll_and_jam"
6938 case 16: // 1 string to match.
6939 if (memcmp(s1: Name.data()+0, s2: "nounroll_and_jam", n: 16) != 0)
6940 break;
6941 return AttributeCommonInfo::AT_LoopHint; // "nounroll_and_jam"
6942 }
6943 } else if (AttributeCommonInfo::AS_HLSLAnnotation == Syntax) {
6944 switch (Name.size()) {
6945 default: break;
6946 case 8: // 1 string to match.
6947 if (memcmp(s1: Name.data()+0, s2: "register", n: 8) != 0)
6948 break;
6949 return AttributeCommonInfo::AT_HLSLResourceBinding; // "register"
6950 case 10: // 1 string to match.
6951 if (memcmp(s1: Name.data()+0, s2: "packoffset", n: 10) != 0)
6952 break;
6953 return AttributeCommonInfo::AT_HLSLPackOffset; // "packoffset"
6954 case 13: // 1 string to match.
6955 if (memcmp(s1: Name.data()+0, s2: "SV_GroupIndex", n: 13) != 0)
6956 break;
6957 return AttributeCommonInfo::AT_HLSLSV_GroupIndex; // "SV_GroupIndex"
6958 case 19: // 1 string to match.
6959 if (memcmp(s1: Name.data()+0, s2: "SV_DispatchThreadID", n: 19) != 0)
6960 break;
6961 return AttributeCommonInfo::AT_HLSLSV_DispatchThreadID; // "SV_DispatchThreadID"
6962 }
6963 }
6964 return AttributeCommonInfo::UnknownAttribute;
6965}
6966