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