Warning, /include/clang/Sema/AttrParsedAttrKinds.inc is written in an unsupported language. File is not indexed.
0001 /*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
0002 |* *|
0003 |* Attribute name matcher *|
0004 |* *|
0005 |* Automatically generated file, do not edit! *|
0006 |* From: Attr.td *|
0007 |* *|
0008 \*===----------------------------------------------------------------------===*/
0009
0010 static AttributeCommonInfo::Kind getAttrKind(StringRef Name, AttributeCommonInfo::Syntax Syntax) {
0011 if (AttributeCommonInfo::AS_GNU == Syntax) {
0012 switch (Name.size()) {
0013 default: break;
0014 case 3: // 3 strings to match.
0015 switch (Name[0]) {
0016 default: break;
0017 case 'f': // 1 string to match.
0018 if (memcmp(Name.data()+1, "ar", 2) != 0)
0019 break;
0020 return AttributeCommonInfo::AT_MipsLongCall; // "far"
0021 case 'h': // 1 string to match.
0022 if (memcmp(Name.data()+1, "ot", 2) != 0)
0023 break;
0024 return AttributeCommonInfo::AT_Hot; // "hot"
0025 case 'p': // 1 string to match.
0026 if (memcmp(Name.data()+1, "cs", 2) != 0)
0027 break;
0028 return AttributeCommonInfo::AT_Pcs; // "pcs"
0029 }
0030 break;
0031 case 4: // 8 strings to match.
0032 switch (Name[0]) {
0033 default: break;
0034 case 'c': // 1 string to match.
0035 if (memcmp(Name.data()+1, "old", 3) != 0)
0036 break;
0037 return AttributeCommonInfo::AT_Cold; // "cold"
0038 case 'h': // 1 string to match.
0039 if (memcmp(Name.data()+1, "ost", 3) != 0)
0040 break;
0041 return AttributeCommonInfo::AT_CUDAHost; // "host"
0042 case 'l': // 1 string to match.
0043 if (memcmp(Name.data()+1, "eaf", 3) != 0)
0044 break;
0045 return AttributeCommonInfo::AT_Leaf; // "leaf"
0046 case 'm': // 1 string to match.
0047 if (memcmp(Name.data()+1, "ode", 3) != 0)
0048 break;
0049 return AttributeCommonInfo::AT_Mode; // "mode"
0050 case 'n': // 1 string to match.
0051 if (memcmp(Name.data()+1, "ear", 3) != 0)
0052 break;
0053 return AttributeCommonInfo::AT_MipsShortCall; // "near"
0054 case 'p': // 1 string to match.
0055 if (memcmp(Name.data()+1, "ure", 3) != 0)
0056 break;
0057 return AttributeCommonInfo::AT_Pure; // "pure"
0058 case 'u': // 1 string to match.
0059 if (memcmp(Name.data()+1, "sed", 3) != 0)
0060 break;
0061 return AttributeCommonInfo::AT_Used; // "used"
0062 case 'w': // 1 string to match.
0063 if (memcmp(Name.data()+1, "eak", 3) != 0)
0064 break;
0065 return AttributeCommonInfo::AT_Weak; // "weak"
0066 }
0067 break;
0068 case 5: // 9 strings to match.
0069 switch (Name[0]) {
0070 default: break;
0071 case 'a': // 1 string to match.
0072 if (memcmp(Name.data()+1, "lias", 4) != 0)
0073 break;
0074 return AttributeCommonInfo::AT_Alias; // "alias"
0075 case 'c': // 2 strings to match.
0076 switch (Name[1]) {
0077 default: break;
0078 case 'd': // 1 string to match.
0079 if (memcmp(Name.data()+2, "ecl", 3) != 0)
0080 break;
0081 return AttributeCommonInfo::AT_CDecl; // "cdecl"
0082 case 'o': // 1 string to match.
0083 if (memcmp(Name.data()+2, "nst", 3) != 0)
0084 break;
0085 return AttributeCommonInfo::AT_Const; // "const"
0086 }
0087 break;
0088 case 'e': // 1 string to match.
0089 if (memcmp(Name.data()+1, "rror", 4) != 0)
0090 break;
0091 return AttributeCommonInfo::AT_Error; // "error"
0092 case 'g': // 1 string to match.
0093 if (memcmp(Name.data()+1, "uard", 4) != 0)
0094 break;
0095 return AttributeCommonInfo::AT_CFGuard; // "guard"
0096 case 'i': // 1 string to match.
0097 if (memcmp(Name.data()+1, "func", 4) != 0)
0098 break;
0099 return AttributeCommonInfo::AT_IFunc; // "ifunc"
0100 case 'm': // 1 string to match.
0101 if (memcmp(Name.data()+1, "odel", 4) != 0)
0102 break;
0103 return AttributeCommonInfo::AT_CodeModel; // "model"
0104 case 'n': // 2 strings to match.
0105 switch (Name[1]) {
0106 default: break;
0107 case 'a': // 1 string to match.
0108 if (memcmp(Name.data()+2, "ked", 3) != 0)
0109 break;
0110 return AttributeCommonInfo::AT_Naked; // "naked"
0111 case 'o': // 1 string to match.
0112 if (memcmp(Name.data()+2, "svm", 3) != 0)
0113 break;
0114 return AttributeCommonInfo::AT_OpenCLNoSVM; // "nosvm"
0115 }
0116 break;
0117 }
0118 break;
0119 case 6: // 16 strings to match.
0120 switch (Name[0]) {
0121 default: break;
0122 case 'a': // 1 string to match.
0123 if (memcmp(Name.data()+1, "ssume", 5) != 0)
0124 break;
0125 return AttributeCommonInfo::AT_CXXAssume; // "assume"
0126 case 'b': // 1 string to match.
0127 if (memcmp(Name.data()+1, "locks", 5) != 0)
0128 break;
0129 return AttributeCommonInfo::AT_Blocks; // "blocks"
0130 case 'c': // 1 string to match.
0131 if (memcmp(Name.data()+1, "ommon", 5) != 0)
0132 break;
0133 return AttributeCommonInfo::AT_Common; // "common"
0134 case 'd': // 1 string to match.
0135 if (memcmp(Name.data()+1, "evice", 5) != 0)
0136 break;
0137 return AttributeCommonInfo::AT_CUDADevice; // "device"
0138 case 'f': // 1 string to match.
0139 if (memcmp(Name.data()+1, "ormat", 5) != 0)
0140 break;
0141 return AttributeCommonInfo::AT_Format; // "format"
0142 case 'g': // 1 string to match.
0143 if (memcmp(Name.data()+1, "lobal", 5) != 0)
0144 break;
0145 return AttributeCommonInfo::AT_CUDAGlobal; // "global"
0146 case 'm': // 3 strings to match.
0147 switch (Name[1]) {
0148 default: break;
0149 case 'a': // 1 string to match.
0150 if (memcmp(Name.data()+2, "lloc", 4) != 0)
0151 break;
0152 return AttributeCommonInfo::AT_Restrict; // "malloc"
0153 case 'i': // 1 string to match.
0154 if (memcmp(Name.data()+2, "ps16", 4) != 0)
0155 break;
0156 return AttributeCommonInfo::AT_Mips16; // "mips16"
0157 case 's': // 1 string to match.
0158 if (memcmp(Name.data()+2, "_abi", 4) != 0)
0159 break;
0160 return AttributeCommonInfo::AT_MSABI; // "ms_abi"
0161 }
0162 break;
0163 case 'p': // 2 strings to match.
0164 if (Name[1] != 'a')
0165 break;
0166 switch (Name[2]) {
0167 default: break;
0168 case 'c': // 1 string to match.
0169 if (memcmp(Name.data()+3, "ked", 3) != 0)
0170 break;
0171 return AttributeCommonInfo::AT_Packed; // "packed"
0172 case 's': // 1 string to match.
0173 if (memcmp(Name.data()+3, "cal", 3) != 0)
0174 break;
0175 return AttributeCommonInfo::AT_Pascal; // "pascal"
0176 }
0177 break;
0178 case 'r': // 1 string to match.
0179 if (memcmp(Name.data()+1, "etain", 5) != 0)
0180 break;
0181 return AttributeCommonInfo::AT_Retain; // "retain"
0182 case 's': // 2 strings to match.
0183 switch (Name[1]) {
0184 default: break;
0185 case 'h': // 1 string to match.
0186 if (memcmp(Name.data()+2, "ared", 4) != 0)
0187 break;
0188 return AttributeCommonInfo::AT_CUDAShared; // "shared"
0189 case 'i': // 1 string to match.
0190 if (memcmp(Name.data()+2, "gnal", 4) != 0)
0191 break;
0192 return AttributeCommonInfo::AT_AVRSignal; // "signal"
0193 }
0194 break;
0195 case 't': // 1 string to match.
0196 if (memcmp(Name.data()+1, "arget", 5) != 0)
0197 break;
0198 return AttributeCommonInfo::AT_Target; // "target"
0199 case 'u': // 1 string to match.
0200 if (memcmp(Name.data()+1, "nused", 5) != 0)
0201 break;
0202 return AttributeCommonInfo::AT_Unused; // "unused"
0203 }
0204 break;
0205 case 7: // 22 strings to match.
0206 switch (Name[0]) {
0207 default: break;
0208 case '_': // 1 string to match.
0209 if (memcmp(Name.data()+1, "_const", 6) != 0)
0210 break;
0211 return AttributeCommonInfo::AT_Const; // "__const"
0212 case 'a': // 2 strings to match.
0213 switch (Name[1]) {
0214 default: break;
0215 case 'b': // 1 string to match.
0216 if (memcmp(Name.data()+2, "i_tag", 5) != 0)
0217 break;
0218 return AttributeCommonInfo::AT_AbiTag; // "abi_tag"
0219 case 'l': // 1 string to match.
0220 if (memcmp(Name.data()+2, "igned", 5) != 0)
0221 break;
0222 return AttributeCommonInfo::AT_Aligned; // "aligned"
0223 }
0224 break;
0225 case 'b': // 1 string to match.
0226 if (memcmp(Name.data()+1, "ounded", 6) != 0)
0227 break;
0228 return AttributeCommonInfo::IgnoredAttribute; // "bounded"
0229 case 'c': // 1 string to match.
0230 if (memcmp(Name.data()+1, "leanup", 6) != 0)
0231 break;
0232 return AttributeCommonInfo::AT_Cleanup; // "cleanup"
0233 case 'f': // 1 string to match.
0234 if (memcmp(Name.data()+1, "latten", 6) != 0)
0235 break;
0236 return AttributeCommonInfo::AT_Flatten; // "flatten"
0237 case 'm': // 2 strings to match.
0238 switch (Name[1]) {
0239 default: break;
0240 case 'a': // 1 string to match.
0241 if (memcmp(Name.data()+2, "naged", 5) != 0)
0242 break;
0243 return AttributeCommonInfo::AT_HIPManaged; // "managed"
0244 case 'i': // 1 string to match.
0245 if (memcmp(Name.data()+2, "nsize", 5) != 0)
0246 break;
0247 return AttributeCommonInfo::AT_MinSize; // "minsize"
0248 }
0249 break;
0250 case 'n': // 6 strings to match.
0251 switch (Name[1]) {
0252 default: break;
0253 case 'o': // 5 strings to match.
0254 switch (Name[2]) {
0255 default: break;
0256 case 'd': // 2 strings to match.
0257 if (Name[3] != 'e')
0258 break;
0259 switch (Name[4]) {
0260 default: break;
0261 case 'b': // 1 string to match.
0262 if (memcmp(Name.data()+5, "ug", 2) != 0)
0263 break;
0264 return AttributeCommonInfo::AT_NoDebug; // "nodebug"
0265 case 'r': // 1 string to match.
0266 if (memcmp(Name.data()+5, "ef", 2) != 0)
0267 break;
0268 return AttributeCommonInfo::AT_NoDeref; // "noderef"
0269 }
0270 break;
0271 case 'm': // 1 string to match.
0272 if (memcmp(Name.data()+3, "erge", 4) != 0)
0273 break;
0274 return AttributeCommonInfo::AT_NoMerge; // "nomerge"
0275 case 'n': // 1 string to match.
0276 if (memcmp(Name.data()+3, "null", 4) != 0)
0277 break;
0278 return AttributeCommonInfo::AT_NonNull; // "nonnull"
0279 case 't': // 1 string to match.
0280 if (memcmp(Name.data()+3, "hrow", 4) != 0)
0281 break;
0282 return AttributeCommonInfo::AT_NoThrow; // "nothrow"
0283 }
0284 break;
0285 case 'v': // 1 string to match.
0286 if (memcmp(Name.data()+2, "_weak", 5) != 0)
0287 break;
0288 return AttributeCommonInfo::IgnoredAttribute; // "nv_weak"
0289 }
0290 break;
0291 case 'o': // 2 strings to match.
0292 switch (Name[1]) {
0293 default: break;
0294 case 'b': // 1 string to match.
0295 if (memcmp(Name.data()+2, "jc_gc", 5) != 0)
0296 break;
0297 return AttributeCommonInfo::AT_ObjCGC; // "objc_gc"
0298 case 'p': // 1 string to match.
0299 if (memcmp(Name.data()+2, "tnone", 5) != 0)
0300 break;
0301 return AttributeCommonInfo::AT_OptimizeNone; // "optnone"
0302 }
0303 break;
0304 case 'r': // 2 strings to match.
0305 if (memcmp(Name.data()+1, "eg", 2) != 0)
0306 break;
0307 switch (Name[3]) {
0308 default: break;
0309 case 'c': // 1 string to match.
0310 if (memcmp(Name.data()+4, "all", 3) != 0)
0311 break;
0312 return AttributeCommonInfo::AT_RegCall; // "regcall"
0313 case 'p': // 1 string to match.
0314 if (memcmp(Name.data()+4, "arm", 3) != 0)
0315 break;
0316 return AttributeCommonInfo::AT_Regparm; // "regparm"
0317 }
0318 break;
0319 case 's': // 2 strings to match.
0320 switch (Name[1]) {
0321 default: break;
0322 case 'e': // 1 string to match.
0323 if (memcmp(Name.data()+2, "ction", 5) != 0)
0324 break;
0325 return AttributeCommonInfo::AT_Section; // "section"
0326 case 't': // 1 string to match.
0327 if (memcmp(Name.data()+2, "dcall", 5) != 0)
0328 break;
0329 return AttributeCommonInfo::AT_StdCall; // "stdcall"
0330 }
0331 break;
0332 case 'w': // 2 strings to match.
0333 switch (Name[1]) {
0334 default: break;
0335 case 'a': // 1 string to match.
0336 if (memcmp(Name.data()+2, "rning", 5) != 0)
0337 break;
0338 return AttributeCommonInfo::AT_Error; // "warning"
0339 case 'e': // 1 string to match.
0340 if (memcmp(Name.data()+2, "akref", 5) != 0)
0341 break;
0342 return AttributeCommonInfo::AT_WeakRef; // "weakref"
0343 }
0344 break;
0345 }
0346 break;
0347 case 8: // 21 strings to match.
0348 switch (Name[0]) {
0349 default: break;
0350 case 'N': // 1 string to match.
0351 if (memcmp(Name.data()+1, "SObject", 7) != 0)
0352 break;
0353 return AttributeCommonInfo::AT_ObjCNSObject; // "NSObject"
0354 case 'a': // 1 string to match.
0355 if (memcmp(Name.data()+1, "nnotate", 7) != 0)
0356 break;
0357 return AttributeCommonInfo::AT_Annotate; // "annotate"
0358 case 'b': // 1 string to match.
0359 if (memcmp(Name.data()+1, "locking", 7) != 0)
0360 break;
0361 return AttributeCommonInfo::AT_Blocking; // "blocking"
0362 case 'c': // 2 strings to match.
0363 switch (Name[1]) {
0364 default: break;
0365 case 'a': // 1 string to match.
0366 if (memcmp(Name.data()+2, "llback", 6) != 0)
0367 break;
0368 return AttributeCommonInfo::AT_Callback; // "callback"
0369 case 'o': // 1 string to match.
0370 if (memcmp(Name.data()+2, "nstant", 6) != 0)
0371 break;
0372 return AttributeCommonInfo::AT_CUDAConstant; // "constant"
0373 }
0374 break;
0375 case 'f': // 1 string to match.
0376 if (memcmp(Name.data()+1, "astcall", 7) != 0)
0377 break;
0378 return AttributeCommonInfo::AT_FastCall; // "fastcall"
0379 case 'i': // 2 strings to match.
0380 if (Name[1] != 'b')
0381 break;
0382 switch (Name[2]) {
0383 default: break;
0384 case 'a': // 1 string to match.
0385 if (memcmp(Name.data()+3, "ction", 5) != 0)
0386 break;
0387 return AttributeCommonInfo::AT_IBAction; // "ibaction"
0388 case 'o': // 1 string to match.
0389 if (memcmp(Name.data()+3, "utlet", 5) != 0)
0390 break;
0391 return AttributeCommonInfo::AT_IBOutlet; // "iboutlet"
0392 }
0393 break;
0394 case 'l': // 1 string to match.
0395 if (memcmp(Name.data()+1, "ockable", 7) != 0)
0396 break;
0397 return AttributeCommonInfo::AT_Lockable; // "lockable"
0398 case 'm': // 2 strings to match.
0399 switch (Name[1]) {
0400 default: break;
0401 case '6': // 1 string to match.
0402 if (memcmp(Name.data()+2, "8k_rtd", 6) != 0)
0403 break;
0404 return AttributeCommonInfo::AT_M68kRTD; // "m68k_rtd"
0405 case 'u': // 1 string to match.
0406 if (memcmp(Name.data()+2, "sttail", 6) != 0)
0407 break;
0408 return AttributeCommonInfo::AT_MustTail; // "musttail"
0409 }
0410 break;
0411 case 'n': // 5 strings to match.
0412 if (Name[1] != 'o')
0413 break;
0414 switch (Name[2]) {
0415 default: break;
0416 case 'c': // 1 string to match.
0417 if (memcmp(Name.data()+3, "ommon", 5) != 0)
0418 break;
0419 return AttributeCommonInfo::AT_NoCommon; // "nocommon"
0420 case 'e': // 1 string to match.
0421 if (memcmp(Name.data()+3, "scape", 5) != 0)
0422 break;
0423 return AttributeCommonInfo::AT_NoEscape; // "noescape"
0424 case 'i': // 1 string to match.
0425 if (memcmp(Name.data()+3, "nline", 5) != 0)
0426 break;
0427 return AttributeCommonInfo::AT_NoInline; // "noinline"
0428 case 'm': // 1 string to match.
0429 if (memcmp(Name.data()+3, "ips16", 5) != 0)
0430 break;
0431 return AttributeCommonInfo::AT_NoMips16; // "nomips16"
0432 case 'r': // 1 string to match.
0433 if (memcmp(Name.data()+3, "eturn", 5) != 0)
0434 break;
0435 return AttributeCommonInfo::AT_NoReturn; // "noreturn"
0436 }
0437 break;
0438 case 's': // 4 strings to match.
0439 switch (Name[1]) {
0440 default: break;
0441 case 'e': // 1 string to match.
0442 if (memcmp(Name.data()+2, "ntinel", 6) != 0)
0443 break;
0444 return AttributeCommonInfo::AT_Sentinel; // "sentinel"
0445 case 'i': // 1 string to match.
0446 if (memcmp(Name.data()+2, "zed_by", 6) != 0)
0447 break;
0448 return AttributeCommonInfo::AT_SizedBy; // "sized_by"
0449 case 'u': // 1 string to match.
0450 if (memcmp(Name.data()+2, "ppress", 6) != 0)
0451 break;
0452 return AttributeCommonInfo::AT_Suppress; // "suppress"
0453 case 'y': // 1 string to match.
0454 if (memcmp(Name.data()+2, "sv_abi", 6) != 0)
0455 break;
0456 return AttributeCommonInfo::AT_SysVABI; // "sysv_abi"
0457 }
0458 break;
0459 case 't': // 1 string to match.
0460 if (memcmp(Name.data()+1, "hiscall", 7) != 0)
0461 break;
0462 return AttributeCommonInfo::AT_ThisCall; // "thiscall"
0463 }
0464 break;
0465 case 9: // 14 strings to match.
0466 switch (Name[0]) {
0467 default: break;
0468 case 'd': // 2 strings to match.
0469 if (memcmp(Name.data()+1, "ll", 2) != 0)
0470 break;
0471 switch (Name[3]) {
0472 default: break;
0473 case 'e': // 1 string to match.
0474 if (memcmp(Name.data()+4, "xport", 5) != 0)
0475 break;
0476 return AttributeCommonInfo::AT_DLLExport; // "dllexport"
0477 case 'i': // 1 string to match.
0478 if (memcmp(Name.data()+4, "mport", 5) != 0)
0479 break;
0480 return AttributeCommonInfo::AT_DLLImport; // "dllimport"
0481 }
0482 break;
0483 case 'e': // 1 string to match.
0484 if (memcmp(Name.data()+1, "nable_if", 8) != 0)
0485 break;
0486 return AttributeCommonInfo::AT_EnableIf; // "enable_if"
0487 case 'f': // 1 string to match.
0488 if (memcmp(Name.data()+1, "lag_enum", 8) != 0)
0489 break;
0490 return AttributeCommonInfo::AT_FlagEnum; // "flag_enum"
0491 case 'i': // 1 string to match.
0492 if (memcmp(Name.data()+1, "nterrupt", 8) != 0)
0493 break;
0494 return AttributeCommonInfo::AT_Interrupt; // "interrupt"
0495 case 'l': // 1 string to match.
0496 if (memcmp(Name.data()+1, "ong_call", 8) != 0)
0497 break;
0498 return AttributeCommonInfo::AT_MipsLongCall; // "long_call"
0499 case 'm': // 3 strings to match.
0500 switch (Name[1]) {
0501 default: break;
0502 case 'a': // 1 string to match.
0503 if (memcmp(Name.data()+2, "y_alias", 7) != 0)
0504 break;
0505 return AttributeCommonInfo::AT_MayAlias; // "may_alias"
0506 case 'i': // 1 string to match.
0507 if (memcmp(Name.data()+2, "cromips", 7) != 0)
0508 break;
0509 return AttributeCommonInfo::AT_MicroMips; // "micromips"
0510 case 's': // 1 string to match.
0511 if (memcmp(Name.data()+2, "_struct", 7) != 0)
0512 break;
0513 return AttributeCommonInfo::AT_MSStruct; // "ms_struct"
0514 }
0515 break;
0516 case 'n': // 1 string to match.
0517 if (memcmp(Name.data()+1, "ouwtable", 8) != 0)
0518 break;
0519 return AttributeCommonInfo::AT_NoUwtable; // "nouwtable"
0520 case 's': // 2 strings to match.
0521 switch (Name[1]) {
0522 default: break;
0523 case 'e': // 1 string to match.
0524 if (memcmp(Name.data()+2, "lectany", 7) != 0)
0525 break;
0526 return AttributeCommonInfo::AT_SelectAny; // "selectany"
0527 case 'w': // 1 string to match.
0528 if (memcmp(Name.data()+2, "iftcall", 7) != 0)
0529 break;
0530 return AttributeCommonInfo::AT_SwiftCall; // "swiftcall"
0531 }
0532 break;
0533 case 't': // 1 string to match.
0534 if (memcmp(Name.data()+1, "ls_model", 8) != 0)
0535 break;
0536 return AttributeCommonInfo::AT_TLSModel; // "tls_model"
0537 case 'v': // 1 string to match.
0538 if (memcmp(Name.data()+1, "ecreturn", 8) != 0)
0539 break;
0540 return AttributeCommonInfo::AT_VecReturn; // "vecreturn"
0541 }
0542 break;
0543 case 10: // 22 strings to match.
0544 switch (Name[0]) {
0545 default: break;
0546 case 'a': // 3 strings to match.
0547 switch (Name[1]) {
0548 default: break;
0549 case 'l': // 2 strings to match.
0550 if (memcmp(Name.data()+2, "loc", 3) != 0)
0551 break;
0552 switch (Name[5]) {
0553 default: break;
0554 case '_': // 1 string to match.
0555 if (memcmp(Name.data()+6, "size", 4) != 0)
0556 break;
0557 return AttributeCommonInfo::AT_AllocSize; // "alloc_size"
0558 case 'a': // 1 string to match.
0559 if (memcmp(Name.data()+6, "ting", 4) != 0)
0560 break;
0561 return AttributeCommonInfo::AT_Allocating; // "allocating"
0562 }
0563 break;
0564 case 'r': // 1 string to match.
0565 if (memcmp(Name.data()+2, "tificial", 8) != 0)
0566 break;
0567 return AttributeCommonInfo::AT_Artificial; // "artificial"
0568 }
0569 break;
0570 case 'c': // 5 strings to match.
0571 switch (Name[1]) {
0572 default: break;
0573 case 'a': // 1 string to match.
0574 if (memcmp(Name.data()+2, "pability", 8) != 0)
0575 break;
0576 return AttributeCommonInfo::AT_Capability; // "capability"
0577 case 'o': // 4 strings to match.
0578 switch (Name[2]) {
0579 default: break;
0580 case 'd': // 1 string to match.
0581 if (memcmp(Name.data()+3, "e_align", 7) != 0)
0582 break;
0583 return AttributeCommonInfo::AT_CodeAlign; // "code_align"
0584 case 'n': // 2 strings to match.
0585 switch (Name[3]) {
0586 default: break;
0587 case 's': // 1 string to match.
0588 if (memcmp(Name.data()+4, "umable", 6) != 0)
0589 break;
0590 return AttributeCommonInfo::AT_Consumable; // "consumable"
0591 case 'v': // 1 string to match.
0592 if (memcmp(Name.data()+4, "ergent", 6) != 0)
0593 break;
0594 return AttributeCommonInfo::AT_Convergent; // "convergent"
0595 }
0596 break;
0597 case 'u': // 1 string to match.
0598 if (memcmp(Name.data()+3, "nted_by", 7) != 0)
0599 break;
0600 return AttributeCommonInfo::AT_CountedBy; // "counted_by"
0601 }
0602 break;
0603 }
0604 break;
0605 case 'd': // 2 strings to match.
0606 if (Name[1] != 'e')
0607 break;
0608 switch (Name[2]) {
0609 default: break;
0610 case 'p': // 1 string to match.
0611 if (memcmp(Name.data()+3, "recated", 7) != 0)
0612 break;
0613 return AttributeCommonInfo::AT_Deprecated; // "deprecated"
0614 case 's': // 1 string to match.
0615 if (memcmp(Name.data()+3, "tructor", 7) != 0)
0616 break;
0617 return AttributeCommonInfo::AT_Destructor; // "destructor"
0618 }
0619 break;
0620 case 'f': // 1 string to match.
0621 if (memcmp(Name.data()+1, "ormat_arg", 9) != 0)
0622 break;
0623 return AttributeCommonInfo::AT_FormatArg; // "format_arg"
0624 case 'g': // 2 strings to match.
0625 switch (Name[1]) {
0626 default: break;
0627 case 'n': // 1 string to match.
0628 if (memcmp(Name.data()+2, "u_inline", 8) != 0)
0629 break;
0630 return AttributeCommonInfo::AT_GNUInline; // "gnu_inline"
0631 case 'u': // 1 string to match.
0632 if (memcmp(Name.data()+2, "arded_by", 8) != 0)
0633 break;
0634 return AttributeCommonInfo::AT_GuardedBy; // "guarded_by"
0635 }
0636 break;
0637 case 'n': // 3 strings to match.
0638 if (Name[1] != 'o')
0639 break;
0640 switch (Name[2]) {
0641 default: break;
0642 case '_': // 2 strings to match.
0643 switch (Name[3]) {
0644 default: break;
0645 case 'b': // 1 string to match.
0646 if (memcmp(Name.data()+4, "uiltin", 6) != 0)
0647 break;
0648 return AttributeCommonInfo::AT_NoBuiltin; // "no_builtin"
0649 case 'd': // 1 string to match.
0650 if (memcmp(Name.data()+4, "estroy", 6) != 0)
0651 break;
0652 return AttributeCommonInfo::AT_NoDestroy; // "no_destroy"
0653 }
0654 break;
0655 case 'c': // 1 string to match.
0656 if (memcmp(Name.data()+3, "f_check", 7) != 0)
0657 break;
0658 return AttributeCommonInfo::AT_AnyX86NoCfCheck; // "nocf_check"
0659 }
0660 break;
0661 case 's': // 3 strings to match.
0662 switch (Name[1]) {
0663 default: break;
0664 case 'h': // 1 string to match.
0665 if (memcmp(Name.data()+2, "ort_call", 8) != 0)
0666 break;
0667 return AttributeCommonInfo::AT_MipsShortCall; // "short_call"
0668 case 'w': // 2 strings to match.
0669 if (memcmp(Name.data()+2, "ift_", 4) != 0)
0670 break;
0671 switch (Name[6]) {
0672 default: break;
0673 case 'a': // 1 string to match.
0674 if (memcmp(Name.data()+7, "ttr", 3) != 0)
0675 break;
0676 return AttributeCommonInfo::AT_SwiftAttr; // "swift_attr"
0677 case 'n': // 1 string to match.
0678 if (memcmp(Name.data()+7, "ame", 3) != 0)
0679 break;
0680 return AttributeCommonInfo::AT_SwiftName; // "swift_name"
0681 }
0682 break;
0683 }
0684 break;
0685 case 'u': // 1 string to match.
0686 if (memcmp(Name.data()+1, "se_handle", 9) != 0)
0687 break;
0688 return AttributeCommonInfo::AT_UseHandle; // "use_handle"
0689 case 'v': // 2 strings to match.
0690 switch (Name[1]) {
0691 default: break;
0692 case 'e': // 1 string to match.
0693 if (memcmp(Name.data()+2, "ctorcall", 8) != 0)
0694 break;
0695 return AttributeCommonInfo::AT_VectorCall; // "vectorcall"
0696 case 'i': // 1 string to match.
0697 if (memcmp(Name.data()+2, "sibility", 8) != 0)
0698 break;
0699 return AttributeCommonInfo::AT_Visibility; // "visibility"
0700 }
0701 break;
0702 }
0703 break;
0704 case 11: // 29 strings to match.
0705 switch (Name[0]) {
0706 default: break;
0707 case 'a': // 2 strings to match.
0708 if (Name[1] != 'l')
0709 break;
0710 switch (Name[2]) {
0711 default: break;
0712 case 'i': // 1 string to match.
0713 if (memcmp(Name.data()+3, "gn_value", 8) != 0)
0714 break;
0715 return AttributeCommonInfo::AT_AlignValue; // "align_value"
0716 case 'l': // 1 string to match.
0717 if (memcmp(Name.data()+3, "oc_align", 8) != 0)
0718 break;
0719 return AttributeCommonInfo::AT_AllocAlign; // "alloc_align"
0720 }
0721 break;
0722 case 'c': // 3 strings to match.
0723 switch (Name[1]) {
0724 default: break;
0725 case 'a': // 1 string to match.
0726 if (memcmp(Name.data()+2, "lled_once", 9) != 0)
0727 break;
0728 return AttributeCommonInfo::AT_CalledOnce; // "called_once"
0729 case 'f': // 1 string to match.
0730 if (memcmp(Name.data()+2, "_consumed", 9) != 0)
0731 break;
0732 return AttributeCommonInfo::AT_CFConsumed; // "cf_consumed"
0733 case 'o': // 1 string to match.
0734 if (memcmp(Name.data()+2, "nstructor", 9) != 0)
0735 break;
0736 return AttributeCommonInfo::AT_Constructor; // "constructor"
0737 }
0738 break;
0739 case 'd': // 1 string to match.
0740 if (memcmp(Name.data()+1, "iagnose_if", 10) != 0)
0741 break;
0742 return AttributeCommonInfo::AT_DiagnoseIf; // "diagnose_if"
0743 case 'e': // 2 strings to match.
0744 switch (Name[1]) {
0745 default: break;
0746 case 'n': // 1 string to match.
0747 if (memcmp(Name.data()+2, "force_tcb", 9) != 0)
0748 break;
0749 return AttributeCommonInfo::AT_EnforceTCB; // "enforce_tcb"
0750 case 'x': // 1 string to match.
0751 if (memcmp(Name.data()+2, "port_name", 9) != 0)
0752 break;
0753 return AttributeCommonInfo::AT_WebAssemblyExportName; // "export_name"
0754 }
0755 break;
0756 case 'f': // 1 string to match.
0757 if (memcmp(Name.data()+1, "allthrough", 10) != 0)
0758 break;
0759 return AttributeCommonInfo::AT_FallThrough; // "fallthrough"
0760 case 'g': // 1 string to match.
0761 if (memcmp(Name.data()+1, "uarded_var", 10) != 0)
0762 break;
0763 return AttributeCommonInfo::AT_GuardedVar; // "guarded_var"
0764 case 'i': // 1 string to match.
0765 if (memcmp(Name.data()+1, "mport_name", 10) != 0)
0766 break;
0767 return AttributeCommonInfo::AT_WebAssemblyImportName; // "import_name"
0768 case 'm': // 2 strings to match.
0769 if (Name[1] != 'a')
0770 break;
0771 switch (Name[2]) {
0772 default: break;
0773 case 't': // 1 string to match.
0774 if (memcmp(Name.data()+3, "rix_type", 8) != 0)
0775 break;
0776 return AttributeCommonInfo::AT_MatrixType; // "matrix_type"
0777 case 'y': // 1 string to match.
0778 if (memcmp(Name.data()+3, "be_undef", 8) != 0)
0779 break;
0780 return AttributeCommonInfo::AT_MaybeUndef; // "maybe_undef"
0781 }
0782 break;
0783 case 'n': // 5 strings to match.
0784 switch (Name[1]) {
0785 default: break;
0786 case 'o': // 4 strings to match.
0787 switch (Name[2]) {
0788 default: break;
0789 case '_': // 1 string to match.
0790 if (memcmp(Name.data()+3, "sanitize", 8) != 0)
0791 break;
0792 return AttributeCommonInfo::AT_NoSanitize; // "no_sanitize"
0793 case 'd': // 1 string to match.
0794 if (memcmp(Name.data()+3, "uplicate", 8) != 0)
0795 break;
0796 return AttributeCommonInfo::AT_NoDuplicate; // "noduplicate"
0797 case 'm': // 1 string to match.
0798 if (memcmp(Name.data()+3, "icromips", 8) != 0)
0799 break;
0800 return AttributeCommonInfo::AT_NoMicroMips; // "nomicromips"
0801 case 'n': // 1 string to match.
0802 if (memcmp(Name.data()+3, "blocking", 8) != 0)
0803 break;
0804 return AttributeCommonInfo::AT_NonBlocking; // "nonblocking"
0805 }
0806 break;
0807 case 's': // 1 string to match.
0808 if (memcmp(Name.data()+2, "_consumed", 9) != 0)
0809 break;
0810 return AttributeCommonInfo::AT_NSConsumed; // "ns_consumed"
0811 }
0812 break;
0813 case 'o': // 3 strings to match.
0814 switch (Name[1]) {
0815 default: break;
0816 case 'b': // 2 strings to match.
0817 if (memcmp(Name.data()+2, "jc_", 3) != 0)
0818 break;
0819 switch (Name[5]) {
0820 default: break;
0821 case 'b': // 1 string to match.
0822 if (memcmp(Name.data()+6, "ridge", 5) != 0)
0823 break;
0824 return AttributeCommonInfo::AT_ObjCBridge; // "objc_bridge"
0825 case 'd': // 1 string to match.
0826 if (memcmp(Name.data()+6, "irect", 5) != 0)
0827 break;
0828 return AttributeCommonInfo::AT_ObjCDirect; // "objc_direct"
0829 }
0830 break;
0831 case 's': // 1 string to match.
0832 if (memcmp(Name.data()+2, "_consumed", 9) != 0)
0833 break;
0834 return AttributeCommonInfo::AT_OSConsumed; // "os_consumed"
0835 }
0836 break;
0837 case 's': // 3 strings to match.
0838 switch (Name[1]) {
0839 default: break;
0840 case 'w': // 2 strings to match.
0841 if (memcmp(Name.data()+2, "ift_", 4) != 0)
0842 break;
0843 switch (Name[6]) {
0844 default: break;
0845 case 'a': // 1 string to match.
0846 if (memcmp(Name.data()+7, "sync", 4) != 0)
0847 break;
0848 return AttributeCommonInfo::AT_SwiftAsync; // "swift_async"
0849 case 'e': // 1 string to match.
0850 if (memcmp(Name.data()+7, "rror", 4) != 0)
0851 break;
0852 return AttributeCommonInfo::AT_SwiftError; // "swift_error"
0853 }
0854 break;
0855 case 'y': // 1 string to match.
0856 if (memcmp(Name.data()+2, "cl_kernel", 9) != 0)
0857 break;
0858 return AttributeCommonInfo::AT_SYCLKernel; // "sycl_kernel"
0859 }
0860 break;
0861 case 't': // 1 string to match.
0862 if (memcmp(Name.data()+1, "rivial_abi", 10) != 0)
0863 break;
0864 return AttributeCommonInfo::AT_TrivialABI; // "trivial_abi"
0865 case 'u': // 1 string to match.
0866 if (memcmp(Name.data()+1, "navailable", 10) != 0)
0867 break;
0868 return AttributeCommonInfo::AT_Unavailable; // "unavailable"
0869 case 'v': // 1 string to match.
0870 if (memcmp(Name.data()+1, "ector_size", 10) != 0)
0871 break;
0872 return AttributeCommonInfo::AT_VectorSize; // "vector_size"
0873 case 'w': // 2 strings to match.
0874 switch (Name[1]) {
0875 default: break;
0876 case 'a': // 1 string to match.
0877 if (memcmp(Name.data()+2, "rn_unused", 9) != 0)
0878 break;
0879 return AttributeCommonInfo::AT_WarnUnused; // "warn_unused"
0880 case 'e': // 1 string to match.
0881 if (memcmp(Name.data()+2, "ak_import", 9) != 0)
0882 break;
0883 return AttributeCommonInfo::AT_WeakImport; // "weak_import"
0884 }
0885 break;
0886 }
0887 break;
0888 case 12: // 14 strings to match.
0889 switch (Name[0]) {
0890 default: break;
0891 case 'a': // 1 string to match.
0892 if (memcmp(Name.data()+1, "vailability", 11) != 0)
0893 break;
0894 return AttributeCommonInfo::AT_Availability; // "availability"
0895 case 'b': // 3 strings to match.
0896 switch (Name[1]) {
0897 default: break;
0898 case 'p': // 1 string to match.
0899 if (memcmp(Name.data()+2, "f_fastcall", 10) != 0)
0900 break;
0901 return AttributeCommonInfo::AT_BPFFastCall; // "bpf_fastcall"
0902 case 't': // 2 strings to match.
0903 if (memcmp(Name.data()+2, "f_", 2) != 0)
0904 break;
0905 switch (Name[4]) {
0906 default: break;
0907 case 'd': // 1 string to match.
0908 if (memcmp(Name.data()+5, "ecl_tag", 7) != 0)
0909 break;
0910 return AttributeCommonInfo::AT_BTFDeclTag; // "btf_decl_tag"
0911 case 't': // 1 string to match.
0912 if (memcmp(Name.data()+5, "ype_tag", 7) != 0)
0913 break;
0914 return AttributeCommonInfo::AT_BTFTypeTag; // "btf_type_tag"
0915 }
0916 break;
0917 }
0918 break;
0919 case 'c': // 3 strings to match.
0920 switch (Name[1]) {
0921 default: break;
0922 case 'o': // 1 string to match.
0923 if (memcmp(Name.data()+2, "ro_wrapper", 10) != 0)
0924 break;
0925 return AttributeCommonInfo::AT_CoroWrapper; // "coro_wrapper"
0926 case 'p': // 2 strings to match.
0927 if (memcmp(Name.data()+2, "u_", 2) != 0)
0928 break;
0929 switch (Name[4]) {
0930 default: break;
0931 case 'd': // 1 string to match.
0932 if (memcmp(Name.data()+5, "ispatch", 7) != 0)
0933 break;
0934 return AttributeCommonInfo::AT_CPUDispatch; // "cpu_dispatch"
0935 case 's': // 1 string to match.
0936 if (memcmp(Name.data()+5, "pecific", 7) != 0)
0937 break;
0938 return AttributeCommonInfo::AT_CPUSpecific; // "cpu_specific"
0939 }
0940 break;
0941 }
0942 break;
0943 case 'n': // 2 strings to match.
0944 switch (Name[1]) {
0945 default: break;
0946 case 'o': // 1 string to match.
0947 if (memcmp(Name.data()+2, "convergent", 10) != 0)
0948 break;
0949 return AttributeCommonInfo::AT_NoConvergent; // "noconvergent"
0950 case 'v': // 1 string to match.
0951 if (memcmp(Name.data()+2, "ptx_kernel", 10) != 0)
0952 break;
0953 return AttributeCommonInfo::AT_NVPTXKernel; // "nvptx_kernel"
0954 }
0955 break;
0956 case 'o': // 3 strings to match.
0957 switch (Name[1]) {
0958 default: break;
0959 case 'b': // 1 string to match.
0960 if (memcmp(Name.data()+2, "jc_boxable", 10) != 0)
0961 break;
0962 return AttributeCommonInfo::AT_ObjCBoxable; // "objc_boxable"
0963 case 'p': // 1 string to match.
0964 if (memcmp(Name.data()+2, "encl_local", 10) != 0)
0965 break;
0966 return AttributeCommonInfo::AT_OpenCLLocalAddressSpace; // "opencl_local"
0967 case 'v': // 1 string to match.
0968 if (memcmp(Name.data()+2, "erloadable", 10) != 0)
0969 break;
0970 return AttributeCommonInfo::AT_Overloadable; // "overloadable"
0971 }
0972 break;
0973 case 'p': // 1 string to match.
0974 if (memcmp(Name.data()+1, "reserve_all", 11) != 0)
0975 break;
0976 return AttributeCommonInfo::AT_PreserveAll; // "preserve_all"
0977 case 's': // 1 string to match.
0978 if (memcmp(Name.data()+1, "wift_bridge", 11) != 0)
0979 break;
0980 return AttributeCommonInfo::AT_SwiftBridge; // "swift_bridge"
0981 }
0982 break;
0983 case 13: // 26 strings to match.
0984 switch (Name[0]) {
0985 default: break;
0986 case 'a': // 3 strings to match.
0987 switch (Name[1]) {
0988 default: break;
0989 case 'd': // 1 string to match.
0990 if (memcmp(Name.data()+2, "dress_space", 11) != 0)
0991 break;
0992 return AttributeCommonInfo::AT_AddressSpace; // "address_space"
0993 case 'l': // 1 string to match.
0994 if (memcmp(Name.data()+2, "ways_inline", 11) != 0)
0995 break;
0996 return AttributeCommonInfo::AT_AlwaysInline; // "always_inline"
0997 case 'm': // 1 string to match.
0998 if (memcmp(Name.data()+2, "dgpu_kernel", 11) != 0)
0999 break;
1000 return AttributeCommonInfo::AT_AMDGPUKernelCall; // "amdgpu_kernel"
1001 }
1002 break;
1003 case 'c': // 1 string to match.
1004 if (memcmp(Name.data()+1, "allable_when", 12) != 0)
1005 break;
1006 return AttributeCommonInfo::AT_CallableWhen; // "callable_when"
1007 case 'g': // 1 string to match.
1008 if (memcmp(Name.data()+1, "rid_constant", 12) != 0)
1009 break;
1010 return AttributeCommonInfo::AT_CUDAGridConstant; // "grid_constant"
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: // 23 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': // 4 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 'p': // 1 string to match.
1605 if (memcmp(Name.data()+5, "ecializations", 13) != 0)
1606 break;
1607 return AttributeCommonInfo::AT_NoSpecializations; // "no_specializations"
1608 case 't': // 1 string to match.
1609 if (memcmp(Name.data()+5, "ack_protector", 13) != 0)
1610 break;
1611 return AttributeCommonInfo::AT_NoStackProtector; // "no_stack_protector"
1612 }
1613 break;
1614 case 'o': // 4 strings to match.
1615 switch (Name[1]) {
1616 default: break;
1617 case 'b': // 2 strings to match.
1618 if (memcmp(Name.data()+2, "jc_", 3) != 0)
1619 break;
1620 switch (Name[5]) {
1621 default: break;
1622 case 'm': // 1 string to match.
1623 if (memcmp(Name.data()+6, "ethod_family", 12) != 0)
1624 break;
1625 return AttributeCommonInfo::AT_ObjCMethodFamily; // "objc_method_family"
1626 case 'n': // 1 string to match.
1627 if (memcmp(Name.data()+6, "onlazy_class", 12) != 0)
1628 break;
1629 return AttributeCommonInfo::AT_ObjCNonLazyClass; // "objc_nonlazy_class"
1630 }
1631 break;
1632 case 'p': // 2 strings to match.
1633 if (memcmp(Name.data()+2, "encl_", 5) != 0)
1634 break;
1635 switch (Name[7]) {
1636 default: break;
1637 case 'g': // 1 string to match.
1638 if (memcmp(Name.data()+8, "lobal_host", 10) != 0)
1639 break;
1640 return AttributeCommonInfo::AT_OpenCLGlobalHostAddressSpace; // "opencl_global_host"
1641 case 'u': // 1 string to match.
1642 if (memcmp(Name.data()+8, "nroll_hint", 10) != 0)
1643 break;
1644 return AttributeCommonInfo::AT_OpenCLUnrollHint; // "opencl_unroll_hint"
1645 }
1646 break;
1647 }
1648 break;
1649 case 'r': // 1 string to match.
1650 if (memcmp(Name.data()+1, "elease_capability", 17) != 0)
1651 break;
1652 return AttributeCommonInfo::AT_ReleaseCapability; // "release_capability"
1653 case 's': // 3 strings to match.
1654 switch (Name[1]) {
1655 default: break;
1656 case 'w': // 2 strings to match.
1657 if (memcmp(Name.data()+2, "ift_", 4) != 0)
1658 break;
1659 switch (Name[6]) {
1660 default: break;
1661 case 'e': // 1 string to match.
1662 if (memcmp(Name.data()+7, "rror_result", 11) != 0)
1663 break;
1664 return AttributeCommonInfo::AT_SwiftErrorResult; // "swift_error_result"
1665 case 'o': // 1 string to match.
1666 if (memcmp(Name.data()+7, "bjc_members", 11) != 0)
1667 break;
1668 return AttributeCommonInfo::AT_SwiftObjCMembers; // "swift_objc_members"
1669 }
1670 break;
1671 case 'y': // 1 string to match.
1672 if (memcmp(Name.data()+2, "cl_special_class", 16) != 0)
1673 break;
1674 return AttributeCommonInfo::AT_SYCLSpecialClass; // "sycl_special_class"
1675 }
1676 break;
1677 case 'w': // 1 string to match.
1678 if (memcmp(Name.data()+1, "arn_unused_result", 17) != 0)
1679 break;
1680 return AttributeCommonInfo::AT_WarnUnusedResult; // "warn_unused_result"
1681 }
1682 break;
1683 case 19: // 22 strings to match.
1684 switch (Name[0]) {
1685 default: break;
1686 case 'a': // 2 strings to match.
1687 switch (Name[1]) {
1688 default: break;
1689 case 'm': // 1 string to match.
1690 if (memcmp(Name.data()+2, "dgpu_waves_per_eu", 17) != 0)
1691 break;
1692 return AttributeCommonInfo::AT_AMDGPUWavesPerEU; // "amdgpu_waves_per_eu"
1693 case 'r': // 1 string to match.
1694 if (memcmp(Name.data()+2, "m_sve_vector_bits", 17) != 0)
1695 break;
1696 return AttributeCommonInfo::AT_ArmSveVectorBits; // "arm_sve_vector_bits"
1697 }
1698 break;
1699 case 'c': // 6 strings to match.
1700 switch (Name[1]) {
1701 default: break;
1702 case 'f': // 3 strings to match.
1703 if (Name[2] != '_')
1704 break;
1705 switch (Name[3]) {
1706 default: break;
1707 case 'a': // 1 string to match.
1708 if (memcmp(Name.data()+4, "udited_transfer", 15) != 0)
1709 break;
1710 return AttributeCommonInfo::AT_CFAuditedTransfer; // "cf_audited_transfer"
1711 case 'r': // 1 string to match.
1712 if (memcmp(Name.data()+4, "eturns_retained", 15) != 0)
1713 break;
1714 return AttributeCommonInfo::AT_CFReturnsRetained; // "cf_returns_retained"
1715 case 'u': // 1 string to match.
1716 if (memcmp(Name.data()+4, "nknown_transfer", 15) != 0)
1717 break;
1718 return AttributeCommonInfo::AT_CFUnknownTransfer; // "cf_unknown_transfer"
1719 }
1720 break;
1721 case 'l': // 1 string to match.
1722 if (memcmp(Name.data()+2, "ang_builtin_alias", 17) != 0)
1723 break;
1724 return AttributeCommonInfo::AT_BuiltinAlias; // "clang_builtin_alias"
1725 case 'm': // 1 string to match.
1726 if (memcmp(Name.data()+2, "se_nonsecure_call", 17) != 0)
1727 break;
1728 return AttributeCommonInfo::AT_CmseNSCall; // "cmse_nonsecure_call"
1729 case 'o': // 1 string to match.
1730 if (memcmp(Name.data()+2, "ro_await_elidable", 17) != 0)
1731 break;
1732 return AttributeCommonInfo::AT_CoroAwaitElidable; // "coro_await_elidable"
1733 }
1734 break;
1735 case 'd': // 1 string to match.
1736 if (memcmp(Name.data()+1, "iagnose_as_builtin", 18) != 0)
1737 break;
1738 return AttributeCommonInfo::AT_DiagnoseAsBuiltin; // "diagnose_as_builtin"
1739 case 'l': // 1 string to match.
1740 if (memcmp(Name.data()+1, "ifetime_capture_by", 18) != 0)
1741 break;
1742 return AttributeCommonInfo::AT_LifetimeCaptureBy; // "lifetime_capture_by"
1743 case 'n': // 3 strings to match.
1744 switch (Name[1]) {
1745 default: break;
1746 case 'o': // 2 strings to match.
1747 if (Name[2] != '_')
1748 break;
1749 switch (Name[3]) {
1750 default: break;
1751 case 'r': // 1 string to match.
1752 if (memcmp(Name.data()+4, "andomize_layout", 15) != 0)
1753 break;
1754 return AttributeCommonInfo::AT_NoRandomizeLayout; // "no_randomize_layout"
1755 case 's': // 1 string to match.
1756 if (memcmp(Name.data()+4, "anitize_address", 15) != 0)
1757 break;
1758 return AttributeCommonInfo::AT_NoSanitizeSpecific; // "no_sanitize_address"
1759 }
1760 break;
1761 case 's': // 1 string to match.
1762 if (memcmp(Name.data()+2, "_returns_retained", 17) != 0)
1763 break;
1764 return AttributeCommonInfo::AT_NSReturnsRetained; // "ns_returns_retained"
1765 }
1766 break;
1767 case 'o': // 5 strings to match.
1768 switch (Name[1]) {
1769 default: break;
1770 case 'b': // 4 strings to match.
1771 if (memcmp(Name.data()+2, "jc_", 3) != 0)
1772 break;
1773 switch (Name[5]) {
1774 default: break;
1775 case 'b': // 2 strings to match.
1776 if (memcmp(Name.data()+6, "ridge_", 6) != 0)
1777 break;
1778 switch (Name[12]) {
1779 default: break;
1780 case 'm': // 1 string to match.
1781 if (memcmp(Name.data()+13, "utable", 6) != 0)
1782 break;
1783 return AttributeCommonInfo::AT_ObjCBridgeMutable; // "objc_bridge_mutable"
1784 case 'r': // 1 string to match.
1785 if (memcmp(Name.data()+13, "elated", 6) != 0)
1786 break;
1787 return AttributeCommonInfo::AT_ObjCBridgeRelated; // "objc_bridge_related"
1788 }
1789 break;
1790 case 'd': // 1 string to match.
1791 if (memcmp(Name.data()+6, "irect_members", 13) != 0)
1792 break;
1793 return AttributeCommonInfo::AT_ObjCDirectMembers; // "objc_direct_members"
1794 case 'r': // 1 string to match.
1795 if (memcmp(Name.data()+6, "equires_super", 13) != 0)
1796 break;
1797 return AttributeCommonInfo::AT_ObjCRequiresSuper; // "objc_requires_super"
1798 }
1799 break;
1800 case 's': // 1 string to match.
1801 if (memcmp(Name.data()+2, "_returns_retained", 17) != 0)
1802 break;
1803 return AttributeCommonInfo::AT_OSReturnsRetained; // "os_returns_retained"
1804 }
1805 break;
1806 case 'r': // 1 string to match.
1807 if (memcmp(Name.data()+1, "equires_capability", 18) != 0)
1808 break;
1809 return AttributeCommonInfo::AT_RequiresCapability; // "requires_capability"
1810 case 's': // 1 string to match.
1811 if (memcmp(Name.data()+1, "wift_async_context", 18) != 0)
1812 break;
1813 return AttributeCommonInfo::AT_SwiftAsyncContext; // "swift_async_context"
1814 case 'u': // 1 string to match.
1815 if (memcmp(Name.data()+1, "nsafe_buffer_usage", 18) != 0)
1816 break;
1817 return AttributeCommonInfo::AT_UnsafeBufferUsage; // "unsafe_buffer_usage"
1818 case 'z': // 1 string to match.
1819 if (memcmp(Name.data()+1, "ero_call_used_regs", 18) != 0)
1820 break;
1821 return AttributeCommonInfo::AT_ZeroCallUsedRegs; // "zero_call_used_regs"
1822 }
1823 break;
1824 case 20: // 9 strings to match.
1825 switch (Name[0]) {
1826 default: break;
1827 case 'c': // 2 strings to match.
1828 switch (Name[1]) {
1829 default: break;
1830 case 'l': // 1 string to match.
1831 if (memcmp(Name.data()+2, "spv_libclc_builtin", 18) != 0)
1832 break;
1833 return AttributeCommonInfo::AT_ClspvLibclcBuiltin; // "clspv_libclc_builtin"
1834 case 'm': // 1 string to match.
1835 if (memcmp(Name.data()+2, "se_nonsecure_entry", 18) != 0)
1836 break;
1837 return AttributeCommonInfo::AT_CmseNSEntry; // "cmse_nonsecure_entry"
1838 }
1839 break;
1840 case 'l': // 1 string to match.
1841 if (memcmp(Name.data()+1, "oader_uninitialized", 19) != 0)
1842 break;
1843 return AttributeCommonInfo::AT_LoaderUninitialized; // "loader_uninitialized"
1844 case 'n': // 1 string to match.
1845 if (memcmp(Name.data()+1, "eon_polyvector_type", 19) != 0)
1846 break;
1847 return AttributeCommonInfo::AT_NeonPolyVectorType; // "neon_polyvector_type"
1848 case 'o': // 2 strings to match.
1849 switch (Name[1]) {
1850 default: break;
1851 case 'b': // 1 string to match.
1852 if (memcmp(Name.data()+2, "jc_runtime_visible", 18) != 0)
1853 break;
1854 return AttributeCommonInfo::AT_ObjCRuntimeVisible; // "objc_runtime_visible"
1855 case 'p': // 1 string to match.
1856 if (memcmp(Name.data()+2, "encl_global_device", 18) != 0)
1857 break;
1858 return AttributeCommonInfo::AT_OpenCLGlobalDeviceAddressSpace; // "opencl_global_device"
1859 }
1860 break;
1861 case 'r': // 1 string to match.
1862 if (memcmp(Name.data()+1, "eqd_work_group_size", 19) != 0)
1863 break;
1864 return AttributeCommonInfo::AT_ReqdWorkGroupSize; // "reqd_work_group_size"
1865 case 's': // 1 string to match.
1866 if (memcmp(Name.data()+1, "hared_lock_function", 19) != 0)
1867 break;
1868 return AttributeCommonInfo::AT_AcquireCapability; // "shared_lock_function"
1869 case 'w': // 1 string to match.
1870 if (memcmp(Name.data()+1, "ork_group_size_hint", 19) != 0)
1871 break;
1872 return AttributeCommonInfo::AT_WorkGroupSizeHint; // "work_group_size_hint"
1873 }
1874 break;
1875 case 21: // 11 strings to match.
1876 switch (Name[0]) {
1877 default: break;
1878 case 'a': // 1 string to match.
1879 if (memcmp(Name.data()+1, "ssert_exclusive_lock", 20) != 0)
1880 break;
1881 return AttributeCommonInfo::AT_AssertExclusiveLock; // "assert_exclusive_lock"
1882 case 'l': // 1 string to match.
1883 if (memcmp(Name.data()+1, "to_visibility_public", 20) != 0)
1884 break;
1885 return AttributeCommonInfo::AT_LTOVisibilityPublic; // "lto_visibility_public"
1886 case 'o': // 1 string to match.
1887 if (memcmp(Name.data()+1, "bjc_precise_lifetime", 20) != 0)
1888 break;
1889 return AttributeCommonInfo::AT_ObjCPreciseLifetime; // "objc_precise_lifetime"
1890 case 'p': // 2 strings to match.
1891 switch (Name[1]) {
1892 default: break;
1893 case 'o': // 1 string to match.
1894 if (memcmp(Name.data()+2, "inter_with_type_tag", 19) != 0)
1895 break;
1896 return AttributeCommonInfo::AT_ArgumentWithTypeTag; // "pointer_with_type_tag"
1897 case 'r': // 1 string to match.
1898 if (memcmp(Name.data()+2, "eserve_access_index", 19) != 0)
1899 break;
1900 return AttributeCommonInfo::AT_BPFPreserveAccessIndex; // "preserve_access_index"
1901 }
1902 break;
1903 case 'r': // 1 string to match.
1904 if (memcmp(Name.data()+1, "iscv_rvv_vector_bits", 20) != 0)
1905 break;
1906 return AttributeCommonInfo::AT_RISCVRVVVectorBits; // "riscv_rvv_vector_bits"
1907 case 's': // 3 strings to match.
1908 switch (Name[1]) {
1909 default: break;
1910 case 'h': // 1 string to match.
1911 if (memcmp(Name.data()+2, "ared_locks_required", 19) != 0)
1912 break;
1913 return AttributeCommonInfo::AT_RequiresCapability; // "shared_locks_required"
1914 case 'w': // 2 strings to match.
1915 if (memcmp(Name.data()+2, "ift_", 4) != 0)
1916 break;
1917 switch (Name[6]) {
1918 default: break;
1919 case 'b': // 1 string to match.
1920 if (memcmp(Name.data()+7, "ridged_typedef", 14) != 0)
1921 break;
1922 return AttributeCommonInfo::AT_SwiftBridgedTypedef; // "swift_bridged_typedef"
1923 case 'i': // 1 string to match.
1924 if (memcmp(Name.data()+7, "ndirect_result", 14) != 0)
1925 break;
1926 return AttributeCommonInfo::AT_SwiftIndirectResult; // "swift_indirect_result"
1927 }
1928 break;
1929 }
1930 break;
1931 case 't': // 1 string to match.
1932 if (memcmp(Name.data()+1, "ype_tag_for_datatype", 20) != 0)
1933 break;
1934 return AttributeCommonInfo::AT_TypeTagForDatatype; // "type_tag_for_datatype"
1935 case 'x': // 1 string to match.
1936 if (memcmp(Name.data()+1, "ray_never_instrument", 20) != 0)
1937 break;
1938 return AttributeCommonInfo::AT_XRayInstrument; // "xray_never_instrument"
1939 }
1940 break;
1941 case 22: // 8 strings to match.
1942 switch (Name[0]) {
1943 default: break;
1944 case 'a': // 1 string to match.
1945 if (memcmp(Name.data()+1, "rgument_with_type_tag", 21) != 0)
1946 break;
1947 return AttributeCommonInfo::AT_ArgumentWithTypeTag; // "argument_with_type_tag"
1948 case 'e': // 1 string to match.
1949 if (memcmp(Name.data()+1, "xternal_source_symbol", 21) != 0)
1950 break;
1951 return AttributeCommonInfo::AT_ExternalSourceSymbol; // "external_source_symbol"
1952 case 'n': // 1 string to match.
1953 if (memcmp(Name.data()+1, "o_instrument_function", 21) != 0)
1954 break;
1955 return AttributeCommonInfo::AT_NoInstrumentFunction; // "no_instrument_function"
1956 case 'o': // 1 string to match.
1957 if (memcmp(Name.data()+1, "bjc_independent_class", 21) != 0)
1958 break;
1959 return AttributeCommonInfo::AT_ObjCIndependentClass; // "objc_independent_class"
1960 case 'p': // 2 strings to match.
1961 switch (Name[1]) {
1962 default: break;
1963 case 'r': // 1 string to match.
1964 if (memcmp(Name.data()+2, "eserve_static_offset", 20) != 0)
1965 break;
1966 return AttributeCommonInfo::AT_BPFPreserveStaticOffset; // "preserve_static_offset"
1967 case 't': // 1 string to match.
1968 if (memcmp(Name.data()+2, "rauth_vtable_pointer", 20) != 0)
1969 break;
1970 return AttributeCommonInfo::AT_VTablePointerAuthentication; // "ptrauth_vtable_pointer"
1971 }
1972 break;
1973 case 't': // 1 string to match.
1974 if (memcmp(Name.data()+1, "ry_acquire_capability", 21) != 0)
1975 break;
1976 return AttributeCommonInfo::AT_TryAcquireCapability; // "try_acquire_capability"
1977 case 'x': // 1 string to match.
1978 if (memcmp(Name.data()+1, "ray_always_instrument", 21) != 0)
1979 break;
1980 return AttributeCommonInfo::AT_XRayInstrument; // "xray_always_instrument"
1981 }
1982 break;
1983 case 23: // 8 strings to match.
1984 switch (Name[0]) {
1985 default: break;
1986 case 'c': // 1 string to match.
1987 if (memcmp(Name.data()+1, "f_returns_not_retained", 22) != 0)
1988 break;
1989 return AttributeCommonInfo::AT_CFReturnsNotRetained; // "cf_returns_not_retained"
1990 case 'e': // 1 string to match.
1991 if (memcmp(Name.data()+1, "xclusive_lock_function", 22) != 0)
1992 break;
1993 return AttributeCommonInfo::AT_AcquireCapability; // "exclusive_lock_function"
1994 case 'f': // 1 string to match.
1995 if (memcmp(Name.data()+1, "orce_align_arg_pointer", 22) != 0)
1996 break;
1997 return AttributeCommonInfo::AT_X86ForceAlignArgPointer; // "force_align_arg_pointer"
1998 case 'n': // 2 strings to match.
1999 if (memcmp(Name.data()+1, "s_returns_", 10) != 0)
2000 break;
2001 switch (Name[11]) {
2002 default: break;
2003 case 'a': // 1 string to match.
2004 if (memcmp(Name.data()+12, "utoreleased", 11) != 0)
2005 break;
2006 return AttributeCommonInfo::AT_NSReturnsAutoreleased; // "ns_returns_autoreleased"
2007 case 'n': // 1 string to match.
2008 if (memcmp(Name.data()+12, "ot_retained", 11) != 0)
2009 break;
2010 return AttributeCommonInfo::AT_NSReturnsNotRetained; // "ns_returns_not_retained"
2011 }
2012 break;
2013 case 'o': // 1 string to match.
2014 if (memcmp(Name.data()+1, "s_returns_not_retained", 22) != 0)
2015 break;
2016 return AttributeCommonInfo::AT_OSReturnsNotRetained; // "os_returns_not_retained"
2017 case 's': // 2 strings to match.
2018 switch (Name[1]) {
2019 default: break;
2020 case 'h': // 1 string to match.
2021 if (memcmp(Name.data()+2, "ared_trylock_function", 21) != 0)
2022 break;
2023 return AttributeCommonInfo::AT_SharedTrylockFunction; // "shared_trylock_function"
2024 case 'y': // 1 string to match.
2025 if (memcmp(Name.data()+2, "cl_kernel_entry_point", 21) != 0)
2026 break;
2027 return AttributeCommonInfo::AT_SYCLKernelEntryPoint; // "sycl_kernel_entry_point"
2028 }
2029 break;
2030 }
2031 break;
2032 case 24: // 6 strings to match.
2033 switch (Name[0]) {
2034 default: break;
2035 case 'a': // 1 string to match.
2036 if (memcmp(Name.data()+1, "ssert_shared_capability", 23) != 0)
2037 break;
2038 return AttributeCommonInfo::AT_AssertCapability; // "assert_shared_capability"
2039 case 'c': // 1 string to match.
2040 if (memcmp(Name.data()+1, "fi_canonical_jump_table", 23) != 0)
2041 break;
2042 return AttributeCommonInfo::AT_CFICanonicalJumpTable; // "cfi_canonical_jump_table"
2043 case 'e': // 1 string to match.
2044 if (memcmp(Name.data()+1, "xclusive_locks_required", 23) != 0)
2045 break;
2046 return AttributeCommonInfo::AT_RequiresCapability; // "exclusive_locks_required"
2047 case 'o': // 1 string to match.
2048 if (memcmp(Name.data()+1, "bjc_externally_retained", 23) != 0)
2049 break;
2050 return AttributeCommonInfo::AT_ObjCExternallyRetained; // "objc_externally_retained"
2051 case 'p': // 2 strings to match.
2052 if (Name[1] != 'a')
2053 break;
2054 switch (Name[2]) {
2055 default: break;
2056 case 's': // 1 string to match.
2057 if (memcmp(Name.data()+3, "s_dynamic_object_size", 21) != 0)
2058 break;
2059 return AttributeCommonInfo::AT_PassObjectSize; // "pass_dynamic_object_size"
2060 case 't': // 1 string to match.
2061 if (memcmp(Name.data()+3, "chable_function_entry", 21) != 0)
2062 break;
2063 return AttributeCommonInfo::AT_PatchableFunctionEntry; // "patchable_function_entry"
2064 }
2065 break;
2066 }
2067 break;
2068 case 25: // 7 strings to match.
2069 switch (Name[0]) {
2070 default: break;
2071 case '_': // 1 string to match.
2072 if (memcmp(Name.data()+1, "_clang_arm_builtin_alias", 24) != 0)
2073 break;
2074 return AttributeCommonInfo::AT_ArmBuiltinAlias; // "__clang_arm_builtin_alias"
2075 case 'a': // 1 string to match.
2076 if (memcmp(Name.data()+1, "cquire_shared_capability", 24) != 0)
2077 break;
2078 return AttributeCommonInfo::AT_AcquireCapability; // "acquire_shared_capability"
2079 case 'i': // 1 string to match.
2080 if (memcmp(Name.data()+1, "ntel_reqd_sub_group_size", 24) != 0)
2081 break;
2082 return AttributeCommonInfo::AT_OpenCLIntelReqdSubGroupSize; // "intel_reqd_sub_group_size"
2083 case 'n': // 2 strings to match.
2084 if (memcmp(Name.data()+1, "o_", 2) != 0)
2085 break;
2086 switch (Name[3]) {
2087 default: break;
2088 case 'c': // 1 string to match.
2089 if (memcmp(Name.data()+4, "aller_saved_registers", 21) != 0)
2090 break;
2091 return AttributeCommonInfo::AT_AnyX86NoCallerSavedRegisters; // "no_caller_saved_registers"
2092 case 't': // 1 string to match.
2093 if (memcmp(Name.data()+4, "hread_safety_analysis", 21) != 0)
2094 break;
2095 return AttributeCommonInfo::AT_NoThreadSafetyAnalysis; // "no_thread_safety_analysis"
2096 }
2097 break;
2098 case 'o': // 1 string to match.
2099 if (memcmp(Name.data()+1, "bjc_non_runtime_protocol", 24) != 0)
2100 break;
2101 return AttributeCommonInfo::AT_ObjCNonRuntimeProtocol; // "objc_non_runtime_protocol"
2102 case 'r': // 1 string to match.
2103 if (memcmp(Name.data()+1, "elease_shared_capability", 24) != 0)
2104 break;
2105 return AttributeCommonInfo::AT_ReleaseCapability; // "release_shared_capability"
2106 }
2107 break;
2108 case 26: // 9 strings to match.
2109 switch (Name[0]) {
2110 default: break;
2111 case 'a': // 1 string to match.
2112 if (memcmp(Name.data()+1, "mdgpu_max_num_work_groups", 25) != 0)
2113 break;
2114 return AttributeCommonInfo::AT_AMDGPUMaxNumWorkGroups; // "amdgpu_max_num_work_groups"
2115 case 'c': // 2 strings to match.
2116 if (Name[1] != 'o')
2117 break;
2118 switch (Name[2]) {
2119 default: break;
2120 case 'n': // 1 string to match.
2121 if (memcmp(Name.data()+3, "sumable_auto_cast_state", 23) != 0)
2122 break;
2123 return AttributeCommonInfo::AT_ConsumableAutoCast; // "consumable_auto_cast_state"
2124 case 'r': // 1 string to match.
2125 if (memcmp(Name.data()+3, "o_disable_lifetimebound", 23) != 0)
2126 break;
2127 return AttributeCommonInfo::AT_CoroDisableLifetimeBound; // "coro_disable_lifetimebound"
2128 }
2129 break;
2130 case 'e': // 1 string to match.
2131 if (memcmp(Name.data()+1, "xclusive_trylock_function", 25) != 0)
2132 break;
2133 return AttributeCommonInfo::AT_ExclusiveTrylockFunction; // "exclusive_trylock_function"
2134 case 'n': // 1 string to match.
2135 if (memcmp(Name.data()+1, "o_address_safety_analysis", 25) != 0)
2136 break;
2137 return AttributeCommonInfo::AT_NoSanitizeSpecific; // "no_address_safety_analysis"
2138 case 'o': // 1 string to match.
2139 if (memcmp(Name.data()+1, "bjc_returns_inner_pointer", 25) != 0)
2140 break;
2141 return AttributeCommonInfo::AT_ObjCReturnsInnerPointer; // "objc_returns_inner_pointer"
2142 case 'r': // 2 strings to match.
2143 if (Name[1] != 'e')
2144 break;
2145 switch (Name[2]) {
2146 default: break;
2147 case 'l': // 1 string to match.
2148 if (memcmp(Name.data()+3, "ease_generic_capability", 23) != 0)
2149 break;
2150 return AttributeCommonInfo::AT_ReleaseCapability; // "release_generic_capability"
2151 case 'q': // 1 string to match.
2152 if (memcmp(Name.data()+3, "uires_shared_capability", 23) != 0)
2153 break;
2154 return AttributeCommonInfo::AT_RequiresCapability; // "requires_shared_capability"
2155 }
2156 break;
2157 case 's': // 1 string to match.
2158 if (memcmp(Name.data()+1, "peculative_load_hardening", 25) != 0)
2159 break;
2160 return AttributeCommonInfo::AT_SpeculativeLoadHardening; // "speculative_load_hardening"
2161 }
2162 break;
2163 case 27: // 7 strings to match.
2164 switch (Name[0]) {
2165 default: break;
2166 case 'a': // 1 string to match.
2167 if (memcmp(Name.data()+1, "mdgpu_flat_work_group_size", 26) != 0)
2168 break;
2169 return AttributeCommonInfo::AT_AMDGPUFlatWorkGroupSize; // "amdgpu_flat_work_group_size"
2170 case 'd': // 2 strings to match.
2171 if (memcmp(Name.data()+1, "evice_builtin_", 14) != 0)
2172 break;
2173 switch (Name[15]) {
2174 default: break;
2175 case 's': // 1 string to match.
2176 if (memcmp(Name.data()+16, "urface_type", 11) != 0)
2177 break;
2178 return AttributeCommonInfo::AT_CUDADeviceBuiltinSurfaceType; // "device_builtin_surface_type"
2179 case 't': // 1 string to match.
2180 if (memcmp(Name.data()+16, "exture_type", 11) != 0)
2181 break;
2182 return AttributeCommonInfo::AT_CUDADeviceBuiltinTextureType; // "device_builtin_texture_type"
2183 }
2184 break;
2185 case 'e': // 1 string to match.
2186 if (memcmp(Name.data()+1, "nforce_read_only_placement", 26) != 0)
2187 break;
2188 return AttributeCommonInfo::AT_ReadOnlyPlacement; // "enforce_read_only_placement"
2189 case 'o': // 3 strings to match.
2190 switch (Name[1]) {
2191 default: break;
2192 case 'b': // 2 strings to match.
2193 if (memcmp(Name.data()+2, "jc_", 3) != 0)
2194 break;
2195 switch (Name[5]) {
2196 default: break;
2197 case 'd': // 1 string to match.
2198 if (memcmp(Name.data()+6, "esignated_initializer", 21) != 0)
2199 break;
2200 return AttributeCommonInfo::AT_ObjCDesignatedInitializer; // "objc_designated_initializer"
2201 case 's': // 1 string to match.
2202 if (memcmp(Name.data()+6, "ubclassing_restricted", 21) != 0)
2203 break;
2204 return AttributeCommonInfo::AT_ObjCSubclassingRestricted; // "objc_subclassing_restricted"
2205 }
2206 break;
2207 case 's': // 1 string to match.
2208 if (memcmp(Name.data()+2, "_returns_retained_on_zero", 25) != 0)
2209 break;
2210 return AttributeCommonInfo::AT_OSReturnsRetainedOnZero; // "os_returns_retained_on_zero"
2211 }
2212 break;
2213 }
2214 break;
2215 case 28: // 2 strings to match.
2216 if (memcmp(Name.data()+0, "co", 2) != 0)
2217 break;
2218 switch (Name[2]) {
2219 default: break;
2220 case 'n': // 1 string to match.
2221 if (memcmp(Name.data()+3, "sumable_set_state_on_read", 25) != 0)
2222 break;
2223 return AttributeCommonInfo::AT_ConsumableSetOnRead; // "consumable_set_state_on_read"
2224 case 'r': // 1 string to match.
2225 if (memcmp(Name.data()+3, "o_await_elidable_argument", 25) != 0)
2226 break;
2227 return AttributeCommonInfo::AT_CoroAwaitElidableArgument; // "coro_await_elidable_argument"
2228 }
2229 break;
2230 case 29: // 2 strings to match.
2231 switch (Name[0]) {
2232 default: break;
2233 case 'n': // 1 string to match.
2234 if (memcmp(Name.data()+1, "o_speculative_load_hardening", 28) != 0)
2235 break;
2236 return AttributeCommonInfo::AT_NoSpeculativeLoadHardening; // "no_speculative_load_hardening"
2237 case 't': // 1 string to match.
2238 if (memcmp(Name.data()+1, "ry_acquire_shared_capability", 28) != 0)
2239 break;
2240 return AttributeCommonInfo::AT_TryAcquireCapability; // "try_acquire_shared_capability"
2241 }
2242 break;
2243 case 30: // 1 string to match.
2244 if (memcmp(Name.data()+0, "no_profile_instrument_function", 30) != 0)
2245 break;
2246 return AttributeCommonInfo::AT_NoProfileFunction; // "no_profile_instrument_function"
2247 case 31: // 4 strings to match.
2248 switch (Name[0]) {
2249 default: break;
2250 case 'c': // 1 string to match.
2251 if (memcmp(Name.data()+1, "oro_only_destroy_when_complete", 30) != 0)
2252 break;
2253 return AttributeCommonInfo::AT_CoroOnlyDestroyWhenComplete; // "coro_only_destroy_when_complete"
2254 case 'o': // 1 string to match.
2255 if (memcmp(Name.data()+1, "s_returns_retained_on_non_zero", 30) != 0)
2256 break;
2257 return AttributeCommonInfo::AT_OSReturnsRetainedOnNonZero; // "os_returns_retained_on_non_zero"
2258 case 'r': // 2 strings to match.
2259 if (memcmp(Name.data()+1, "equire_", 7) != 0)
2260 break;
2261 switch (Name[8]) {
2262 default: break;
2263 case 'c': // 1 string to match.
2264 if (memcmp(Name.data()+9, "onstant_initialization", 22) != 0)
2265 break;
2266 return AttributeCommonInfo::AT_ConstInit; // "require_constant_initialization"
2267 case 'e': // 1 string to match.
2268 if (memcmp(Name.data()+9, "xplicit_initialization", 22) != 0)
2269 break;
2270 return AttributeCommonInfo::AT_ExplicitInit; // "require_explicit_initialization"
2271 }
2272 break;
2273 }
2274 break;
2275 case 33: // 1 string to match.
2276 if (memcmp(Name.data()+0, "disable_sanitizer_instrumentation", 33) != 0)
2277 break;
2278 return AttributeCommonInfo::AT_DisableSanitizerInstrumentation; // "disable_sanitizer_instrumentation"
2279 case 34: // 1 string to match.
2280 if (memcmp(Name.data()+0, "objc_requires_property_definitions", 34) != 0)
2281 break;
2282 return AttributeCommonInfo::AT_ObjCRequiresPropertyDefs; // "objc_requires_property_definitions"
2283 case 35: // 3 strings to match.
2284 switch (Name[0]) {
2285 default: break;
2286 case '_': // 1 string to match.
2287 if (memcmp(Name.data()+1, "_clang_arm_mve_strict_polymorphism", 34) != 0)
2288 break;
2289 return AttributeCommonInfo::AT_ArmMveStrictPolymorphism; // "__clang_arm_mve_strict_polymorphism"
2290 case 'e': // 1 string to match.
2291 if (memcmp(Name.data()+1, "xclude_from_explicit_instantiation", 34) != 0)
2292 break;
2293 return AttributeCommonInfo::AT_ExcludeFromExplicitInstantiation; // "exclude_from_explicit_instantiation"
2294 case 'o': // 1 string to match.
2295 if (memcmp(Name.data()+1, "bjc_arc_weak_reference_unavailable", 34) != 0)
2296 break;
2297 return AttributeCommonInfo::AT_ArcWeakrefUnavailable; // "objc_arc_weak_reference_unavailable"
2298 }
2299 break;
2300 case 37: // 1 string to match.
2301 if (memcmp(Name.data()+0, "available_only_in_default_eval_method", 37) != 0)
2302 break;
2303 return AttributeCommonInfo::AT_AvailableOnlyInDefaultEvalMethod; // "available_only_in_default_eval_method"
2304 case 46: // 1 string to match.
2305 if (memcmp(Name.data()+0, "objc_protocol_requires_explicit_implementation", 46) != 0)
2306 break;
2307 return AttributeCommonInfo::AT_ObjCExplicitProtocolImpl; // "objc_protocol_requires_explicit_implementation"
2308 }
2309 } else if (AttributeCommonInfo::AS_Declspec == Syntax) {
2310 switch (Name.size()) {
2311 default: break;
2312 case 4: // 1 string to match.
2313 if (memcmp(Name.data()+0, "uuid", 4) != 0)
2314 break;
2315 return AttributeCommonInfo::AT_Uuid; // "uuid"
2316 case 5: // 3 strings to match.
2317 switch (Name[0]) {
2318 default: break;
2319 case 'a': // 1 string to match.
2320 if (memcmp(Name.data()+1, "lign", 4) != 0)
2321 break;
2322 return AttributeCommonInfo::AT_Aligned; // "align"
2323 case 'g': // 1 string to match.
2324 if (memcmp(Name.data()+1, "uard", 4) != 0)
2325 break;
2326 return AttributeCommonInfo::AT_CFGuard; // "guard"
2327 case 'n': // 1 string to match.
2328 if (memcmp(Name.data()+1, "aked", 4) != 0)
2329 break;
2330 return AttributeCommonInfo::AT_Naked; // "naked"
2331 }
2332 break;
2333 case 6: // 1 string to match.
2334 if (memcmp(Name.data()+0, "thread", 6) != 0)
2335 break;
2336 return AttributeCommonInfo::AT_Thread; // "thread"
2337 case 7: // 2 strings to match.
2338 if (memcmp(Name.data()+0, "no", 2) != 0)
2339 break;
2340 switch (Name[2]) {
2341 default: break;
2342 case 'a': // 1 string to match.
2343 if (memcmp(Name.data()+3, "lias", 4) != 0)
2344 break;
2345 return AttributeCommonInfo::AT_NoAlias; // "noalias"
2346 case 't': // 1 string to match.
2347 if (memcmp(Name.data()+3, "hrow", 4) != 0)
2348 break;
2349 return AttributeCommonInfo::AT_NoThrow; // "nothrow"
2350 }
2351 break;
2352 case 8: // 8 strings to match.
2353 switch (Name[0]) {
2354 default: break;
2355 case '_': // 1 string to match.
2356 if (memcmp(Name.data()+1, "_host__", 7) != 0)
2357 break;
2358 return AttributeCommonInfo::AT_CUDAHost; // "__host__"
2359 case 'a': // 1 string to match.
2360 if (memcmp(Name.data()+1, "llocate", 7) != 0)
2361 break;
2362 return AttributeCommonInfo::AT_Section; // "allocate"
2363 case 'c': // 1 string to match.
2364 if (memcmp(Name.data()+1, "ode_seg", 7) != 0)
2365 break;
2366 return AttributeCommonInfo::AT_CodeSeg; // "code_seg"
2367 case 'n': // 3 strings to match.
2368 if (Name[1] != 'o')
2369 break;
2370 switch (Name[2]) {
2371 default: break;
2372 case 'i': // 1 string to match.
2373 if (memcmp(Name.data()+3, "nline", 5) != 0)
2374 break;
2375 return AttributeCommonInfo::AT_NoInline; // "noinline"
2376 case 'r': // 1 string to match.
2377 if (memcmp(Name.data()+3, "eturn", 5) != 0)
2378 break;
2379 return AttributeCommonInfo::AT_NoReturn; // "noreturn"
2380 case 'v': // 1 string to match.
2381 if (memcmp(Name.data()+3, "table", 5) != 0)
2382 break;
2383 return AttributeCommonInfo::AT_MSNoVTable; // "novtable"
2384 }
2385 break;
2386 case 'p': // 1 string to match.
2387 if (memcmp(Name.data()+1, "roperty", 7) != 0)
2388 break;
2389 return AttributeCommonInfo::IgnoredAttribute; // "property"
2390 case 'r': // 1 string to match.
2391 if (memcmp(Name.data()+1, "estrict", 7) != 0)
2392 break;
2393 return AttributeCommonInfo::AT_Restrict; // "restrict"
2394 }
2395 break;
2396 case 9: // 4 strings to match.
2397 switch (Name[0]) {
2398 default: break;
2399 case 'a': // 1 string to match.
2400 if (memcmp(Name.data()+1, "llocator", 8) != 0)
2401 break;
2402 return AttributeCommonInfo::AT_MSAllocator; // "allocator"
2403 case 'd': // 2 strings to match.
2404 if (memcmp(Name.data()+1, "ll", 2) != 0)
2405 break;
2406 switch (Name[3]) {
2407 default: break;
2408 case 'e': // 1 string to match.
2409 if (memcmp(Name.data()+4, "xport", 5) != 0)
2410 break;
2411 return AttributeCommonInfo::AT_DLLExport; // "dllexport"
2412 case 'i': // 1 string to match.
2413 if (memcmp(Name.data()+4, "mport", 5) != 0)
2414 break;
2415 return AttributeCommonInfo::AT_DLLImport; // "dllimport"
2416 }
2417 break;
2418 case 's': // 1 string to match.
2419 if (memcmp(Name.data()+1, "electany", 8) != 0)
2420 break;
2421 return AttributeCommonInfo::AT_SelectAny; // "selectany"
2422 }
2423 break;
2424 case 10: // 4 strings to match.
2425 switch (Name[0]) {
2426 default: break;
2427 case '_': // 3 strings to match.
2428 if (Name[1] != '_')
2429 break;
2430 switch (Name[2]) {
2431 default: break;
2432 case 'd': // 1 string to match.
2433 if (memcmp(Name.data()+3, "evice__", 7) != 0)
2434 break;
2435 return AttributeCommonInfo::AT_CUDADevice; // "__device__"
2436 case 'g': // 1 string to match.
2437 if (memcmp(Name.data()+3, "lobal__", 7) != 0)
2438 break;
2439 return AttributeCommonInfo::AT_CUDAGlobal; // "__global__"
2440 case 's': // 1 string to match.
2441 if (memcmp(Name.data()+3, "hared__", 7) != 0)
2442 break;
2443 return AttributeCommonInfo::AT_CUDAShared; // "__shared__"
2444 }
2445 break;
2446 case 'd': // 1 string to match.
2447 if (memcmp(Name.data()+1, "eprecated", 9) != 0)
2448 break;
2449 return AttributeCommonInfo::AT_Deprecated; // "deprecated"
2450 }
2451 break;
2452 case 11: // 4 strings to match.
2453 switch (Name[0]) {
2454 default: break;
2455 case '_': // 1 string to match.
2456 if (memcmp(Name.data()+1, "_managed__", 10) != 0)
2457 break;
2458 return AttributeCommonInfo::AT_HIPManaged; // "__managed__"
2459 case 'e': // 1 string to match.
2460 if (memcmp(Name.data()+1, "mpty_bases", 10) != 0)
2461 break;
2462 return AttributeCommonInfo::AT_EmptyBases; // "empty_bases"
2463 case 'n': // 1 string to match.
2464 if (memcmp(Name.data()+1, "o_init_all", 10) != 0)
2465 break;
2466 return AttributeCommonInfo::AT_NoTrivialAutoVarInit; // "no_init_all"
2467 case 's': // 1 string to match.
2468 if (memcmp(Name.data()+1, "afebuffers", 10) != 0)
2469 break;
2470 return AttributeCommonInfo::AT_NoStackProtector; // "safebuffers"
2471 }
2472 break;
2473 case 12: // 4 strings to match.
2474 switch (Name[0]) {
2475 default: break;
2476 case '_': // 1 string to match.
2477 if (memcmp(Name.data()+1, "_constant__", 11) != 0)
2478 break;
2479 return AttributeCommonInfo::AT_CUDAConstant; // "__constant__"
2480 case 'c': // 2 strings to match.
2481 if (memcmp(Name.data()+1, "pu_", 3) != 0)
2482 break;
2483 switch (Name[4]) {
2484 default: break;
2485 case 'd': // 1 string to match.
2486 if (memcmp(Name.data()+5, "ispatch", 7) != 0)
2487 break;
2488 return AttributeCommonInfo::AT_CPUDispatch; // "cpu_dispatch"
2489 case 's': // 1 string to match.
2490 if (memcmp(Name.data()+5, "pecific", 7) != 0)
2491 break;
2492 return AttributeCommonInfo::AT_CPUSpecific; // "cpu_specific"
2493 }
2494 break;
2495 case 'n': // 1 string to match.
2496 if (memcmp(Name.data()+1, "oconvergent", 11) != 0)
2497 break;
2498 return AttributeCommonInfo::AT_NoConvergent; // "noconvergent"
2499 }
2500 break;
2501 case 14: // 1 string to match.
2502 if (memcmp(Name.data()+0, "layout_version", 14) != 0)
2503 break;
2504 return AttributeCommonInfo::AT_LayoutVersion; // "layout_version"
2505 case 15: // 1 string to match.
2506 if (memcmp(Name.data()+0, "strict_gs_check", 15) != 0)
2507 break;
2508 return AttributeCommonInfo::AT_StrictGuardStackCheck; // "strict_gs_check"
2509 case 16: // 1 string to match.
2510 if (memcmp(Name.data()+0, "hybrid_patchable", 16) != 0)
2511 break;
2512 return AttributeCommonInfo::AT_HybridPatchable; // "hybrid_patchable"
2513 case 17: // 2 strings to match.
2514 if (memcmp(Name.data()+0, "__", 2) != 0)
2515 break;
2516 switch (Name[2]) {
2517 default: break;
2518 case 'g': // 1 string to match.
2519 if (memcmp(Name.data()+3, "rid_constant__", 14) != 0)
2520 break;
2521 return AttributeCommonInfo::AT_CUDAGridConstant; // "__grid_constant__"
2522 case 'l': // 1 string to match.
2523 if (memcmp(Name.data()+3, "aunch_bounds__", 14) != 0)
2524 break;
2525 return AttributeCommonInfo::AT_CUDALaunchBounds; // "__launch_bounds__"
2526 }
2527 break;
2528 case 18: // 2 strings to match.
2529 if (memcmp(Name.data()+0, "__", 2) != 0)
2530 break;
2531 switch (Name[2]) {
2532 default: break;
2533 case 'c': // 1 string to match.
2534 if (memcmp(Name.data()+3, "udart_builtin__", 15) != 0)
2535 break;
2536 return AttributeCommonInfo::IgnoredAttribute; // "__cudart_builtin__"
2537 case 'd': // 1 string to match.
2538 if (memcmp(Name.data()+3, "evice_builtin__", 15) != 0)
2539 break;
2540 return AttributeCommonInfo::IgnoredAttribute; // "__device_builtin__"
2541 }
2542 break;
2543 case 31: // 2 strings to match.
2544 if (memcmp(Name.data()+0, "__device_builtin_", 17) != 0)
2545 break;
2546 switch (Name[17]) {
2547 default: break;
2548 case 's': // 1 string to match.
2549 if (memcmp(Name.data()+18, "urface_type__", 13) != 0)
2550 break;
2551 return AttributeCommonInfo::AT_CUDADeviceBuiltinSurfaceType; // "__device_builtin_surface_type__"
2552 case 't': // 1 string to match.
2553 if (memcmp(Name.data()+18, "exture_type__", 13) != 0)
2554 break;
2555 return AttributeCommonInfo::AT_CUDADeviceBuiltinTextureType; // "__device_builtin_texture_type__"
2556 }
2557 break;
2558 }
2559 } else if (AttributeCommonInfo::AS_Microsoft == Syntax) {
2560 switch (Name.size()) {
2561 default: break;
2562 case 4: // 2 strings to match.
2563 switch (Name[0]) {
2564 default: break;
2565 case 'l': // 1 string to match.
2566 if (memcmp(Name.data()+1, "oop", 3) != 0)
2567 break;
2568 return AttributeCommonInfo::AT_HLSLLoopHint; // "loop"
2569 case 'u': // 1 string to match.
2570 if (memcmp(Name.data()+1, "uid", 3) != 0)
2571 break;
2572 return AttributeCommonInfo::AT_Uuid; // "uuid"
2573 }
2574 break;
2575 case 6: // 3 strings to match.
2576 switch (Name[0]) {
2577 default: break;
2578 case 'b': // 1 string to match.
2579 if (memcmp(Name.data()+1, "ranch", 5) != 0)
2580 break;
2581 return AttributeCommonInfo::AT_HLSLControlFlowHint; // "branch"
2582 case 's': // 1 string to match.
2583 if (memcmp(Name.data()+1, "hader", 5) != 0)
2584 break;
2585 return AttributeCommonInfo::AT_HLSLShader; // "shader"
2586 case 'u': // 1 string to match.
2587 if (memcmp(Name.data()+1, "nroll", 5) != 0)
2588 break;
2589 return AttributeCommonInfo::AT_HLSLLoopHint; // "unroll"
2590 }
2591 break;
2592 case 7: // 1 string to match.
2593 if (memcmp(Name.data()+0, "flatten", 7) != 0)
2594 break;
2595 return AttributeCommonInfo::AT_HLSLControlFlowHint; // "flatten"
2596 case 8: // 1 string to match.
2597 if (memcmp(Name.data()+0, "WaveSize", 8) != 0)
2598 break;
2599 return AttributeCommonInfo::AT_HLSLWaveSize; // "WaveSize"
2600 case 10: // 1 string to match.
2601 if (memcmp(Name.data()+0, "numthreads", 10) != 0)
2602 break;
2603 return AttributeCommonInfo::AT_HLSLNumThreads; // "numthreads"
2604 }
2605 } else if (AttributeCommonInfo::AS_CXX11 == Syntax) {
2606 switch (Name.size()) {
2607 default: break;
2608 case 6: // 2 strings to match.
2609 switch (Name[0]) {
2610 default: break;
2611 case 'a': // 1 string to match.
2612 if (memcmp(Name.data()+1, "ssume", 5) != 0)
2613 break;
2614 return AttributeCommonInfo::AT_CXXAssume; // "assume"
2615 case 'l': // 1 string to match.
2616 if (memcmp(Name.data()+1, "ikely", 5) != 0)
2617 break;
2618 return AttributeCommonInfo::AT_Likely; // "likely"
2619 }
2620 break;
2621 case 8: // 5 strings to match.
2622 switch (Name[0]) {
2623 default: break;
2624 case 'g': // 3 strings to match.
2625 if (memcmp(Name.data()+1, "nu::", 4) != 0)
2626 break;
2627 switch (Name[5]) {
2628 default: break;
2629 case 'f': // 1 string to match.
2630 if (memcmp(Name.data()+6, "ar", 2) != 0)
2631 break;
2632 return AttributeCommonInfo::AT_MipsLongCall; // "gnu::far"
2633 case 'h': // 1 string to match.
2634 if (memcmp(Name.data()+6, "ot", 2) != 0)
2635 break;
2636 return AttributeCommonInfo::AT_Hot; // "gnu::hot"
2637 case 'p': // 1 string to match.
2638 if (memcmp(Name.data()+6, "cs", 2) != 0)
2639 break;
2640 return AttributeCommonInfo::AT_Pcs; // "gnu::pcs"
2641 }
2642 break;
2643 case 'n': // 1 string to match.
2644 if (memcmp(Name.data()+1, "oreturn", 7) != 0)
2645 break;
2646 return AttributeCommonInfo::AT_CXX11NoReturn; // "noreturn"
2647 case 'u': // 1 string to match.
2648 if (memcmp(Name.data()+1, "nlikely", 7) != 0)
2649 break;
2650 return AttributeCommonInfo::AT_Unlikely; // "unlikely"
2651 }
2652 break;
2653 case 9: // 8 strings to match.
2654 switch (Name[0]) {
2655 default: break;
2656 case 'g': // 7 strings to match.
2657 if (memcmp(Name.data()+1, "nu::", 4) != 0)
2658 break;
2659 switch (Name[5]) {
2660 default: break;
2661 case 'c': // 1 string to match.
2662 if (memcmp(Name.data()+6, "old", 3) != 0)
2663 break;
2664 return AttributeCommonInfo::AT_Cold; // "gnu::cold"
2665 case 'l': // 1 string to match.
2666 if (memcmp(Name.data()+6, "eaf", 3) != 0)
2667 break;
2668 return AttributeCommonInfo::AT_Leaf; // "gnu::leaf"
2669 case 'm': // 1 string to match.
2670 if (memcmp(Name.data()+6, "ode", 3) != 0)
2671 break;
2672 return AttributeCommonInfo::AT_Mode; // "gnu::mode"
2673 case 'n': // 1 string to match.
2674 if (memcmp(Name.data()+6, "ear", 3) != 0)
2675 break;
2676 return AttributeCommonInfo::AT_MipsShortCall; // "gnu::near"
2677 case 'p': // 1 string to match.
2678 if (memcmp(Name.data()+6, "ure", 3) != 0)
2679 break;
2680 return AttributeCommonInfo::AT_Pure; // "gnu::pure"
2681 case 'u': // 1 string to match.
2682 if (memcmp(Name.data()+6, "sed", 3) != 0)
2683 break;
2684 return AttributeCommonInfo::AT_Used; // "gnu::used"
2685 case 'w': // 1 string to match.
2686 if (memcmp(Name.data()+6, "eak", 3) != 0)
2687 break;
2688 return AttributeCommonInfo::AT_Weak; // "gnu::weak"
2689 }
2690 break;
2691 case 'n': // 1 string to match.
2692 if (memcmp(Name.data()+1, "odiscard", 8) != 0)
2693 break;
2694 return AttributeCommonInfo::AT_WarnUnusedResult; // "nodiscard"
2695 }
2696 break;
2697 case 10: // 9 strings to match.
2698 switch (Name[0]) {
2699 default: break;
2700 case 'd': // 1 string to match.
2701 if (memcmp(Name.data()+1, "eprecated", 9) != 0)
2702 break;
2703 return AttributeCommonInfo::AT_Deprecated; // "deprecated"
2704 case 'g': // 8 strings to match.
2705 switch (Name[1]) {
2706 default: break;
2707 case 'n': // 7 strings to match.
2708 if (memcmp(Name.data()+2, "u::", 3) != 0)
2709 break;
2710 switch (Name[5]) {
2711 default: break;
2712 case 'a': // 1 string to match.
2713 if (memcmp(Name.data()+6, "lias", 4) != 0)
2714 break;
2715 return AttributeCommonInfo::AT_Alias; // "gnu::alias"
2716 case 'c': // 2 strings to match.
2717 switch (Name[6]) {
2718 default: break;
2719 case 'd': // 1 string to match.
2720 if (memcmp(Name.data()+7, "ecl", 3) != 0)
2721 break;
2722 return AttributeCommonInfo::AT_CDecl; // "gnu::cdecl"
2723 case 'o': // 1 string to match.
2724 if (memcmp(Name.data()+7, "nst", 3) != 0)
2725 break;
2726 return AttributeCommonInfo::AT_Const; // "gnu::const"
2727 }
2728 break;
2729 case 'e': // 1 string to match.
2730 if (memcmp(Name.data()+6, "rror", 4) != 0)
2731 break;
2732 return AttributeCommonInfo::AT_Error; // "gnu::error"
2733 case 'i': // 1 string to match.
2734 if (memcmp(Name.data()+6, "func", 4) != 0)
2735 break;
2736 return AttributeCommonInfo::AT_IFunc; // "gnu::ifunc"
2737 case 'm': // 1 string to match.
2738 if (memcmp(Name.data()+6, "odel", 4) != 0)
2739 break;
2740 return AttributeCommonInfo::AT_CodeModel; // "gnu::model"
2741 case 'n': // 1 string to match.
2742 if (memcmp(Name.data()+6, "aked", 4) != 0)
2743 break;
2744 return AttributeCommonInfo::AT_Naked; // "gnu::naked"
2745 }
2746 break;
2747 case 's': // 1 string to match.
2748 if (memcmp(Name.data()+2, "l::Owner", 8) != 0)
2749 break;
2750 return AttributeCommonInfo::AT_Owner; // "gsl::Owner"
2751 }
2752 break;
2753 }
2754 break;
2755 case 11: // 12 strings to match.
2756 switch (Name[0]) {
2757 default: break;
2758 case 'f': // 1 string to match.
2759 if (memcmp(Name.data()+1, "allthrough", 10) != 0)
2760 break;
2761 return AttributeCommonInfo::AT_FallThrough; // "fallthrough"
2762 case 'g': // 10 strings to match.
2763 if (memcmp(Name.data()+1, "nu::", 4) != 0)
2764 break;
2765 switch (Name[5]) {
2766 default: break;
2767 case 'c': // 1 string to match.
2768 if (memcmp(Name.data()+6, "ommon", 5) != 0)
2769 break;
2770 return AttributeCommonInfo::AT_Common; // "gnu::common"
2771 case 'f': // 1 string to match.
2772 if (memcmp(Name.data()+6, "ormat", 5) != 0)
2773 break;
2774 return AttributeCommonInfo::AT_Format; // "gnu::format"
2775 case 'm': // 3 strings to match.
2776 switch (Name[6]) {
2777 default: break;
2778 case 'a': // 1 string to match.
2779 if (memcmp(Name.data()+7, "lloc", 4) != 0)
2780 break;
2781 return AttributeCommonInfo::AT_Restrict; // "gnu::malloc"
2782 case 'i': // 1 string to match.
2783 if (memcmp(Name.data()+7, "ps16", 4) != 0)
2784 break;
2785 return AttributeCommonInfo::AT_Mips16; // "gnu::mips16"
2786 case 's': // 1 string to match.
2787 if (memcmp(Name.data()+7, "_abi", 4) != 0)
2788 break;
2789 return AttributeCommonInfo::AT_MSABI; // "gnu::ms_abi"
2790 }
2791 break;
2792 case 'p': // 1 string to match.
2793 if (memcmp(Name.data()+6, "acked", 5) != 0)
2794 break;
2795 return AttributeCommonInfo::AT_Packed; // "gnu::packed"
2796 case 'r': // 1 string to match.
2797 if (memcmp(Name.data()+6, "etain", 5) != 0)
2798 break;
2799 return AttributeCommonInfo::AT_Retain; // "gnu::retain"
2800 case 's': // 1 string to match.
2801 if (memcmp(Name.data()+6, "ignal", 5) != 0)
2802 break;
2803 return AttributeCommonInfo::AT_AVRSignal; // "gnu::signal"
2804 case 't': // 1 string to match.
2805 if (memcmp(Name.data()+6, "arget", 5) != 0)
2806 break;
2807 return AttributeCommonInfo::AT_Target; // "gnu::target"
2808 case 'u': // 1 string to match.
2809 if (memcmp(Name.data()+6, "nused", 5) != 0)
2810 break;
2811 return AttributeCommonInfo::AT_Unused; // "gnu::unused"
2812 }
2813 break;
2814 case 'o': // 1 string to match.
2815 if (memcmp(Name.data()+1, "mp::assume", 10) != 0)
2816 break;
2817 return AttributeCommonInfo::AT_OMPAssume; // "omp::assume"
2818 }
2819 break;
2820 case 12: // 18 strings to match.
2821 switch (Name[0]) {
2822 default: break;
2823 case 'c': // 1 string to match.
2824 if (memcmp(Name.data()+1, "lang::guard", 11) != 0)
2825 break;
2826 return AttributeCommonInfo::AT_CFGuard; // "clang::guard"
2827 case 'g': // 15 strings to match.
2828 switch (Name[1]) {
2829 default: break;
2830 case 'n': // 14 strings to match.
2831 if (memcmp(Name.data()+2, "u::", 3) != 0)
2832 break;
2833 switch (Name[5]) {
2834 default: break;
2835 case '_': // 1 string to match.
2836 if (memcmp(Name.data()+6, "_const", 6) != 0)
2837 break;
2838 return AttributeCommonInfo::AT_Const; // "gnu::__const"
2839 case 'a': // 2 strings to match.
2840 switch (Name[6]) {
2841 default: break;
2842 case 'b': // 1 string to match.
2843 if (memcmp(Name.data()+7, "i_tag", 5) != 0)
2844 break;
2845 return AttributeCommonInfo::AT_AbiTag; // "gnu::abi_tag"
2846 case 'l': // 1 string to match.
2847 if (memcmp(Name.data()+7, "igned", 5) != 0)
2848 break;
2849 return AttributeCommonInfo::AT_Aligned; // "gnu::aligned"
2850 }
2851 break;
2852 case 'c': // 1 string to match.
2853 if (memcmp(Name.data()+6, "leanup", 6) != 0)
2854 break;
2855 return AttributeCommonInfo::AT_Cleanup; // "gnu::cleanup"
2856 case 'f': // 1 string to match.
2857 if (memcmp(Name.data()+6, "latten", 6) != 0)
2858 break;
2859 return AttributeCommonInfo::AT_Flatten; // "gnu::flatten"
2860 case 'n': // 3 strings to match.
2861 if (Name[6] != 'o')
2862 break;
2863 switch (Name[7]) {
2864 default: break;
2865 case 'd': // 1 string to match.
2866 if (memcmp(Name.data()+8, "ebug", 4) != 0)
2867 break;
2868 return AttributeCommonInfo::AT_NoDebug; // "gnu::nodebug"
2869 case 'n': // 1 string to match.
2870 if (memcmp(Name.data()+8, "null", 4) != 0)
2871 break;
2872 return AttributeCommonInfo::AT_NonNull; // "gnu::nonnull"
2873 case 't': // 1 string to match.
2874 if (memcmp(Name.data()+8, "hrow", 4) != 0)
2875 break;
2876 return AttributeCommonInfo::AT_NoThrow; // "gnu::nothrow"
2877 }
2878 break;
2879 case 'r': // 2 strings to match.
2880 if (memcmp(Name.data()+6, "eg", 2) != 0)
2881 break;
2882 switch (Name[8]) {
2883 default: break;
2884 case 'c': // 1 string to match.
2885 if (memcmp(Name.data()+9, "all", 3) != 0)
2886 break;
2887 return AttributeCommonInfo::AT_RegCall; // "gnu::regcall"
2888 case 'p': // 1 string to match.
2889 if (memcmp(Name.data()+9, "arm", 3) != 0)
2890 break;
2891 return AttributeCommonInfo::AT_Regparm; // "gnu::regparm"
2892 }
2893 break;
2894 case 's': // 2 strings to match.
2895 switch (Name[6]) {
2896 default: break;
2897 case 'e': // 1 string to match.
2898 if (memcmp(Name.data()+7, "ction", 5) != 0)
2899 break;
2900 return AttributeCommonInfo::AT_Section; // "gnu::section"
2901 case 't': // 1 string to match.
2902 if (memcmp(Name.data()+7, "dcall", 5) != 0)
2903 break;
2904 return AttributeCommonInfo::AT_StdCall; // "gnu::stdcall"
2905 }
2906 break;
2907 case 'w': // 2 strings to match.
2908 switch (Name[6]) {
2909 default: break;
2910 case 'a': // 1 string to match.
2911 if (memcmp(Name.data()+7, "rning", 5) != 0)
2912 break;
2913 return AttributeCommonInfo::AT_Error; // "gnu::warning"
2914 case 'e': // 1 string to match.
2915 if (memcmp(Name.data()+7, "akref", 5) != 0)
2916 break;
2917 return AttributeCommonInfo::AT_WeakRef; // "gnu::weakref"
2918 }
2919 break;
2920 }
2921 break;
2922 case 's': // 1 string to match.
2923 if (memcmp(Name.data()+2, "l::Pointer", 10) != 0)
2924 break;
2925 return AttributeCommonInfo::AT_Pointer; // "gsl::Pointer"
2926 }
2927 break;
2928 case 'h': // 1 string to match.
2929 if (memcmp(Name.data()+1, "lsl::is_rov", 11) != 0)
2930 break;
2931 return AttributeCommonInfo::AT_HLSLROV; // "hlsl::is_rov"
2932 case 'm': // 1 string to match.
2933 if (memcmp(Name.data()+1, "aybe_unused", 11) != 0)
2934 break;
2935 return AttributeCommonInfo::AT_Unused; // "maybe_unused"
2936 }
2937 break;
2938 case 13: // 12 strings to match.
2939 switch (Name[0]) {
2940 default: break;
2941 case 'c': // 3 strings to match.
2942 if (memcmp(Name.data()+1, "lang::", 6) != 0)
2943 break;
2944 switch (Name[7]) {
2945 default: break;
2946 case 'a': // 1 string to match.
2947 if (memcmp(Name.data()+8, "ssume", 5) != 0)
2948 break;
2949 return AttributeCommonInfo::AT_CXXAssume; // "clang::assume"
2950 case 'b': // 1 string to match.
2951 if (memcmp(Name.data()+8, "locks", 5) != 0)
2952 break;
2953 return AttributeCommonInfo::AT_Blocks; // "clang::blocks"
2954 case 'p': // 1 string to match.
2955 if (memcmp(Name.data()+8, "ascal", 5) != 0)
2956 break;
2957 return AttributeCommonInfo::AT_Pascal; // "clang::pascal"
2958 }
2959 break;
2960 case 'g': // 9 strings to match.
2961 switch (Name[1]) {
2962 default: break;
2963 case 'n': // 8 strings to match.
2964 if (memcmp(Name.data()+2, "u::", 3) != 0)
2965 break;
2966 switch (Name[5]) {
2967 default: break;
2968 case 'f': // 1 string to match.
2969 if (memcmp(Name.data()+6, "astcall", 7) != 0)
2970 break;
2971 return AttributeCommonInfo::AT_FastCall; // "gnu::fastcall"
2972 case 'n': // 4 strings to match.
2973 if (Name[6] != 'o')
2974 break;
2975 switch (Name[7]) {
2976 default: break;
2977 case 'c': // 1 string to match.
2978 if (memcmp(Name.data()+8, "ommon", 5) != 0)
2979 break;
2980 return AttributeCommonInfo::AT_NoCommon; // "gnu::nocommon"
2981 case 'i': // 1 string to match.
2982 if (memcmp(Name.data()+8, "nline", 5) != 0)
2983 break;
2984 return AttributeCommonInfo::AT_NoInline; // "gnu::noinline"
2985 case 'm': // 1 string to match.
2986 if (memcmp(Name.data()+8, "ips16", 5) != 0)
2987 break;
2988 return AttributeCommonInfo::AT_NoMips16; // "gnu::nomips16"
2989 case 'r': // 1 string to match.
2990 if (memcmp(Name.data()+8, "eturn", 5) != 0)
2991 break;
2992 return AttributeCommonInfo::AT_NoReturn; // "gnu::noreturn"
2993 }
2994 break;
2995 case 's': // 2 strings to match.
2996 switch (Name[6]) {
2997 default: break;
2998 case 'e': // 1 string to match.
2999 if (memcmp(Name.data()+7, "ntinel", 6) != 0)
3000 break;
3001 return AttributeCommonInfo::AT_Sentinel; // "gnu::sentinel"
3002 case 'y': // 1 string to match.
3003 if (memcmp(Name.data()+7, "sv_abi", 6) != 0)
3004 break;
3005 return AttributeCommonInfo::AT_SysVABI; // "gnu::sysv_abi"
3006 }
3007 break;
3008 case 't': // 1 string to match.
3009 if (memcmp(Name.data()+6, "hiscall", 7) != 0)
3010 break;
3011 return AttributeCommonInfo::AT_ThisCall; // "gnu::thiscall"
3012 }
3013 break;
3014 case 's': // 1 string to match.
3015 if (memcmp(Name.data()+2, "l::suppress", 11) != 0)
3016 break;
3017 return AttributeCommonInfo::AT_Suppress; // "gsl::suppress"
3018 }
3019 break;
3020 }
3021 break;
3022 case 14: // 15 strings to match.
3023 switch (Name[0]) {
3024 default: break;
3025 case 'c': // 5 strings to match.
3026 if (memcmp(Name.data()+1, "lang::", 6) != 0)
3027 break;
3028 switch (Name[7]) {
3029 default: break;
3030 case 'm': // 1 string to match.
3031 if (memcmp(Name.data()+8, "insize", 6) != 0)
3032 break;
3033 return AttributeCommonInfo::AT_MinSize; // "clang::minsize"
3034 case 'n': // 2 strings to match.
3035 if (Name[8] != 'o')
3036 break;
3037 switch (Name[9]) {
3038 default: break;
3039 case 'd': // 1 string to match.
3040 if (memcmp(Name.data()+10, "eref", 4) != 0)
3041 break;
3042 return AttributeCommonInfo::AT_NoDeref; // "clang::noderef"
3043 case 'm': // 1 string to match.
3044 if (memcmp(Name.data()+10, "erge", 4) != 0)
3045 break;
3046 return AttributeCommonInfo::AT_NoMerge; // "clang::nomerge"
3047 }
3048 break;
3049 case 'o': // 2 strings to match.
3050 switch (Name[8]) {
3051 default: break;
3052 case 'b': // 1 string to match.
3053 if (memcmp(Name.data()+9, "jc_gc", 5) != 0)
3054 break;
3055 return AttributeCommonInfo::AT_ObjCGC; // "clang::objc_gc"
3056 case 'p': // 1 string to match.
3057 if (memcmp(Name.data()+9, "tnone", 5) != 0)
3058 break;
3059 return AttributeCommonInfo::AT_OptimizeNone; // "clang::optnone"
3060 }
3061 break;
3062 }
3063 break;
3064 case 'g': // 9 strings to match.
3065 if (memcmp(Name.data()+1, "nu::", 4) != 0)
3066 break;
3067 switch (Name[5]) {
3068 default: break;
3069 case 'd': // 2 strings to match.
3070 if (memcmp(Name.data()+6, "ll", 2) != 0)
3071 break;
3072 switch (Name[8]) {
3073 default: break;
3074 case 'e': // 1 string to match.
3075 if (memcmp(Name.data()+9, "xport", 5) != 0)
3076 break;
3077 return AttributeCommonInfo::AT_DLLExport; // "gnu::dllexport"
3078 case 'i': // 1 string to match.
3079 if (memcmp(Name.data()+9, "mport", 5) != 0)
3080 break;
3081 return AttributeCommonInfo::AT_DLLImport; // "gnu::dllimport"
3082 }
3083 break;
3084 case 'i': // 1 string to match.
3085 if (memcmp(Name.data()+6, "nterrupt", 8) != 0)
3086 break;
3087 return AttributeCommonInfo::AT_Interrupt; // "gnu::interrupt"
3088 case 'l': // 1 string to match.
3089 if (memcmp(Name.data()+6, "ong_call", 8) != 0)
3090 break;
3091 return AttributeCommonInfo::AT_MipsLongCall; // "gnu::long_call"
3092 case 'm': // 3 strings to match.
3093 switch (Name[6]) {
3094 default: break;
3095 case 'a': // 1 string to match.
3096 if (memcmp(Name.data()+7, "y_alias", 7) != 0)
3097 break;
3098 return AttributeCommonInfo::AT_MayAlias; // "gnu::may_alias"
3099 case 'i': // 1 string to match.
3100 if (memcmp(Name.data()+7, "cromips", 7) != 0)
3101 break;
3102 return AttributeCommonInfo::AT_MicroMips; // "gnu::micromips"
3103 case 's': // 1 string to match.
3104 if (memcmp(Name.data()+7, "_struct", 7) != 0)
3105 break;
3106 return AttributeCommonInfo::AT_MSStruct; // "gnu::ms_struct"
3107 }
3108 break;
3109 case 's': // 1 string to match.
3110 if (memcmp(Name.data()+6, "electany", 8) != 0)
3111 break;
3112 return AttributeCommonInfo::AT_SelectAny; // "gnu::selectany"
3113 case 't': // 1 string to match.
3114 if (memcmp(Name.data()+6, "ls_model", 8) != 0)
3115 break;
3116 return AttributeCommonInfo::AT_TLSModel; // "gnu::tls_model"
3117 }
3118 break;
3119 case 'm': // 1 string to match.
3120 if (memcmp(Name.data()+1, "svc::noinline", 13) != 0)
3121 break;
3122 return AttributeCommonInfo::AT_NoInline; // "msvc::noinline"
3123 }
3124 break;
3125 case 15: // 22 strings to match.
3126 switch (Name[0]) {
3127 default: break;
3128 case 'c': // 12 strings to match.
3129 if (memcmp(Name.data()+1, "lang::", 6) != 0)
3130 break;
3131 switch (Name[7]) {
3132 default: break;
3133 case 'N': // 1 string to match.
3134 if (memcmp(Name.data()+8, "SObject", 7) != 0)
3135 break;
3136 return AttributeCommonInfo::AT_ObjCNSObject; // "clang::NSObject"
3137 case 'a': // 1 string to match.
3138 if (memcmp(Name.data()+8, "nnotate", 7) != 0)
3139 break;
3140 return AttributeCommonInfo::AT_Annotate; // "clang::annotate"
3141 case 'b': // 1 string to match.
3142 if (memcmp(Name.data()+8, "locking", 7) != 0)
3143 break;
3144 return AttributeCommonInfo::AT_Blocking; // "clang::blocking"
3145 case 'c': // 1 string to match.
3146 if (memcmp(Name.data()+8, "allback", 7) != 0)
3147 break;
3148 return AttributeCommonInfo::AT_Callback; // "clang::callback"
3149 case 'i': // 2 strings to match.
3150 if (Name[8] != 'b')
3151 break;
3152 switch (Name[9]) {
3153 default: break;
3154 case 'a': // 1 string to match.
3155 if (memcmp(Name.data()+10, "ction", 5) != 0)
3156 break;
3157 return AttributeCommonInfo::AT_IBAction; // "clang::ibaction"
3158 case 'o': // 1 string to match.
3159 if (memcmp(Name.data()+10, "utlet", 5) != 0)
3160 break;
3161 return AttributeCommonInfo::AT_IBOutlet; // "clang::iboutlet"
3162 }
3163 break;
3164 case 'm': // 2 strings to match.
3165 switch (Name[8]) {
3166 default: break;
3167 case '6': // 1 string to match.
3168 if (memcmp(Name.data()+9, "8k_rtd", 6) != 0)
3169 break;
3170 return AttributeCommonInfo::AT_M68kRTD; // "clang::m68k_rtd"
3171 case 'u': // 1 string to match.
3172 if (memcmp(Name.data()+9, "sttail", 6) != 0)
3173 break;
3174 return AttributeCommonInfo::AT_MustTail; // "clang::musttail"
3175 }
3176 break;
3177 case 'n': // 2 strings to match.
3178 if (Name[8] != 'o')
3179 break;
3180 switch (Name[9]) {
3181 default: break;
3182 case 'e': // 1 string to match.
3183 if (memcmp(Name.data()+10, "scape", 5) != 0)
3184 break;
3185 return AttributeCommonInfo::AT_NoEscape; // "clang::noescape"
3186 case 'i': // 1 string to match.
3187 if (memcmp(Name.data()+10, "nline", 5) != 0)
3188 break;
3189 return AttributeCommonInfo::AT_NoInline; // "clang::noinline"
3190 }
3191 break;
3192 case 's': // 2 strings to match.
3193 switch (Name[8]) {
3194 default: break;
3195 case 'i': // 1 string to match.
3196 if (memcmp(Name.data()+9, "zed_by", 6) != 0)
3197 break;
3198 return AttributeCommonInfo::AT_SizedBy; // "clang::sized_by"
3199 case 'u': // 1 string to match.
3200 if (memcmp(Name.data()+9, "ppress", 6) != 0)
3201 break;
3202 return AttributeCommonInfo::AT_Suppress; // "clang::suppress"
3203 }
3204 break;
3205 }
3206 break;
3207 case 'g': // 9 strings to match.
3208 if (memcmp(Name.data()+1, "nu::", 4) != 0)
3209 break;
3210 switch (Name[5]) {
3211 default: break;
3212 case 'a': // 2 strings to match.
3213 switch (Name[6]) {
3214 default: break;
3215 case 'l': // 1 string to match.
3216 if (memcmp(Name.data()+7, "loc_size", 8) != 0)
3217 break;
3218 return AttributeCommonInfo::AT_AllocSize; // "gnu::alloc_size"
3219 case 'r': // 1 string to match.
3220 if (memcmp(Name.data()+7, "tificial", 8) != 0)
3221 break;
3222 return AttributeCommonInfo::AT_Artificial; // "gnu::artificial"
3223 }
3224 break;
3225 case 'd': // 2 strings to match.
3226 if (Name[6] != 'e')
3227 break;
3228 switch (Name[7]) {
3229 default: break;
3230 case 'p': // 1 string to match.
3231 if (memcmp(Name.data()+8, "recated", 7) != 0)
3232 break;
3233 return AttributeCommonInfo::AT_Deprecated; // "gnu::deprecated"
3234 case 's': // 1 string to match.
3235 if (memcmp(Name.data()+8, "tructor", 7) != 0)
3236 break;
3237 return AttributeCommonInfo::AT_Destructor; // "gnu::destructor"
3238 }
3239 break;
3240 case 'f': // 1 string to match.
3241 if (memcmp(Name.data()+6, "ormat_arg", 9) != 0)
3242 break;
3243 return AttributeCommonInfo::AT_FormatArg; // "gnu::format_arg"
3244 case 'g': // 1 string to match.
3245 if (memcmp(Name.data()+6, "nu_inline", 9) != 0)
3246 break;
3247 return AttributeCommonInfo::AT_GNUInline; // "gnu::gnu_inline"
3248 case 'n': // 1 string to match.
3249 if (memcmp(Name.data()+6, "ocf_check", 9) != 0)
3250 break;
3251 return AttributeCommonInfo::AT_AnyX86NoCfCheck; // "gnu::nocf_check"
3252 case 's': // 1 string to match.
3253 if (memcmp(Name.data()+6, "hort_call", 9) != 0)
3254 break;
3255 return AttributeCommonInfo::AT_MipsShortCall; // "gnu::short_call"
3256 case 'v': // 1 string to match.
3257 if (memcmp(Name.data()+6, "isibility", 9) != 0)
3258 break;
3259 return AttributeCommonInfo::AT_Visibility; // "gnu::visibility"
3260 }
3261 break;
3262 case 'm': // 1 string to match.
3263 if (memcmp(Name.data()+1, "svc::constexpr", 14) != 0)
3264 break;
3265 return AttributeCommonInfo::AT_MSConstexpr; // "msvc::constexpr"
3266 }
3267 break;
3268 case 16: // 12 strings to match.
3269 switch (Name[0]) {
3270 default: break;
3271 case 'c': // 4 strings to match.
3272 if (memcmp(Name.data()+1, "lang::", 6) != 0)
3273 break;
3274 switch (Name[7]) {
3275 default: break;
3276 case 'f': // 1 string to match.
3277 if (memcmp(Name.data()+8, "lag_enum", 8) != 0)
3278 break;
3279 return AttributeCommonInfo::AT_FlagEnum; // "clang::flag_enum"
3280 case 'n': // 1 string to match.
3281 if (memcmp(Name.data()+8, "ouwtable", 8) != 0)
3282 break;
3283 return AttributeCommonInfo::AT_NoUwtable; // "clang::nouwtable"
3284 case 's': // 1 string to match.
3285 if (memcmp(Name.data()+8, "wiftcall", 8) != 0)
3286 break;
3287 return AttributeCommonInfo::AT_SwiftCall; // "clang::swiftcall"
3288 case 'v': // 1 string to match.
3289 if (memcmp(Name.data()+8, "ecreturn", 8) != 0)
3290 break;
3291 return AttributeCommonInfo::AT_VecReturn; // "clang::vecreturn"
3292 }
3293 break;
3294 case 'g': // 6 strings to match.
3295 if (memcmp(Name.data()+1, "nu::", 4) != 0)
3296 break;
3297 switch (Name[5]) {
3298 default: break;
3299 case 'a': // 1 string to match.
3300 if (memcmp(Name.data()+6, "lloc_align", 10) != 0)
3301 break;
3302 return AttributeCommonInfo::AT_AllocAlign; // "gnu::alloc_align"
3303 case 'c': // 1 string to match.
3304 if (memcmp(Name.data()+6, "onstructor", 10) != 0)
3305 break;
3306 return AttributeCommonInfo::AT_Constructor; // "gnu::constructor"
3307 case 'f': // 1 string to match.
3308 if (memcmp(Name.data()+6, "allthrough", 10) != 0)
3309 break;
3310 return AttributeCommonInfo::AT_FallThrough; // "gnu::fallthrough"
3311 case 'n': // 1 string to match.
3312 if (memcmp(Name.data()+6, "omicromips", 10) != 0)
3313 break;
3314 return AttributeCommonInfo::AT_NoMicroMips; // "gnu::nomicromips"
3315 case 'v': // 1 string to match.
3316 if (memcmp(Name.data()+6, "ector_size", 10) != 0)
3317 break;
3318 return AttributeCommonInfo::AT_VectorSize; // "gnu::vector_size"
3319 case 'w': // 1 string to match.
3320 if (memcmp(Name.data()+6, "arn_unused", 10) != 0)
3321 break;
3322 return AttributeCommonInfo::AT_WarnUnused; // "gnu::warn_unused"
3323 }
3324 break;
3325 case 'h': // 1 string to match.
3326 if (memcmp(Name.data()+1, "lsl::raw_buffer", 15) != 0)
3327 break;
3328 return AttributeCommonInfo::AT_HLSLRawBuffer; // "hlsl::raw_buffer"
3329 case 'r': // 1 string to match.
3330 if (memcmp(Name.data()+1, "iscv::vector_cc", 15) != 0)
3331 break;
3332 return AttributeCommonInfo::AT_RISCVVectorCC; // "riscv::vector_cc"
3333 }
3334 break;
3335 case 17: // 11 strings to match.
3336 switch (Name[0]) {
3337 default: break;
3338 case 'c': // 10 strings to match.
3339 if (memcmp(Name.data()+1, "lang::", 6) != 0)
3340 break;
3341 switch (Name[7]) {
3342 default: break;
3343 case 'a': // 1 string to match.
3344 if (memcmp(Name.data()+8, "llocating", 9) != 0)
3345 break;
3346 return AttributeCommonInfo::AT_Allocating; // "clang::allocating"
3347 case 'c': // 5 strings to match.
3348 switch (Name[8]) {
3349 default: break;
3350 case 'a': // 1 string to match.
3351 if (memcmp(Name.data()+9, "pability", 8) != 0)
3352 break;
3353 return AttributeCommonInfo::AT_Capability; // "clang::capability"
3354 case 'o': // 4 strings to match.
3355 switch (Name[9]) {
3356 default: break;
3357 case 'd': // 1 string to match.
3358 if (memcmp(Name.data()+10, "e_align", 7) != 0)
3359 break;
3360 return AttributeCommonInfo::AT_CodeAlign; // "clang::code_align"
3361 case 'n': // 2 strings to match.
3362 switch (Name[10]) {
3363 default: break;
3364 case 's': // 1 string to match.
3365 if (memcmp(Name.data()+11, "umable", 6) != 0)
3366 break;
3367 return AttributeCommonInfo::AT_Consumable; // "clang::consumable"
3368 case 'v': // 1 string to match.
3369 if (memcmp(Name.data()+11, "ergent", 6) != 0)
3370 break;
3371 return AttributeCommonInfo::AT_Convergent; // "clang::convergent"
3372 }
3373 break;
3374 case 'u': // 1 string to match.
3375 if (memcmp(Name.data()+10, "nted_by", 7) != 0)
3376 break;
3377 return AttributeCommonInfo::AT_CountedBy; // "clang::counted_by"
3378 }
3379 break;
3380 }
3381 break;
3382 case 'n': // 2 strings to match.
3383 if (memcmp(Name.data()+8, "o_", 2) != 0)
3384 break;
3385 switch (Name[10]) {
3386 default: break;
3387 case 'b': // 1 string to match.
3388 if (memcmp(Name.data()+11, "uiltin", 6) != 0)
3389 break;
3390 return AttributeCommonInfo::AT_NoBuiltin; // "clang::no_builtin"
3391 case 'd': // 1 string to match.
3392 if (memcmp(Name.data()+11, "estroy", 6) != 0)
3393 break;
3394 return AttributeCommonInfo::AT_NoDestroy; // "clang::no_destroy"
3395 }
3396 break;
3397 case 'u': // 1 string to match.
3398 if (memcmp(Name.data()+8, "se_handle", 9) != 0)
3399 break;
3400 return AttributeCommonInfo::AT_UseHandle; // "clang::use_handle"
3401 case 'v': // 1 string to match.
3402 if (memcmp(Name.data()+8, "ectorcall", 9) != 0)
3403 break;
3404 return AttributeCommonInfo::AT_VectorCall; // "clang::vectorcall"
3405 }
3406 break;
3407 case 'n': // 1 string to match.
3408 if (memcmp(Name.data()+1, "o_unique_address", 16) != 0)
3409 break;
3410 return AttributeCommonInfo::AT_NoUniqueAddress; // "no_unique_address"
3411 }
3412 break;
3413 case 18: // 26 strings to match.
3414 switch (Name[0]) {
3415 default: break;
3416 case 'c': // 22 strings to match.
3417 switch (Name[1]) {
3418 default: break;
3419 case 'a': // 1 string to match.
3420 if (memcmp(Name.data()+2, "rries_dependency", 16) != 0)
3421 break;
3422 return AttributeCommonInfo::AT_CarriesDependency; // "carries_dependency"
3423 case 'l': // 21 strings to match.
3424 if (memcmp(Name.data()+2, "ang::", 5) != 0)
3425 break;
3426 switch (Name[7]) {
3427 default: break;
3428 case 'c': // 2 strings to match.
3429 switch (Name[8]) {
3430 default: break;
3431 case 'a': // 1 string to match.
3432 if (memcmp(Name.data()+9, "lled_once", 9) != 0)
3433 break;
3434 return AttributeCommonInfo::AT_CalledOnce; // "clang::called_once"
3435 case 'f': // 1 string to match.
3436 if (memcmp(Name.data()+9, "_consumed", 9) != 0)
3437 break;
3438 return AttributeCommonInfo::AT_CFConsumed; // "clang::cf_consumed"
3439 }
3440 break;
3441 case 'e': // 2 strings to match.
3442 switch (Name[8]) {
3443 default: break;
3444 case 'n': // 1 string to match.
3445 if (memcmp(Name.data()+9, "force_tcb", 9) != 0)
3446 break;
3447 return AttributeCommonInfo::AT_EnforceTCB; // "clang::enforce_tcb"
3448 case 'x': // 1 string to match.
3449 if (memcmp(Name.data()+9, "port_name", 9) != 0)
3450 break;
3451 return AttributeCommonInfo::AT_WebAssemblyExportName; // "clang::export_name"
3452 }
3453 break;
3454 case 'f': // 1 string to match.
3455 if (memcmp(Name.data()+8, "allthrough", 10) != 0)
3456 break;
3457 return AttributeCommonInfo::AT_FallThrough; // "clang::fallthrough"
3458 case 'g': // 1 string to match.
3459 if (memcmp(Name.data()+8, "uarded_var", 10) != 0)
3460 break;
3461 return AttributeCommonInfo::AT_GuardedVar; // "clang::guarded_var"
3462 case 'i': // 1 string to match.
3463 if (memcmp(Name.data()+8, "mport_name", 10) != 0)
3464 break;
3465 return AttributeCommonInfo::AT_WebAssemblyImportName; // "clang::import_name"
3466 case 'm': // 2 strings to match.
3467 if (Name[8] != 'a')
3468 break;
3469 switch (Name[9]) {
3470 default: break;
3471 case 't': // 1 string to match.
3472 if (memcmp(Name.data()+10, "rix_type", 8) != 0)
3473 break;
3474 return AttributeCommonInfo::AT_MatrixType; // "clang::matrix_type"
3475 case 'y': // 1 string to match.
3476 if (memcmp(Name.data()+10, "be_undef", 8) != 0)
3477 break;
3478 return AttributeCommonInfo::AT_MaybeUndef; // "clang::maybe_undef"
3479 }
3480 break;
3481 case 'n': // 4 strings to match.
3482 switch (Name[8]) {
3483 default: break;
3484 case 'o': // 3 strings to match.
3485 switch (Name[9]) {
3486 default: break;
3487 case '_': // 1 string to match.
3488 if (memcmp(Name.data()+10, "sanitize", 8) != 0)
3489 break;
3490 return AttributeCommonInfo::AT_NoSanitize; // "clang::no_sanitize"
3491 case 'd': // 1 string to match.
3492 if (memcmp(Name.data()+10, "uplicate", 8) != 0)
3493 break;
3494 return AttributeCommonInfo::AT_NoDuplicate; // "clang::noduplicate"
3495 case 'n': // 1 string to match.
3496 if (memcmp(Name.data()+10, "blocking", 8) != 0)
3497 break;
3498 return AttributeCommonInfo::AT_NonBlocking; // "clang::nonblocking"
3499 }
3500 break;
3501 case 's': // 1 string to match.
3502 if (memcmp(Name.data()+9, "_consumed", 9) != 0)
3503 break;
3504 return AttributeCommonInfo::AT_NSConsumed; // "clang::ns_consumed"
3505 }
3506 break;
3507 case 'o': // 3 strings to match.
3508 switch (Name[8]) {
3509 default: break;
3510 case 'b': // 2 strings to match.
3511 if (memcmp(Name.data()+9, "jc_", 3) != 0)
3512 break;
3513 switch (Name[12]) {
3514 default: break;
3515 case 'b': // 1 string to match.
3516 if (memcmp(Name.data()+13, "ridge", 5) != 0)
3517 break;
3518 return AttributeCommonInfo::AT_ObjCBridge; // "clang::objc_bridge"
3519 case 'd': // 1 string to match.
3520 if (memcmp(Name.data()+13, "irect", 5) != 0)
3521 break;
3522 return AttributeCommonInfo::AT_ObjCDirect; // "clang::objc_direct"
3523 }
3524 break;
3525 case 's': // 1 string to match.
3526 if (memcmp(Name.data()+9, "_consumed", 9) != 0)
3527 break;
3528 return AttributeCommonInfo::AT_OSConsumed; // "clang::os_consumed"
3529 }
3530 break;
3531 case 's': // 2 strings to match.
3532 switch (Name[8]) {
3533 default: break;
3534 case 'w': // 1 string to match.
3535 if (memcmp(Name.data()+9, "ift_async", 9) != 0)
3536 break;
3537 return AttributeCommonInfo::AT_SwiftAsync; // "clang::swift_async"
3538 case 'y': // 1 string to match.
3539 if (memcmp(Name.data()+9, "cl_kernel", 9) != 0)
3540 break;
3541 return AttributeCommonInfo::AT_SYCLKernel; // "clang::sycl_kernel"
3542 }
3543 break;
3544 case 't': // 1 string to match.
3545 if (memcmp(Name.data()+8, "rivial_abi", 10) != 0)
3546 break;
3547 return AttributeCommonInfo::AT_TrivialABI; // "clang::trivial_abi"
3548 case 'u': // 1 string to match.
3549 if (memcmp(Name.data()+8, "navailable", 10) != 0)
3550 break;
3551 return AttributeCommonInfo::AT_Unavailable; // "clang::unavailable"
3552 case 'w': // 1 string to match.
3553 if (memcmp(Name.data()+8, "eak_import", 10) != 0)
3554 break;
3555 return AttributeCommonInfo::AT_WeakImport; // "clang::weak_import"
3556 }
3557 break;
3558 }
3559 break;
3560 case 'g': // 4 strings to match.
3561 if (memcmp(Name.data()+1, "nu::", 4) != 0)
3562 break;
3563 switch (Name[5]) {
3564 default: break;
3565 case 'a': // 1 string to match.
3566 if (memcmp(Name.data()+6, "lways_inline", 12) != 0)
3567 break;
3568 return AttributeCommonInfo::AT_AlwaysInline; // "gnu::always_inline"
3569 case 'i': // 1 string to match.
3570 if (memcmp(Name.data()+6, "nit_priority", 12) != 0)
3571 break;
3572 return AttributeCommonInfo::AT_InitPriority; // "gnu::init_priority"
3573 case 'r': // 1 string to match.
3574 if (memcmp(Name.data()+6, "eturns_twice", 12) != 0)
3575 break;
3576 return AttributeCommonInfo::AT_ReturnsTwice; // "gnu::returns_twice"
3577 case 't': // 1 string to match.
3578 if (memcmp(Name.data()+6, "arget_clones", 12) != 0)
3579 break;
3580 return AttributeCommonInfo::AT_TargetClones; // "gnu::target_clones"
3581 }
3582 break;
3583 }
3584 break;
3585 case 19: // 16 strings to match.
3586 switch (Name[0]) {
3587 default: break;
3588 case 'c': // 13 strings to match.
3589 if (memcmp(Name.data()+1, "lang::", 6) != 0)
3590 break;
3591 switch (Name[7]) {
3592 default: break;
3593 case 'a': // 1 string to match.
3594 if (memcmp(Name.data()+8, "vailability", 11) != 0)
3595 break;
3596 return AttributeCommonInfo::AT_Availability; // "clang::availability"
3597 case 'b': // 3 strings to match.
3598 switch (Name[8]) {
3599 default: break;
3600 case 'p': // 1 string to match.
3601 if (memcmp(Name.data()+9, "f_fastcall", 10) != 0)
3602 break;
3603 return AttributeCommonInfo::AT_BPFFastCall; // "clang::bpf_fastcall"
3604 case 't': // 2 strings to match.
3605 if (memcmp(Name.data()+9, "f_", 2) != 0)
3606 break;
3607 switch (Name[11]) {
3608 default: break;
3609 case 'd': // 1 string to match.
3610 if (memcmp(Name.data()+12, "ecl_tag", 7) != 0)
3611 break;
3612 return AttributeCommonInfo::AT_BTFDeclTag; // "clang::btf_decl_tag"
3613 case 't': // 1 string to match.
3614 if (memcmp(Name.data()+12, "ype_tag", 7) != 0)
3615 break;
3616 return AttributeCommonInfo::AT_BTFTypeTag; // "clang::btf_type_tag"
3617 }
3618 break;
3619 }
3620 break;
3621 case 'c': // 3 strings to match.
3622 switch (Name[8]) {
3623 default: break;
3624 case 'o': // 1 string to match.
3625 if (memcmp(Name.data()+9, "ro_wrapper", 10) != 0)
3626 break;
3627 return AttributeCommonInfo::AT_CoroWrapper; // "clang::coro_wrapper"
3628 case 'p': // 2 strings to match.
3629 if (memcmp(Name.data()+9, "u_", 2) != 0)
3630 break;
3631 switch (Name[11]) {
3632 default: break;
3633 case 'd': // 1 string to match.
3634 if (memcmp(Name.data()+12, "ispatch", 7) != 0)
3635 break;
3636 return AttributeCommonInfo::AT_CPUDispatch; // "clang::cpu_dispatch"
3637 case 's': // 1 string to match.
3638 if (memcmp(Name.data()+12, "pecific", 7) != 0)
3639 break;
3640 return AttributeCommonInfo::AT_CPUSpecific; // "clang::cpu_specific"
3641 }
3642 break;
3643 }
3644 break;
3645 case 'n': // 2 strings to match.
3646 switch (Name[8]) {
3647 default: break;
3648 case 'o': // 1 string to match.
3649 if (memcmp(Name.data()+9, "convergent", 10) != 0)
3650 break;
3651 return AttributeCommonInfo::AT_NoConvergent; // "clang::noconvergent"
3652 case 'v': // 1 string to match.
3653 if (memcmp(Name.data()+9, "ptx_kernel", 10) != 0)
3654 break;
3655 return AttributeCommonInfo::AT_NVPTXKernel; // "clang::nvptx_kernel"
3656 }
3657 break;
3658 case 'o': // 3 strings to match.
3659 switch (Name[8]) {
3660 default: break;
3661 case 'b': // 1 string to match.
3662 if (memcmp(Name.data()+9, "jc_boxable", 10) != 0)
3663 break;
3664 return AttributeCommonInfo::AT_ObjCBoxable; // "clang::objc_boxable"
3665 case 'p': // 1 string to match.
3666 if (memcmp(Name.data()+9, "encl_local", 10) != 0)
3667 break;
3668 return AttributeCommonInfo::AT_OpenCLLocalAddressSpace; // "clang::opencl_local"
3669 case 'v': // 1 string to match.
3670 if (memcmp(Name.data()+9, "erloadable", 10) != 0)
3671 break;
3672 return AttributeCommonInfo::AT_Overloadable; // "clang::overloadable"
3673 }
3674 break;
3675 case 'p': // 1 string to match.
3676 if (memcmp(Name.data()+8, "reserve_all", 11) != 0)
3677 break;
3678 return AttributeCommonInfo::AT_PreserveAll; // "clang::preserve_all"
3679 }
3680 break;
3681 case 'g': // 3 strings to match.
3682 if (memcmp(Name.data()+1, "nu::", 4) != 0)
3683 break;
3684 switch (Name[5]) {
3685 default: break;
3686 case 'a': // 1 string to match.
3687 if (memcmp(Name.data()+6, "ssume_aligned", 13) != 0)
3688 break;
3689 return AttributeCommonInfo::AT_AssumeAligned; // "gnu::assume_aligned"
3690 case 'n': // 1 string to match.
3691 if (memcmp(Name.data()+6, "o_split_stack", 13) != 0)
3692 break;
3693 return AttributeCommonInfo::AT_NoSplitStack; // "gnu::no_split_stack"
3694 case 't': // 1 string to match.
3695 if (memcmp(Name.data()+6, "arget_version", 13) != 0)
3696 break;
3697 return AttributeCommonInfo::AT_TargetVersion; // "gnu::target_version"
3698 }
3699 break;
3700 }
3701 break;
3702 case 20: // 21 strings to match.
3703 switch (Name[0]) {
3704 default: break;
3705 case 'c': // 17 strings to match.
3706 if (memcmp(Name.data()+1, "lang::", 6) != 0)
3707 break;
3708 switch (Name[7]) {
3709 default: break;
3710 case 'a': // 4 strings to match.
3711 switch (Name[8]) {
3712 default: break;
3713 case 'd': // 1 string to match.
3714 if (memcmp(Name.data()+9, "dress_space", 11) != 0)
3715 break;
3716 return AttributeCommonInfo::AT_AddressSpace; // "clang::address_space"
3717 case 'l': // 1 string to match.
3718 if (memcmp(Name.data()+9, "ways_inline", 11) != 0)
3719 break;
3720 return AttributeCommonInfo::AT_AlwaysInline; // "clang::always_inline"
3721 case 'm': // 1 string to match.
3722 if (memcmp(Name.data()+9, "dgpu_kernel", 11) != 0)
3723 break;
3724 return AttributeCommonInfo::AT_AMDGPUKernelCall; // "clang::amdgpu_kernel"
3725 case 'n': // 1 string to match.
3726 if (memcmp(Name.data()+9, "notate_type", 11) != 0)
3727 break;
3728 return AttributeCommonInfo::AT_AnnotateType; // "clang::annotate_type"
3729 }
3730 break;
3731 case 'b': // 1 string to match.
3732 if (memcmp(Name.data()+8, "uiltin_alias", 12) != 0)
3733 break;
3734 return AttributeCommonInfo::AT_BuiltinAlias; // "clang::builtin_alias"
3735 case 'c': // 1 string to match.
3736 if (memcmp(Name.data()+8, "allable_when", 12) != 0)
3737 break;
3738 return AttributeCommonInfo::AT_CallableWhen; // "clang::callable_when"
3739 case 'i': // 1 string to match.
3740 if (memcmp(Name.data()+8, "mport_module", 12) != 0)
3741 break;
3742 return AttributeCommonInfo::AT_WebAssemblyImportModule; // "clang::import_module"
3743 case 'l': // 1 string to match.
3744 if (memcmp(Name.data()+8, "ifetimebound", 12) != 0)
3745 break;
3746 return AttributeCommonInfo::AT_LifetimeBound; // "clang::lifetimebound"
3747 case 'n': // 1 string to match.
3748 if (memcmp(Name.data()+8, "onallocating", 12) != 0)
3749 break;
3750 return AttributeCommonInfo::AT_NonAllocating; // "clang::nonallocating"
3751 case 'o': // 1 string to match.
3752 if (memcmp(Name.data()+8, "pencl_global", 12) != 0)
3753 break;
3754 return AttributeCommonInfo::AT_OpenCLGlobalAddressSpace; // "clang::opencl_global"
3755 case 'p': // 2 strings to match.
3756 if (memcmp(Name.data()+8, "reserve_", 8) != 0)
3757 break;
3758 switch (Name[16]) {
3759 default: break;
3760 case 'm': // 1 string to match.
3761 if (memcmp(Name.data()+17, "ost", 3) != 0)
3762 break;
3763 return AttributeCommonInfo::AT_PreserveMost; // "clang::preserve_most"
3764 case 'n': // 1 string to match.
3765 if (memcmp(Name.data()+17, "one", 3) != 0)
3766 break;
3767 return AttributeCommonInfo::AT_PreserveNone; // "clang::preserve_none"
3768 }
3769 break;
3770 case 'r': // 1 string to match.
3771 if (memcmp(Name.data()+8, "einitializes", 12) != 0)
3772 break;
3773 return AttributeCommonInfo::AT_Reinitializes; // "clang::reinitializes"
3774 case 's': // 2 strings to match.
3775 switch (Name[8]) {
3776 default: break;
3777 case 'e': // 1 string to match.
3778 if (memcmp(Name.data()+9, "t_typestate", 11) != 0)
3779 break;
3780 return AttributeCommonInfo::AT_SetTypestate; // "clang::set_typestate"
3781 case 'w': // 1 string to match.
3782 if (memcmp(Name.data()+9, "ift_context", 11) != 0)
3783 break;
3784 return AttributeCommonInfo::AT_SwiftContext; // "clang::swift_context"
3785 }
3786 break;
3787 case 'u': // 1 string to match.
3788 if (memcmp(Name.data()+8, "ninitialized", 12) != 0)
3789 break;
3790 return AttributeCommonInfo::AT_Uninitialized; // "clang::uninitialized"
3791 case 'x': // 1 string to match.
3792 if (memcmp(Name.data()+8, "ray_log_args", 12) != 0)
3793 break;
3794 return AttributeCommonInfo::AT_XRayLogArgs; // "clang::xray_log_args"
3795 }
3796 break;
3797 case 'g': // 2 strings to match.
3798 if (memcmp(Name.data()+1, "nu::", 4) != 0)
3799 break;
3800 switch (Name[5]) {
3801 default: break;
3802 case 'f': // 1 string to match.
3803 if (memcmp(Name.data()+6, "unction_return", 14) != 0)
3804 break;
3805 return AttributeCommonInfo::AT_FunctionReturnThunks; // "gnu::function_return"
3806 case 'r': // 1 string to match.
3807 if (memcmp(Name.data()+6, "eturns_nonnull", 14) != 0)
3808 break;
3809 return AttributeCommonInfo::AT_ReturnsNonNull; // "gnu::returns_nonnull"
3810 }
3811 break;
3812 case 'h': // 2 strings to match.
3813 if (memcmp(Name.data()+1, "lsl::", 5) != 0)
3814 break;
3815 switch (Name[6]) {
3816 default: break;
3817 case 'c': // 1 string to match.
3818 if (memcmp(Name.data()+7, "ontained_type", 13) != 0)
3819 break;
3820 return AttributeCommonInfo::AT_HLSLContainedType; // "hlsl::contained_type"
3821 case 'r': // 1 string to match.
3822 if (memcmp(Name.data()+7, "esource_class", 13) != 0)
3823 break;
3824 return AttributeCommonInfo::AT_HLSLResourceClass; // "hlsl::resource_class"
3825 }
3826 break;
3827 }
3828 break;
3829 case 21: // 14 strings to match.
3830 switch (Name[0]) {
3831 default: break;
3832 case 'c': // 13 strings to match.
3833 if (memcmp(Name.data()+1, "lang::", 6) != 0)
3834 break;
3835 switch (Name[7]) {
3836 default: break;
3837 case 'a': // 2 strings to match.
3838 switch (Name[8]) {
3839 default: break;
3840 case 'c': // 1 string to match.
3841 if (memcmp(Name.data()+9, "quire_handle", 12) != 0)
3842 break;
3843 return AttributeCommonInfo::AT_AcquireHandle; // "clang::acquire_handle"
3844 case 'l': // 1 string to match.
3845 if (memcmp(Name.data()+9, "ways_destroy", 12) != 0)
3846 break;
3847 return AttributeCommonInfo::AT_AlwaysDestroy; // "clang::always_destroy"
3848 }
3849 break;
3850 case 'i': // 1 string to match.
3851 if (memcmp(Name.data()+8, "ntel_ocl_bicc", 13) != 0)
3852 break;
3853 return AttributeCommonInfo::AT_IntelOclBicc; // "clang::intel_ocl_bicc"
3854 case 'o': // 4 strings to match.
3855 switch (Name[8]) {
3856 default: break;
3857 case 'b': // 2 strings to match.
3858 if (memcmp(Name.data()+9, "jc_", 3) != 0)
3859 break;
3860 switch (Name[12]) {
3861 default: break;
3862 case 'e': // 1 string to match.
3863 if (memcmp(Name.data()+13, "xception", 8) != 0)
3864 break;
3865 return AttributeCommonInfo::AT_ObjCException; // "clang::objc_exception"
3866 case 'o': // 1 string to match.
3867 if (memcmp(Name.data()+13, "wnership", 8) != 0)
3868 break;
3869 return AttributeCommonInfo::AT_ObjCOwnership; // "clang::objc_ownership"
3870 }
3871 break;
3872 case 'p': // 2 strings to match.
3873 if (memcmp(Name.data()+9, "encl_", 5) != 0)
3874 break;
3875 switch (Name[14]) {
3876 default: break;
3877 case 'g': // 1 string to match.
3878 if (memcmp(Name.data()+15, "eneric", 6) != 0)
3879 break;
3880 return AttributeCommonInfo::AT_OpenCLGenericAddressSpace; // "clang::opencl_generic"
3881 case 'p': // 1 string to match.
3882 if (memcmp(Name.data()+15, "rivate", 6) != 0)
3883 break;
3884 return AttributeCommonInfo::AT_OpenCLPrivateAddressSpace; // "clang::opencl_private"
3885 }
3886 break;
3887 }
3888 break;
3889 case 'p': // 3 strings to match.
3890 switch (Name[8]) {
3891 default: break;
3892 case 'r': // 2 strings to match.
3893 if (memcmp(Name.data()+9, "eferred_", 8) != 0)
3894 break;
3895 switch (Name[17]) {
3896 default: break;
3897 case 'n': // 1 string to match.
3898 if (memcmp(Name.data()+18, "ame", 3) != 0)
3899 break;
3900 return AttributeCommonInfo::AT_PreferredName; // "clang::preferred_name"
3901 case 't': // 1 string to match.
3902 if (memcmp(Name.data()+18, "ype", 3) != 0)
3903 break;
3904 return AttributeCommonInfo::AT_PreferredType; // "clang::preferred_type"
3905 }
3906 break;
3907 case 't': // 1 string to match.
3908 if (memcmp(Name.data()+9, "_guarded_var", 12) != 0)
3909 break;
3910 return AttributeCommonInfo::AT_PtGuardedVar; // "clang::pt_guarded_var"
3911 }
3912 break;
3913 case 'r': // 1 string to match.
3914 if (memcmp(Name.data()+8, "elease_handle", 13) != 0)
3915 break;
3916 return AttributeCommonInfo::AT_ReleaseHandle; // "clang::release_handle"
3917 case 's': // 1 string to match.
3918 if (memcmp(Name.data()+8, "wiftasynccall", 13) != 0)
3919 break;
3920 return AttributeCommonInfo::AT_SwiftAsyncCall; // "clang::swiftasynccall"
3921 case 't': // 1 string to match.
3922 if (memcmp(Name.data()+8, "est_typestate", 13) != 0)
3923 break;
3924 return AttributeCommonInfo::AT_TestTypestate; // "clang::test_typestate"
3925 }
3926 break;
3927 case 'g': // 1 string to match.
3928 if (memcmp(Name.data()+1, "nu::randomize_layout", 20) != 0)
3929 break;
3930 return AttributeCommonInfo::AT_RandomizeLayout; // "gnu::randomize_layout"
3931 }
3932 break;
3933 case 22: // 16 strings to match.
3934 switch (Name[0]) {
3935 default: break;
3936 case 'c': // 15 strings to match.
3937 if (memcmp(Name.data()+1, "lang::", 6) != 0)
3938 break;
3939 switch (Name[7]) {
3940 default: break;
3941 case 'a': // 3 strings to match.
3942 switch (Name[8]) {
3943 default: break;
3944 case 'a': // 1 string to match.
3945 if (memcmp(Name.data()+9, "rch64_sve_pcs", 13) != 0)
3946 break;
3947 return AttributeCommonInfo::AT_AArch64SVEPcs; // "clang::aarch64_sve_pcs"
3948 case 'm': // 2 strings to match.
3949 if (memcmp(Name.data()+9, "dgpu_num_", 9) != 0)
3950 break;
3951 switch (Name[18]) {
3952 default: break;
3953 case 's': // 1 string to match.
3954 if (memcmp(Name.data()+19, "gpr", 3) != 0)
3955 break;
3956 return AttributeCommonInfo::AT_AMDGPUNumSGPR; // "clang::amdgpu_num_sgpr"
3957 case 'v': // 1 string to match.
3958 if (memcmp(Name.data()+19, "gpr", 3) != 0)
3959 break;
3960 return AttributeCommonInfo::AT_AMDGPUNumVGPR; // "clang::amdgpu_num_vgpr"
3961 }
3962 break;
3963 }
3964 break;
3965 case 'n': // 1 string to match.
3966 if (memcmp(Name.data()+8, "ot_tail_called", 14) != 0)
3967 break;
3968 return AttributeCommonInfo::AT_NotTailCalled; // "clang::not_tail_called"
3969 case 'o': // 5 strings to match.
3970 switch (Name[8]) {
3971 default: break;
3972 case 'b': // 2 strings to match.
3973 if (memcmp(Name.data()+9, "jc_", 3) != 0)
3974 break;
3975 switch (Name[12]) {
3976 default: break;
3977 case 'c': // 1 string to match.
3978 if (memcmp(Name.data()+13, "lass_stub", 9) != 0)
3979 break;
3980 return AttributeCommonInfo::AT_ObjCClassStub; // "clang::objc_class_stub"
3981 case 'r': // 1 string to match.
3982 if (memcmp(Name.data()+13, "oot_class", 9) != 0)
3983 break;
3984 return AttributeCommonInfo::AT_ObjCRootClass; // "clang::objc_root_class"
3985 }
3986 break;
3987 case 'p': // 1 string to match.
3988 if (memcmp(Name.data()+9, "encl_constant", 13) != 0)
3989 break;
3990 return AttributeCommonInfo::AT_OpenCLConstantAddressSpace; // "clang::opencl_constant"
3991 case 'w': // 2 strings to match.
3992 if (memcmp(Name.data()+9, "nership_", 8) != 0)
3993 break;
3994 switch (Name[17]) {
3995 default: break;
3996 case 'h': // 1 string to match.
3997 if (memcmp(Name.data()+18, "olds", 4) != 0)
3998 break;
3999 return AttributeCommonInfo::AT_Ownership; // "clang::ownership_holds"
4000 case 't': // 1 string to match.
4001 if (memcmp(Name.data()+18, "akes", 4) != 0)
4002 break;
4003 return AttributeCommonInfo::AT_Ownership; // "clang::ownership_takes"
4004 }
4005 break;
4006 }
4007 break;
4008 case 'p': // 1 string to match.
4009 if (memcmp(Name.data()+8, "aram_typestate", 14) != 0)
4010 break;
4011 return AttributeCommonInfo::AT_ParamTypestate; // "clang::param_typestate"
4012 case 'r': // 1 string to match.
4013 if (memcmp(Name.data()+8, "iscv_vector_cc", 14) != 0)
4014 break;
4015 return AttributeCommonInfo::AT_RISCVVectorCC; // "clang::riscv_vector_cc"
4016 case 's': // 1 string to match.
4017 if (memcmp(Name.data()+8, "coped_lockable", 14) != 0)
4018 break;
4019 return AttributeCommonInfo::AT_ScopedLockable; // "clang::scoped_lockable"
4020 case 't': // 1 string to match.
4021 if (memcmp(Name.data()+8, "ype_visibility", 14) != 0)
4022 break;
4023 return AttributeCommonInfo::AT_TypeVisibility; // "clang::type_visibility"
4024 case 'u': // 2 strings to match.
4025 switch (Name[8]) {
4026 default: break;
4027 case 'n': // 1 string to match.
4028 if (memcmp(Name.data()+9, "lock_function", 13) != 0)
4029 break;
4030 return AttributeCommonInfo::AT_ReleaseCapability; // "clang::unlock_function"
4031 case 's': // 1 string to match.
4032 if (memcmp(Name.data()+9, "ing_if_exists", 13) != 0)
4033 break;
4034 return AttributeCommonInfo::AT_UsingIfExists; // "clang::using_if_exists"
4035 }
4036 break;
4037 }
4038 break;
4039 case 'g': // 1 string to match.
4040 if (memcmp(Name.data()+1, "nu::transparent_union", 21) != 0)
4041 break;
4042 return AttributeCommonInfo::AT_TransparentUnion; // "gnu::transparent_union"
4043 }
4044 break;
4045 case 23: // 16 strings to match.
4046 switch (Name[0]) {
4047 default: break;
4048 case 'c': // 12 strings to match.
4049 if (memcmp(Name.data()+1, "lang::", 6) != 0)
4050 break;
4051 switch (Name[7]) {
4052 default: break;
4053 case 'c': // 1 string to match.
4054 if (memcmp(Name.data()+8, "oro_return_type", 15) != 0)
4055 break;
4056 return AttributeCommonInfo::AT_CoroReturnType; // "clang::coro_return_type"
4057 case 'e': // 1 string to match.
4058 if (memcmp(Name.data()+8, "nforce_tcb_leaf", 15) != 0)
4059 break;
4060 return AttributeCommonInfo::AT_EnforceTCBLeaf; // "clang::enforce_tcb_leaf"
4061 case 'h': // 1 string to match.
4062 if (memcmp(Name.data()+8, "ybrid_patchable", 15) != 0)
4063 break;
4064 return AttributeCommonInfo::AT_HybridPatchable; // "clang::hybrid_patchable"
4065 case 'i': // 1 string to match.
4066 if (memcmp(Name.data()+8, "nternal_linkage", 15) != 0)
4067 break;
4068 return AttributeCommonInfo::AT_InternalLinkage; // "clang::internal_linkage"
4069 case 'm': // 1 string to match.
4070 if (memcmp(Name.data()+8, "in_vector_width", 15) != 0)
4071 break;
4072 return AttributeCommonInfo::AT_MinVectorWidth; // "clang::min_vector_width"
4073 case 'n': // 2 strings to match.
4074 switch (Name[8]) {
4075 default: break;
4076 case 'e': // 1 string to match.
4077 if (memcmp(Name.data()+9, "on_vector_type", 14) != 0)
4078 break;
4079 return AttributeCommonInfo::AT_NeonVectorType; // "clang::neon_vector_type"
4080 case 's': // 1 string to match.
4081 if (memcmp(Name.data()+9, "_consumes_self", 14) != 0)
4082 break;
4083 return AttributeCommonInfo::AT_NSConsumesSelf; // "clang::ns_consumes_self"
4084 }
4085 break;
4086 case 'o': // 1 string to match.
4087 if (memcmp(Name.data()+8, "s_consumes_this", 15) != 0)
4088 break;
4089 return AttributeCommonInfo::AT_OSConsumesThis; // "clang::os_consumes_this"
4090 case 'p': // 1 string to match.
4091 if (memcmp(Name.data()+8, "ass_object_size", 15) != 0)
4092 break;
4093 return AttributeCommonInfo::AT_PassObjectSize; // "clang::pass_object_size"
4094 case 'r': // 1 string to match.
4095 if (memcmp(Name.data()+8, "eturn_typestate", 15) != 0)
4096 break;
4097 return AttributeCommonInfo::AT_ReturnTypestate; // "clang::return_typestate"
4098 case 's': // 2 strings to match.
4099 switch (Name[8]) {
4100 default: break;
4101 case 'i': // 1 string to match.
4102 if (memcmp(Name.data()+9, "zed_by_or_null", 14) != 0)
4103 break;
4104 return AttributeCommonInfo::AT_SizedByOrNull; // "clang::sized_by_or_null"
4105 case 't': // 1 string to match.
4106 if (memcmp(Name.data()+9, "andalone_debug", 14) != 0)
4107 break;
4108 return AttributeCommonInfo::AT_StandaloneDebug; // "clang::standalone_debug"
4109 }
4110 break;
4111 }
4112 break;
4113 case 'g': // 3 strings to match.
4114 if (memcmp(Name.data()+1, "nu::", 4) != 0)
4115 break;
4116 switch (Name[5]) {
4117 default: break;
4118 case 'n': // 2 strings to match.
4119 if (memcmp(Name.data()+6, "o_s", 3) != 0)
4120 break;
4121 switch (Name[9]) {
4122 default: break;
4123 case 'a': // 1 string to match.
4124 if (memcmp(Name.data()+10, "nitize_thread", 13) != 0)
4125 break;
4126 return AttributeCommonInfo::AT_NoSanitizeSpecific; // "gnu::no_sanitize_thread"
4127 case 't': // 1 string to match.
4128 if (memcmp(Name.data()+10, "ack_protector", 13) != 0)
4129 break;
4130 return AttributeCommonInfo::AT_NoStackProtector; // "gnu::no_stack_protector"
4131 }
4132 break;
4133 case 'w': // 1 string to match.
4134 if (memcmp(Name.data()+6, "arn_unused_result", 17) != 0)
4135 break;
4136 return AttributeCommonInfo::AT_WarnUnusedResult; // "gnu::warn_unused_result"
4137 }
4138 break;
4139 case 'm': // 1 string to match.
4140 if (memcmp(Name.data()+1, "svc::no_unique_address", 22) != 0)
4141 break;
4142 return AttributeCommonInfo::AT_NoUniqueAddress; // "msvc::no_unique_address"
4143 }
4144 break;
4145 case 24: // 8 strings to match.
4146 switch (Name[0]) {
4147 default: break;
4148 case 'c': // 5 strings to match.
4149 if (memcmp(Name.data()+1, "lang::", 6) != 0)
4150 break;
4151 switch (Name[7]) {
4152 default: break;
4153 case 'a': // 1 string to match.
4154 if (memcmp(Name.data()+8, "ssert_capability", 16) != 0)
4155 break;
4156 return AttributeCommonInfo::AT_AssertCapability; // "clang::assert_capability"
4157 case 'o': // 2 strings to match.
4158 switch (Name[8]) {
4159 default: break;
4160 case 'b': // 1 string to match.
4161 if (memcmp(Name.data()+9, "jc_runtime_name", 15) != 0)
4162 break;
4163 return AttributeCommonInfo::AT_ObjCRuntimeName; // "clang::objc_runtime_name"
4164 case 'w': // 1 string to match.
4165 if (memcmp(Name.data()+9, "nership_returns", 15) != 0)
4166 break;
4167 return AttributeCommonInfo::AT_Ownership; // "clang::ownership_returns"
4168 }
4169 break;
4170 case 's': // 2 strings to match.
4171 switch (Name[8]) {
4172 default: break;
4173 case 'h': // 1 string to match.
4174 if (memcmp(Name.data()+9, "ared_capability", 15) != 0)
4175 break;
4176 return AttributeCommonInfo::AT_Capability; // "clang::shared_capability"
4177 case 'w': // 1 string to match.
4178 if (memcmp(Name.data()+9, "ift_async_error", 15) != 0)
4179 break;
4180 return AttributeCommonInfo::AT_SwiftAsyncError; // "clang::swift_async_error"
4181 }
4182 break;
4183 }
4184 break;
4185 case 'g': // 3 strings to match.
4186 if (memcmp(Name.data()+1, "nu::", 4) != 0)
4187 break;
4188 switch (Name[5]) {
4189 default: break;
4190 case 'n': // 2 strings to match.
4191 if (memcmp(Name.data()+6, "o_", 2) != 0)
4192 break;
4193 switch (Name[8]) {
4194 default: break;
4195 case 'r': // 1 string to match.
4196 if (memcmp(Name.data()+9, "andomize_layout", 15) != 0)
4197 break;
4198 return AttributeCommonInfo::AT_NoRandomizeLayout; // "gnu::no_randomize_layout"
4199 case 's': // 1 string to match.
4200 if (memcmp(Name.data()+9, "anitize_address", 15) != 0)
4201 break;
4202 return AttributeCommonInfo::AT_NoSanitizeSpecific; // "gnu::no_sanitize_address"
4203 }
4204 break;
4205 case 'z': // 1 string to match.
4206 if (memcmp(Name.data()+6, "ero_call_used_regs", 18) != 0)
4207 break;
4208 return AttributeCommonInfo::AT_ZeroCallUsedRegs; // "gnu::zero_call_used_regs"
4209 }
4210 break;
4211 }
4212 break;
4213 case 25: // 18 strings to match.
4214 if (memcmp(Name.data()+0, "clang::", 7) != 0)
4215 break;
4216 switch (Name[7]) {
4217 default: break;
4218 case 'a': // 2 strings to match.
4219 switch (Name[8]) {
4220 default: break;
4221 case 'a': // 1 string to match.
4222 if (memcmp(Name.data()+9, "rch64_vector_pcs", 16) != 0)
4223 break;
4224 return AttributeCommonInfo::AT_AArch64VectorPcs; // "clang::aarch64_vector_pcs"
4225 case 'c': // 1 string to match.
4226 if (memcmp(Name.data()+9, "quire_capability", 16) != 0)
4227 break;
4228 return AttributeCommonInfo::AT_AcquireCapability; // "clang::acquire_capability"
4229 }
4230 break;
4231 case 'c': // 2 strings to match.
4232 if (Name[8] != 'o')
4233 break;
4234 switch (Name[9]) {
4235 default: break;
4236 case 'r': // 1 string to match.
4237 if (memcmp(Name.data()+10, "o_lifetimebound", 15) != 0)
4238 break;
4239 return AttributeCommonInfo::AT_CoroLifetimeBound; // "clang::coro_lifetimebound"
4240 case 'u': // 1 string to match.
4241 if (memcmp(Name.data()+10, "nted_by_or_null", 15) != 0)
4242 break;
4243 return AttributeCommonInfo::AT_CountedByOrNull; // "clang::counted_by_or_null"
4244 }
4245 break;
4246 case 'd': // 1 string to match.
4247 if (memcmp(Name.data()+8, "isable_tail_calls", 17) != 0)
4248 break;
4249 return AttributeCommonInfo::AT_DisableTailCalls; // "clang::disable_tail_calls"
4250 case 'e': // 1 string to match.
4251 if (memcmp(Name.data()+8, "num_extensibility", 17) != 0)
4252 break;
4253 return AttributeCommonInfo::AT_EnumExtensibility; // "clang::enum_extensibility"
4254 case 'i': // 1 string to match.
4255 if (memcmp(Name.data()+8, "boutletcollection", 17) != 0)
4256 break;
4257 return AttributeCommonInfo::AT_IBOutletCollection; // "clang::iboutletcollection"
4258 case 'm': // 1 string to match.
4259 if (memcmp(Name.data()+8, "ig_server_routine", 17) != 0)
4260 break;
4261 return AttributeCommonInfo::AT_MIGServerRoutine; // "clang::mig_server_routine"
4262 case 'n': // 3 strings to match.
4263 if (memcmp(Name.data()+8, "o_s", 3) != 0)
4264 break;
4265 switch (Name[11]) {
4266 default: break;
4267 case 'a': // 1 string to match.
4268 if (memcmp(Name.data()+12, "nitize_memory", 13) != 0)
4269 break;
4270 return AttributeCommonInfo::AT_NoSanitizeSpecific; // "clang::no_sanitize_memory"
4271 case 'p': // 1 string to match.
4272 if (memcmp(Name.data()+12, "ecializations", 13) != 0)
4273 break;
4274 return AttributeCommonInfo::AT_NoSpecializations; // "clang::no_specializations"
4275 case 't': // 1 string to match.
4276 if (memcmp(Name.data()+12, "ack_protector", 13) != 0)
4277 break;
4278 return AttributeCommonInfo::AT_NoStackProtector; // "clang::no_stack_protector"
4279 }
4280 break;
4281 case 'o': // 3 strings to match.
4282 switch (Name[8]) {
4283 default: break;
4284 case 'b': // 2 strings to match.
4285 if (memcmp(Name.data()+9, "jc_", 3) != 0)
4286 break;
4287 switch (Name[12]) {
4288 default: break;
4289 case 'm': // 1 string to match.
4290 if (memcmp(Name.data()+13, "ethod_family", 12) != 0)
4291 break;
4292 return AttributeCommonInfo::AT_ObjCMethodFamily; // "clang::objc_method_family"
4293 case 'n': // 1 string to match.
4294 if (memcmp(Name.data()+13, "onlazy_class", 12) != 0)
4295 break;
4296 return AttributeCommonInfo::AT_ObjCNonLazyClass; // "clang::objc_nonlazy_class"
4297 }
4298 break;
4299 case 'p': // 1 string to match.
4300 if (memcmp(Name.data()+9, "encl_global_host", 16) != 0)
4301 break;
4302 return AttributeCommonInfo::AT_OpenCLGlobalHostAddressSpace; // "clang::opencl_global_host"
4303 }
4304 break;
4305 case 'r': // 1 string to match.
4306 if (memcmp(Name.data()+8, "elease_capability", 17) != 0)
4307 break;
4308 return AttributeCommonInfo::AT_ReleaseCapability; // "clang::release_capability"
4309 case 's': // 2 strings to match.
4310 switch (Name[8]) {
4311 default: break;
4312 case 'w': // 1 string to match.
4313 if (memcmp(Name.data()+9, "ift_error_result", 16) != 0)
4314 break;
4315 return AttributeCommonInfo::AT_SwiftErrorResult; // "clang::swift_error_result"
4316 case 'y': // 1 string to match.
4317 if (memcmp(Name.data()+9, "cl_special_class", 16) != 0)
4318 break;
4319 return AttributeCommonInfo::AT_SYCLSpecialClass; // "clang::sycl_special_class"
4320 }
4321 break;
4322 case 'w': // 1 string to match.
4323 if (memcmp(Name.data()+8, "arn_unused_result", 17) != 0)
4324 break;
4325 return AttributeCommonInfo::AT_WarnUnusedResult; // "clang::warn_unused_result"
4326 }
4327 break;
4328 case 26: // 16 strings to match.
4329 if (memcmp(Name.data()+0, "clang::", 7) != 0)
4330 break;
4331 switch (Name[7]) {
4332 default: break;
4333 case 'a': // 1 string to match.
4334 if (memcmp(Name.data()+8, "mdgpu_waves_per_eu", 18) != 0)
4335 break;
4336 return AttributeCommonInfo::AT_AMDGPUWavesPerEU; // "clang::amdgpu_waves_per_eu"
4337 case 'c': // 4 strings to match.
4338 switch (Name[8]) {
4339 default: break;
4340 case 'f': // 3 strings to match.
4341 if (Name[9] != '_')
4342 break;
4343 switch (Name[10]) {
4344 default: break;
4345 case 'a': // 1 string to match.
4346 if (memcmp(Name.data()+11, "udited_transfer", 15) != 0)
4347 break;
4348 return AttributeCommonInfo::AT_CFAuditedTransfer; // "clang::cf_audited_transfer"
4349 case 'r': // 1 string to match.
4350 if (memcmp(Name.data()+11, "eturns_retained", 15) != 0)
4351 break;
4352 return AttributeCommonInfo::AT_CFReturnsRetained; // "clang::cf_returns_retained"
4353 case 'u': // 1 string to match.
4354 if (memcmp(Name.data()+11, "nknown_transfer", 15) != 0)
4355 break;
4356 return AttributeCommonInfo::AT_CFUnknownTransfer; // "clang::cf_unknown_transfer"
4357 }
4358 break;
4359 case 'o': // 1 string to match.
4360 if (memcmp(Name.data()+9, "ro_await_elidable", 17) != 0)
4361 break;
4362 return AttributeCommonInfo::AT_CoroAwaitElidable; // "clang::coro_await_elidable"
4363 }
4364 break;
4365 case 'd': // 1 string to match.
4366 if (memcmp(Name.data()+8, "iagnose_as_builtin", 18) != 0)
4367 break;
4368 return AttributeCommonInfo::AT_DiagnoseAsBuiltin; // "clang::diagnose_as_builtin"
4369 case 'l': // 1 string to match.
4370 if (memcmp(Name.data()+8, "ifetime_capture_by", 18) != 0)
4371 break;
4372 return AttributeCommonInfo::AT_LifetimeCaptureBy; // "clang::lifetime_capture_by"
4373 case 'n': // 1 string to match.
4374 if (memcmp(Name.data()+8, "s_returns_retained", 18) != 0)
4375 break;
4376 return AttributeCommonInfo::AT_NSReturnsRetained; // "clang::ns_returns_retained"
4377 case 'o': // 5 strings to match.
4378 switch (Name[8]) {
4379 default: break;
4380 case 'b': // 4 strings to match.
4381 if (memcmp(Name.data()+9, "jc_", 3) != 0)
4382 break;
4383 switch (Name[12]) {
4384 default: break;
4385 case 'b': // 2 strings to match.
4386 if (memcmp(Name.data()+13, "ridge_", 6) != 0)
4387 break;
4388 switch (Name[19]) {
4389 default: break;
4390 case 'm': // 1 string to match.
4391 if (memcmp(Name.data()+20, "utable", 6) != 0)
4392 break;
4393 return AttributeCommonInfo::AT_ObjCBridgeMutable; // "clang::objc_bridge_mutable"
4394 case 'r': // 1 string to match.
4395 if (memcmp(Name.data()+20, "elated", 6) != 0)
4396 break;
4397 return AttributeCommonInfo::AT_ObjCBridgeRelated; // "clang::objc_bridge_related"
4398 }
4399 break;
4400 case 'd': // 1 string to match.
4401 if (memcmp(Name.data()+13, "irect_members", 13) != 0)
4402 break;
4403 return AttributeCommonInfo::AT_ObjCDirectMembers; // "clang::objc_direct_members"
4404 case 'r': // 1 string to match.
4405 if (memcmp(Name.data()+13, "equires_super", 13) != 0)
4406 break;
4407 return AttributeCommonInfo::AT_ObjCRequiresSuper; // "clang::objc_requires_super"
4408 }
4409 break;
4410 case 's': // 1 string to match.
4411 if (memcmp(Name.data()+9, "_returns_retained", 17) != 0)
4412 break;
4413 return AttributeCommonInfo::AT_OSReturnsRetained; // "clang::os_returns_retained"
4414 }
4415 break;
4416 case 'r': // 1 string to match.
4417 if (memcmp(Name.data()+8, "equires_capability", 18) != 0)
4418 break;
4419 return AttributeCommonInfo::AT_RequiresCapability; // "clang::requires_capability"
4420 case 's': // 1 string to match.
4421 if (memcmp(Name.data()+8, "wift_async_context", 18) != 0)
4422 break;
4423 return AttributeCommonInfo::AT_SwiftAsyncContext; // "clang::swift_async_context"
4424 case 'u': // 1 string to match.
4425 if (memcmp(Name.data()+8, "nsafe_buffer_usage", 18) != 0)
4426 break;
4427 return AttributeCommonInfo::AT_UnsafeBufferUsage; // "clang::unsafe_buffer_usage"
4428 }
4429 break;
4430 case 27: // 6 strings to match.
4431 switch (Name[0]) {
4432 default: break;
4433 case 'c': // 5 strings to match.
4434 if (memcmp(Name.data()+1, "lang::", 6) != 0)
4435 break;
4436 switch (Name[7]) {
4437 default: break;
4438 case 'c': // 1 string to match.
4439 if (memcmp(Name.data()+8, "lspv_libclc_builtin", 19) != 0)
4440 break;
4441 return AttributeCommonInfo::AT_ClspvLibclcBuiltin; // "clang::clspv_libclc_builtin"
4442 case 'l': // 1 string to match.
4443 if (memcmp(Name.data()+8, "oader_uninitialized", 19) != 0)
4444 break;
4445 return AttributeCommonInfo::AT_LoaderUninitialized; // "clang::loader_uninitialized"
4446 case 'n': // 1 string to match.
4447 if (memcmp(Name.data()+8, "eon_polyvector_type", 19) != 0)
4448 break;
4449 return AttributeCommonInfo::AT_NeonPolyVectorType; // "clang::neon_polyvector_type"
4450 case 'o': // 2 strings to match.
4451 switch (Name[8]) {
4452 default: break;
4453 case 'b': // 1 string to match.
4454 if (memcmp(Name.data()+9, "jc_runtime_visible", 18) != 0)
4455 break;
4456 return AttributeCommonInfo::AT_ObjCRuntimeVisible; // "clang::objc_runtime_visible"
4457 case 'p': // 1 string to match.
4458 if (memcmp(Name.data()+9, "encl_global_device", 18) != 0)
4459 break;
4460 return AttributeCommonInfo::AT_OpenCLGlobalDeviceAddressSpace; // "clang::opencl_global_device"
4461 }
4462 break;
4463 }
4464 break;
4465 case 'g': // 1 string to match.
4466 if (memcmp(Name.data()+1, "nu::no_instrument_function", 26) != 0)
4467 break;
4468 return AttributeCommonInfo::AT_NoInstrumentFunction; // "gnu::no_instrument_function"
4469 }
4470 break;
4471 case 28: // 9 strings to match.
4472 switch (Name[0]) {
4473 default: break;
4474 case 'c': // 8 strings to match.
4475 if (memcmp(Name.data()+1, "lang::", 6) != 0)
4476 break;
4477 switch (Name[7]) {
4478 default: break;
4479 case 'l': // 1 string to match.
4480 if (memcmp(Name.data()+8, "to_visibility_public", 20) != 0)
4481 break;
4482 return AttributeCommonInfo::AT_LTOVisibilityPublic; // "clang::lto_visibility_public"
4483 case 'o': // 1 string to match.
4484 if (memcmp(Name.data()+8, "bjc_precise_lifetime", 20) != 0)
4485 break;
4486 return AttributeCommonInfo::AT_ObjCPreciseLifetime; // "clang::objc_precise_lifetime"
4487 case 'p': // 2 strings to match.
4488 switch (Name[8]) {
4489 default: break;
4490 case 'o': // 1 string to match.
4491 if (memcmp(Name.data()+9, "inter_with_type_tag", 19) != 0)
4492 break;
4493 return AttributeCommonInfo::AT_ArgumentWithTypeTag; // "clang::pointer_with_type_tag"
4494 case 'r': // 1 string to match.
4495 if (memcmp(Name.data()+9, "eserve_access_index", 19) != 0)
4496 break;
4497 return AttributeCommonInfo::AT_BPFPreserveAccessIndex; // "clang::preserve_access_index"
4498 }
4499 break;
4500 case 's': // 2 strings to match.
4501 switch (Name[8]) {
4502 default: break;
4503 case 'h': // 1 string to match.
4504 if (memcmp(Name.data()+9, "ared_locks_required", 19) != 0)
4505 break;
4506 return AttributeCommonInfo::AT_RequiresCapability; // "clang::shared_locks_required"
4507 case 'w': // 1 string to match.
4508 if (memcmp(Name.data()+9, "ift_indirect_result", 19) != 0)
4509 break;
4510 return AttributeCommonInfo::AT_SwiftIndirectResult; // "clang::swift_indirect_result"
4511 }
4512 break;
4513 case 't': // 1 string to match.
4514 if (memcmp(Name.data()+8, "ype_tag_for_datatype", 20) != 0)
4515 break;
4516 return AttributeCommonInfo::AT_TypeTagForDatatype; // "clang::type_tag_for_datatype"
4517 case 'x': // 1 string to match.
4518 if (memcmp(Name.data()+8, "ray_never_instrument", 20) != 0)
4519 break;
4520 return AttributeCommonInfo::AT_XRayInstrument; // "clang::xray_never_instrument"
4521 }
4522 break;
4523 case 'g': // 1 string to match.
4524 if (memcmp(Name.data()+1, "nu::force_align_arg_pointer", 27) != 0)
4525 break;
4526 return AttributeCommonInfo::AT_X86ForceAlignArgPointer; // "gnu::force_align_arg_pointer"
4527 }
4528 break;
4529 case 29: // 8 strings to match.
4530 switch (Name[0]) {
4531 default: break;
4532 case 'c': // 7 strings to match.
4533 if (memcmp(Name.data()+1, "lang::", 6) != 0)
4534 break;
4535 switch (Name[7]) {
4536 default: break;
4537 case 'a': // 1 string to match.
4538 if (memcmp(Name.data()+8, "rgument_with_type_tag", 21) != 0)
4539 break;
4540 return AttributeCommonInfo::AT_ArgumentWithTypeTag; // "clang::argument_with_type_tag"
4541 case 'e': // 1 string to match.
4542 if (memcmp(Name.data()+8, "xternal_source_symbol", 21) != 0)
4543 break;
4544 return AttributeCommonInfo::AT_ExternalSourceSymbol; // "clang::external_source_symbol"
4545 case 'o': // 1 string to match.
4546 if (memcmp(Name.data()+8, "bjc_independent_class", 21) != 0)
4547 break;
4548 return AttributeCommonInfo::AT_ObjCIndependentClass; // "clang::objc_independent_class"
4549 case 'p': // 2 strings to match.
4550 switch (Name[8]) {
4551 default: break;
4552 case 'r': // 1 string to match.
4553 if (memcmp(Name.data()+9, "eserve_static_offset", 20) != 0)
4554 break;
4555 return AttributeCommonInfo::AT_BPFPreserveStaticOffset; // "clang::preserve_static_offset"
4556 case 't': // 1 string to match.
4557 if (memcmp(Name.data()+9, "rauth_vtable_pointer", 20) != 0)
4558 break;
4559 return AttributeCommonInfo::AT_VTablePointerAuthentication; // "clang::ptrauth_vtable_pointer"
4560 }
4561 break;
4562 case 't': // 1 string to match.
4563 if (memcmp(Name.data()+8, "ry_acquire_capability", 21) != 0)
4564 break;
4565 return AttributeCommonInfo::AT_TryAcquireCapability; // "clang::try_acquire_capability"
4566 case 'x': // 1 string to match.
4567 if (memcmp(Name.data()+8, "ray_always_instrument", 21) != 0)
4568 break;
4569 return AttributeCommonInfo::AT_XRayInstrument; // "clang::xray_always_instrument"
4570 }
4571 break;
4572 case 'g': // 1 string to match.
4573 if (memcmp(Name.data()+1, "nu::patchable_function_entry", 28) != 0)
4574 break;
4575 return AttributeCommonInfo::AT_PatchableFunctionEntry; // "gnu::patchable_function_entry"
4576 }
4577 break;
4578 case 30: // 6 strings to match.
4579 switch (Name[0]) {
4580 default: break;
4581 case 'c': // 5 strings to match.
4582 if (memcmp(Name.data()+1, "lang::", 6) != 0)
4583 break;
4584 switch (Name[7]) {
4585 default: break;
4586 case 'c': // 1 string to match.
4587 if (memcmp(Name.data()+8, "f_returns_not_retained", 22) != 0)
4588 break;
4589 return AttributeCommonInfo::AT_CFReturnsNotRetained; // "clang::cf_returns_not_retained"
4590 case 'n': // 2 strings to match.
4591 if (memcmp(Name.data()+8, "s_returns_", 10) != 0)
4592 break;
4593 switch (Name[18]) {
4594 default: break;
4595 case 'a': // 1 string to match.
4596 if (memcmp(Name.data()+19, "utoreleased", 11) != 0)
4597 break;
4598 return AttributeCommonInfo::AT_NSReturnsAutoreleased; // "clang::ns_returns_autoreleased"
4599 case 'n': // 1 string to match.
4600 if (memcmp(Name.data()+19, "ot_retained", 11) != 0)
4601 break;
4602 return AttributeCommonInfo::AT_NSReturnsNotRetained; // "clang::ns_returns_not_retained"
4603 }
4604 break;
4605 case 'o': // 1 string to match.
4606 if (memcmp(Name.data()+8, "s_returns_not_retained", 22) != 0)
4607 break;
4608 return AttributeCommonInfo::AT_OSReturnsNotRetained; // "clang::os_returns_not_retained"
4609 case 's': // 1 string to match.
4610 if (memcmp(Name.data()+8, "ycl_kernel_entry_point", 22) != 0)
4611 break;
4612 return AttributeCommonInfo::AT_SYCLKernelEntryPoint; // "clang::sycl_kernel_entry_point"
4613 }
4614 break;
4615 case 'g': // 1 string to match.
4616 if (memcmp(Name.data()+1, "nu::no_caller_saved_registers", 29) != 0)
4617 break;
4618 return AttributeCommonInfo::AT_AnyX86NoCallerSavedRegisters; // "gnu::no_caller_saved_registers"
4619 }
4620 break;
4621 case 31: // 6 strings to match.
4622 switch (Name[0]) {
4623 default: break;
4624 case 'c': // 5 strings to match.
4625 if (memcmp(Name.data()+1, "lang::", 6) != 0)
4626 break;
4627 switch (Name[7]) {
4628 default: break;
4629 case 'a': // 1 string to match.
4630 if (memcmp(Name.data()+8, "ssert_shared_capability", 23) != 0)
4631 break;
4632 return AttributeCommonInfo::AT_AssertCapability; // "clang::assert_shared_capability"
4633 case 'c': // 1 string to match.
4634 if (memcmp(Name.data()+8, "fi_canonical_jump_table", 23) != 0)
4635 break;
4636 return AttributeCommonInfo::AT_CFICanonicalJumpTable; // "clang::cfi_canonical_jump_table"
4637 case 'e': // 1 string to match.
4638 if (memcmp(Name.data()+8, "xclusive_locks_required", 23) != 0)
4639 break;
4640 return AttributeCommonInfo::AT_RequiresCapability; // "clang::exclusive_locks_required"
4641 case 'o': // 1 string to match.
4642 if (memcmp(Name.data()+8, "bjc_externally_retained", 23) != 0)
4643 break;
4644 return AttributeCommonInfo::AT_ObjCExternallyRetained; // "clang::objc_externally_retained"
4645 case 'p': // 1 string to match.
4646 if (memcmp(Name.data()+8, "ass_dynamic_object_size", 23) != 0)
4647 break;
4648 return AttributeCommonInfo::AT_PassObjectSize; // "clang::pass_dynamic_object_size"
4649 }
4650 break;
4651 case 'g': // 1 string to match.
4652 if (memcmp(Name.data()+1, "nu::no_address_safety_analysis", 30) != 0)
4653 break;
4654 return AttributeCommonInfo::AT_NoSanitizeSpecific; // "gnu::no_address_safety_analysis"
4655 }
4656 break;
4657 case 32: // 5 strings to match.
4658 if (memcmp(Name.data()+0, "clang::", 7) != 0)
4659 break;
4660 switch (Name[7]) {
4661 default: break;
4662 case '_': // 1 string to match.
4663 if (memcmp(Name.data()+8, "_clang_arm_builtin_alias", 24) != 0)
4664 break;
4665 return AttributeCommonInfo::AT_ArmBuiltinAlias; // "clang::__clang_arm_builtin_alias"
4666 case 'a': // 1 string to match.
4667 if (memcmp(Name.data()+8, "cquire_shared_capability", 24) != 0)
4668 break;
4669 return AttributeCommonInfo::AT_AcquireCapability; // "clang::acquire_shared_capability"
4670 case 'n': // 1 string to match.
4671 if (memcmp(Name.data()+8, "o_thread_safety_analysis", 24) != 0)
4672 break;
4673 return AttributeCommonInfo::AT_NoThreadSafetyAnalysis; // "clang::no_thread_safety_analysis"
4674 case 'o': // 1 string to match.
4675 if (memcmp(Name.data()+8, "bjc_non_runtime_protocol", 24) != 0)
4676 break;
4677 return AttributeCommonInfo::AT_ObjCNonRuntimeProtocol; // "clang::objc_non_runtime_protocol"
4678 case 'r': // 1 string to match.
4679 if (memcmp(Name.data()+8, "elease_shared_capability", 24) != 0)
4680 break;
4681 return AttributeCommonInfo::AT_ReleaseCapability; // "clang::release_shared_capability"
4682 }
4683 break;
4684 case 33: // 7 strings to match.
4685 if (memcmp(Name.data()+0, "clang::", 7) != 0)
4686 break;
4687 switch (Name[7]) {
4688 default: break;
4689 case 'a': // 1 string to match.
4690 if (memcmp(Name.data()+8, "mdgpu_max_num_work_groups", 25) != 0)
4691 break;
4692 return AttributeCommonInfo::AT_AMDGPUMaxNumWorkGroups; // "clang::amdgpu_max_num_work_groups"
4693 case 'c': // 2 strings to match.
4694 if (Name[8] != 'o')
4695 break;
4696 switch (Name[9]) {
4697 default: break;
4698 case 'n': // 1 string to match.
4699 if (memcmp(Name.data()+10, "sumable_auto_cast_state", 23) != 0)
4700 break;
4701 return AttributeCommonInfo::AT_ConsumableAutoCast; // "clang::consumable_auto_cast_state"
4702 case 'r': // 1 string to match.
4703 if (memcmp(Name.data()+10, "o_disable_lifetimebound", 23) != 0)
4704 break;
4705 return AttributeCommonInfo::AT_CoroDisableLifetimeBound; // "clang::coro_disable_lifetimebound"
4706 }
4707 break;
4708 case 'o': // 1 string to match.
4709 if (memcmp(Name.data()+8, "bjc_returns_inner_pointer", 25) != 0)
4710 break;
4711 return AttributeCommonInfo::AT_ObjCReturnsInnerPointer; // "clang::objc_returns_inner_pointer"
4712 case 'r': // 2 strings to match.
4713 if (Name[8] != 'e')
4714 break;
4715 switch (Name[9]) {
4716 default: break;
4717 case 'l': // 1 string to match.
4718 if (memcmp(Name.data()+10, "ease_generic_capability", 23) != 0)
4719 break;
4720 return AttributeCommonInfo::AT_ReleaseCapability; // "clang::release_generic_capability"
4721 case 'q': // 1 string to match.
4722 if (memcmp(Name.data()+10, "uires_shared_capability", 23) != 0)
4723 break;
4724 return AttributeCommonInfo::AT_RequiresCapability; // "clang::requires_shared_capability"
4725 }
4726 break;
4727 case 's': // 1 string to match.
4728 if (memcmp(Name.data()+8, "peculative_load_hardening", 25) != 0)
4729 break;
4730 return AttributeCommonInfo::AT_SpeculativeLoadHardening; // "clang::speculative_load_hardening"
4731 }
4732 break;
4733 case 34: // 5 strings to match.
4734 if (memcmp(Name.data()+0, "clang::", 7) != 0)
4735 break;
4736 switch (Name[7]) {
4737 default: break;
4738 case 'a': // 1 string to match.
4739 if (memcmp(Name.data()+8, "mdgpu_flat_work_group_size", 26) != 0)
4740 break;
4741 return AttributeCommonInfo::AT_AMDGPUFlatWorkGroupSize; // "clang::amdgpu_flat_work_group_size"
4742 case 'e': // 1 string to match.
4743 if (memcmp(Name.data()+8, "nforce_read_only_placement", 26) != 0)
4744 break;
4745 return AttributeCommonInfo::AT_ReadOnlyPlacement; // "clang::enforce_read_only_placement"
4746 case 'o': // 3 strings to match.
4747 switch (Name[8]) {
4748 default: break;
4749 case 'b': // 2 strings to match.
4750 if (memcmp(Name.data()+9, "jc_", 3) != 0)
4751 break;
4752 switch (Name[12]) {
4753 default: break;
4754 case 'd': // 1 string to match.
4755 if (memcmp(Name.data()+13, "esignated_initializer", 21) != 0)
4756 break;
4757 return AttributeCommonInfo::AT_ObjCDesignatedInitializer; // "clang::objc_designated_initializer"
4758 case 's': // 1 string to match.
4759 if (memcmp(Name.data()+13, "ubclassing_restricted", 21) != 0)
4760 break;
4761 return AttributeCommonInfo::AT_ObjCSubclassingRestricted; // "clang::objc_subclassing_restricted"
4762 }
4763 break;
4764 case 's': // 1 string to match.
4765 if (memcmp(Name.data()+9, "_returns_retained_on_zero", 25) != 0)
4766 break;
4767 return AttributeCommonInfo::AT_OSReturnsRetainedOnZero; // "clang::os_returns_retained_on_zero"
4768 }
4769 break;
4770 }
4771 break;
4772 case 35: // 3 strings to match.
4773 switch (Name[0]) {
4774 default: break;
4775 case 'c': // 2 strings to match.
4776 if (memcmp(Name.data()+1, "lang::co", 8) != 0)
4777 break;
4778 switch (Name[9]) {
4779 default: break;
4780 case 'n': // 1 string to match.
4781 if (memcmp(Name.data()+10, "sumable_set_state_on_read", 25) != 0)
4782 break;
4783 return AttributeCommonInfo::AT_ConsumableSetOnRead; // "clang::consumable_set_state_on_read"
4784 case 'r': // 1 string to match.
4785 if (memcmp(Name.data()+10, "o_await_elidable_argument", 25) != 0)
4786 break;
4787 return AttributeCommonInfo::AT_CoroAwaitElidableArgument; // "clang::coro_await_elidable_argument"
4788 }
4789 break;
4790 case 'g': // 1 string to match.
4791 if (memcmp(Name.data()+1, "nu::no_profile_instrument_function", 34) != 0)
4792 break;
4793 return AttributeCommonInfo::AT_NoProfileFunction; // "gnu::no_profile_instrument_function"
4794 }
4795 break;
4796 case 36: // 2 strings to match.
4797 if (memcmp(Name.data()+0, "clang::", 7) != 0)
4798 break;
4799 switch (Name[7]) {
4800 default: break;
4801 case 'n': // 1 string to match.
4802 if (memcmp(Name.data()+8, "o_speculative_load_hardening", 28) != 0)
4803 break;
4804 return AttributeCommonInfo::AT_NoSpeculativeLoadHardening; // "clang::no_speculative_load_hardening"
4805 case 't': // 1 string to match.
4806 if (memcmp(Name.data()+8, "ry_acquire_shared_capability", 28) != 0)
4807 break;
4808 return AttributeCommonInfo::AT_TryAcquireCapability; // "clang::try_acquire_shared_capability"
4809 }
4810 break;
4811 case 38: // 4 strings to match.
4812 if (memcmp(Name.data()+0, "clang::", 7) != 0)
4813 break;
4814 switch (Name[7]) {
4815 default: break;
4816 case 'c': // 1 string to match.
4817 if (memcmp(Name.data()+8, "oro_only_destroy_when_complete", 30) != 0)
4818 break;
4819 return AttributeCommonInfo::AT_CoroOnlyDestroyWhenComplete; // "clang::coro_only_destroy_when_complete"
4820 case 'o': // 1 string to match.
4821 if (memcmp(Name.data()+8, "s_returns_retained_on_non_zero", 30) != 0)
4822 break;
4823 return AttributeCommonInfo::AT_OSReturnsRetainedOnNonZero; // "clang::os_returns_retained_on_non_zero"
4824 case 'r': // 2 strings to match.
4825 if (memcmp(Name.data()+8, "equire_", 7) != 0)
4826 break;
4827 switch (Name[15]) {
4828 default: break;
4829 case 'c': // 1 string to match.
4830 if (memcmp(Name.data()+16, "onstant_initialization", 22) != 0)
4831 break;
4832 return AttributeCommonInfo::AT_ConstInit; // "clang::require_constant_initialization"
4833 case 'e': // 1 string to match.
4834 if (memcmp(Name.data()+16, "xplicit_initialization", 22) != 0)
4835 break;
4836 return AttributeCommonInfo::AT_ExplicitInit; // "clang::require_explicit_initialization"
4837 }
4838 break;
4839 }
4840 break;
4841 case 40: // 1 string to match.
4842 if (memcmp(Name.data()+0, "clang::disable_sanitizer_instrumentation", 40) != 0)
4843 break;
4844 return AttributeCommonInfo::AT_DisableSanitizerInstrumentation; // "clang::disable_sanitizer_instrumentation"
4845 case 41: // 1 string to match.
4846 if (memcmp(Name.data()+0, "clang::objc_requires_property_definitions", 41) != 0)
4847 break;
4848 return AttributeCommonInfo::AT_ObjCRequiresPropertyDefs; // "clang::objc_requires_property_definitions"
4849 case 42: // 3 strings to match.
4850 if (memcmp(Name.data()+0, "clang::", 7) != 0)
4851 break;
4852 switch (Name[7]) {
4853 default: break;
4854 case '_': // 1 string to match.
4855 if (memcmp(Name.data()+8, "_clang_arm_mve_strict_polymorphism", 34) != 0)
4856 break;
4857 return AttributeCommonInfo::AT_ArmMveStrictPolymorphism; // "clang::__clang_arm_mve_strict_polymorphism"
4858 case 'e': // 1 string to match.
4859 if (memcmp(Name.data()+8, "xclude_from_explicit_instantiation", 34) != 0)
4860 break;
4861 return AttributeCommonInfo::AT_ExcludeFromExplicitInstantiation; // "clang::exclude_from_explicit_instantiation"
4862 case 'o': // 1 string to match.
4863 if (memcmp(Name.data()+8, "bjc_arc_weak_reference_unavailable", 34) != 0)
4864 break;
4865 return AttributeCommonInfo::AT_ArcWeakrefUnavailable; // "clang::objc_arc_weak_reference_unavailable"
4866 }
4867 break;
4868 case 44: // 1 string to match.
4869 if (memcmp(Name.data()+0, "clang::available_only_in_default_eval_method", 44) != 0)
4870 break;
4871 return AttributeCommonInfo::AT_AvailableOnlyInDefaultEvalMethod; // "clang::available_only_in_default_eval_method"
4872 case 53: // 1 string to match.
4873 if (memcmp(Name.data()+0, "clang::objc_protocol_requires_explicit_implementation", 53) != 0)
4874 break;
4875 return AttributeCommonInfo::AT_ObjCExplicitProtocolImpl; // "clang::objc_protocol_requires_explicit_implementation"
4876 }
4877 } else if (AttributeCommonInfo::AS_C23 == Syntax) {
4878 switch (Name.size()) {
4879 default: break;
4880 case 8: // 4 strings to match.
4881 switch (Name[0]) {
4882 default: break;
4883 case 'g': // 3 strings to match.
4884 if (memcmp(Name.data()+1, "nu::", 4) != 0)
4885 break;
4886 switch (Name[5]) {
4887 default: break;
4888 case 'f': // 1 string to match.
4889 if (memcmp(Name.data()+6, "ar", 2) != 0)
4890 break;
4891 return AttributeCommonInfo::AT_MipsLongCall; // "gnu::far"
4892 case 'h': // 1 string to match.
4893 if (memcmp(Name.data()+6, "ot", 2) != 0)
4894 break;
4895 return AttributeCommonInfo::AT_Hot; // "gnu::hot"
4896 case 'p': // 1 string to match.
4897 if (memcmp(Name.data()+6, "cs", 2) != 0)
4898 break;
4899 return AttributeCommonInfo::AT_Pcs; // "gnu::pcs"
4900 }
4901 break;
4902 case 'n': // 1 string to match.
4903 if (memcmp(Name.data()+1, "oreturn", 7) != 0)
4904 break;
4905 return AttributeCommonInfo::AT_CXX11NoReturn; // "noreturn"
4906 }
4907 break;
4908 case 9: // 9 strings to match.
4909 switch (Name[0]) {
4910 default: break;
4911 case '_': // 1 string to match.
4912 if (memcmp(Name.data()+1, "Noreturn", 8) != 0)
4913 break;
4914 return AttributeCommonInfo::AT_CXX11NoReturn; // "_Noreturn"
4915 case 'g': // 7 strings to match.
4916 if (memcmp(Name.data()+1, "nu::", 4) != 0)
4917 break;
4918 switch (Name[5]) {
4919 default: break;
4920 case 'c': // 1 string to match.
4921 if (memcmp(Name.data()+6, "old", 3) != 0)
4922 break;
4923 return AttributeCommonInfo::AT_Cold; // "gnu::cold"
4924 case 'l': // 1 string to match.
4925 if (memcmp(Name.data()+6, "eaf", 3) != 0)
4926 break;
4927 return AttributeCommonInfo::AT_Leaf; // "gnu::leaf"
4928 case 'm': // 1 string to match.
4929 if (memcmp(Name.data()+6, "ode", 3) != 0)
4930 break;
4931 return AttributeCommonInfo::AT_Mode; // "gnu::mode"
4932 case 'n': // 1 string to match.
4933 if (memcmp(Name.data()+6, "ear", 3) != 0)
4934 break;
4935 return AttributeCommonInfo::AT_MipsShortCall; // "gnu::near"
4936 case 'p': // 1 string to match.
4937 if (memcmp(Name.data()+6, "ure", 3) != 0)
4938 break;
4939 return AttributeCommonInfo::AT_Pure; // "gnu::pure"
4940 case 'u': // 1 string to match.
4941 if (memcmp(Name.data()+6, "sed", 3) != 0)
4942 break;
4943 return AttributeCommonInfo::AT_Used; // "gnu::used"
4944 case 'w': // 1 string to match.
4945 if (memcmp(Name.data()+6, "eak", 3) != 0)
4946 break;
4947 return AttributeCommonInfo::AT_Weak; // "gnu::weak"
4948 }
4949 break;
4950 case 'n': // 1 string to match.
4951 if (memcmp(Name.data()+1, "odiscard", 8) != 0)
4952 break;
4953 return AttributeCommonInfo::AT_WarnUnusedResult; // "nodiscard"
4954 }
4955 break;
4956 case 10: // 8 strings to match.
4957 switch (Name[0]) {
4958 default: break;
4959 case 'd': // 1 string to match.
4960 if (memcmp(Name.data()+1, "eprecated", 9) != 0)
4961 break;
4962 return AttributeCommonInfo::AT_Deprecated; // "deprecated"
4963 case 'g': // 7 strings to match.
4964 if (memcmp(Name.data()+1, "nu::", 4) != 0)
4965 break;
4966 switch (Name[5]) {
4967 default: break;
4968 case 'a': // 1 string to match.
4969 if (memcmp(Name.data()+6, "lias", 4) != 0)
4970 break;
4971 return AttributeCommonInfo::AT_Alias; // "gnu::alias"
4972 case 'c': // 2 strings to match.
4973 switch (Name[6]) {
4974 default: break;
4975 case 'd': // 1 string to match.
4976 if (memcmp(Name.data()+7, "ecl", 3) != 0)
4977 break;
4978 return AttributeCommonInfo::AT_CDecl; // "gnu::cdecl"
4979 case 'o': // 1 string to match.
4980 if (memcmp(Name.data()+7, "nst", 3) != 0)
4981 break;
4982 return AttributeCommonInfo::AT_Const; // "gnu::const"
4983 }
4984 break;
4985 case 'e': // 1 string to match.
4986 if (memcmp(Name.data()+6, "rror", 4) != 0)
4987 break;
4988 return AttributeCommonInfo::AT_Error; // "gnu::error"
4989 case 'i': // 1 string to match.
4990 if (memcmp(Name.data()+6, "func", 4) != 0)
4991 break;
4992 return AttributeCommonInfo::AT_IFunc; // "gnu::ifunc"
4993 case 'm': // 1 string to match.
4994 if (memcmp(Name.data()+6, "odel", 4) != 0)
4995 break;
4996 return AttributeCommonInfo::AT_CodeModel; // "gnu::model"
4997 case 'n': // 1 string to match.
4998 if (memcmp(Name.data()+6, "aked", 4) != 0)
4999 break;
5000 return AttributeCommonInfo::AT_Naked; // "gnu::naked"
5001 }
5002 break;
5003 }
5004 break;
5005 case 11: // 11 strings to match.
5006 switch (Name[0]) {
5007 default: break;
5008 case 'f': // 1 string to match.
5009 if (memcmp(Name.data()+1, "allthrough", 10) != 0)
5010 break;
5011 return AttributeCommonInfo::AT_FallThrough; // "fallthrough"
5012 case 'g': // 10 strings to match.
5013 if (memcmp(Name.data()+1, "nu::", 4) != 0)
5014 break;
5015 switch (Name[5]) {
5016 default: break;
5017 case 'c': // 1 string to match.
5018 if (memcmp(Name.data()+6, "ommon", 5) != 0)
5019 break;
5020 return AttributeCommonInfo::AT_Common; // "gnu::common"
5021 case 'f': // 1 string to match.
5022 if (memcmp(Name.data()+6, "ormat", 5) != 0)
5023 break;
5024 return AttributeCommonInfo::AT_Format; // "gnu::format"
5025 case 'm': // 3 strings to match.
5026 switch (Name[6]) {
5027 default: break;
5028 case 'a': // 1 string to match.
5029 if (memcmp(Name.data()+7, "lloc", 4) != 0)
5030 break;
5031 return AttributeCommonInfo::AT_Restrict; // "gnu::malloc"
5032 case 'i': // 1 string to match.
5033 if (memcmp(Name.data()+7, "ps16", 4) != 0)
5034 break;
5035 return AttributeCommonInfo::AT_Mips16; // "gnu::mips16"
5036 case 's': // 1 string to match.
5037 if (memcmp(Name.data()+7, "_abi", 4) != 0)
5038 break;
5039 return AttributeCommonInfo::AT_MSABI; // "gnu::ms_abi"
5040 }
5041 break;
5042 case 'p': // 1 string to match.
5043 if (memcmp(Name.data()+6, "acked", 5) != 0)
5044 break;
5045 return AttributeCommonInfo::AT_Packed; // "gnu::packed"
5046 case 'r': // 1 string to match.
5047 if (memcmp(Name.data()+6, "etain", 5) != 0)
5048 break;
5049 return AttributeCommonInfo::AT_Retain; // "gnu::retain"
5050 case 's': // 1 string to match.
5051 if (memcmp(Name.data()+6, "ignal", 5) != 0)
5052 break;
5053 return AttributeCommonInfo::AT_AVRSignal; // "gnu::signal"
5054 case 't': // 1 string to match.
5055 if (memcmp(Name.data()+6, "arget", 5) != 0)
5056 break;
5057 return AttributeCommonInfo::AT_Target; // "gnu::target"
5058 case 'u': // 1 string to match.
5059 if (memcmp(Name.data()+6, "nused", 5) != 0)
5060 break;
5061 return AttributeCommonInfo::AT_Unused; // "gnu::unused"
5062 }
5063 break;
5064 }
5065 break;
5066 case 12: // 15 strings to match.
5067 switch (Name[0]) {
5068 default: break;
5069 case 'c': // 1 string to match.
5070 if (memcmp(Name.data()+1, "lang::guard", 11) != 0)
5071 break;
5072 return AttributeCommonInfo::AT_CFGuard; // "clang::guard"
5073 case 'g': // 13 strings to match.
5074 if (memcmp(Name.data()+1, "nu::", 4) != 0)
5075 break;
5076 switch (Name[5]) {
5077 default: break;
5078 case '_': // 1 string to match.
5079 if (memcmp(Name.data()+6, "_const", 6) != 0)
5080 break;
5081 return AttributeCommonInfo::AT_Const; // "gnu::__const"
5082 case 'a': // 1 string to match.
5083 if (memcmp(Name.data()+6, "ligned", 6) != 0)
5084 break;
5085 return AttributeCommonInfo::AT_Aligned; // "gnu::aligned"
5086 case 'c': // 1 string to match.
5087 if (memcmp(Name.data()+6, "leanup", 6) != 0)
5088 break;
5089 return AttributeCommonInfo::AT_Cleanup; // "gnu::cleanup"
5090 case 'f': // 1 string to match.
5091 if (memcmp(Name.data()+6, "latten", 6) != 0)
5092 break;
5093 return AttributeCommonInfo::AT_Flatten; // "gnu::flatten"
5094 case 'n': // 3 strings to match.
5095 if (Name[6] != 'o')
5096 break;
5097 switch (Name[7]) {
5098 default: break;
5099 case 'd': // 1 string to match.
5100 if (memcmp(Name.data()+8, "ebug", 4) != 0)
5101 break;
5102 return AttributeCommonInfo::AT_NoDebug; // "gnu::nodebug"
5103 case 'n': // 1 string to match.
5104 if (memcmp(Name.data()+8, "null", 4) != 0)
5105 break;
5106 return AttributeCommonInfo::AT_NonNull; // "gnu::nonnull"
5107 case 't': // 1 string to match.
5108 if (memcmp(Name.data()+8, "hrow", 4) != 0)
5109 break;
5110 return AttributeCommonInfo::AT_NoThrow; // "gnu::nothrow"
5111 }
5112 break;
5113 case 'r': // 2 strings to match.
5114 if (memcmp(Name.data()+6, "eg", 2) != 0)
5115 break;
5116 switch (Name[8]) {
5117 default: break;
5118 case 'c': // 1 string to match.
5119 if (memcmp(Name.data()+9, "all", 3) != 0)
5120 break;
5121 return AttributeCommonInfo::AT_RegCall; // "gnu::regcall"
5122 case 'p': // 1 string to match.
5123 if (memcmp(Name.data()+9, "arm", 3) != 0)
5124 break;
5125 return AttributeCommonInfo::AT_Regparm; // "gnu::regparm"
5126 }
5127 break;
5128 case 's': // 2 strings to match.
5129 switch (Name[6]) {
5130 default: break;
5131 case 'e': // 1 string to match.
5132 if (memcmp(Name.data()+7, "ction", 5) != 0)
5133 break;
5134 return AttributeCommonInfo::AT_Section; // "gnu::section"
5135 case 't': // 1 string to match.
5136 if (memcmp(Name.data()+7, "dcall", 5) != 0)
5137 break;
5138 return AttributeCommonInfo::AT_StdCall; // "gnu::stdcall"
5139 }
5140 break;
5141 case 'w': // 2 strings to match.
5142 switch (Name[6]) {
5143 default: break;
5144 case 'a': // 1 string to match.
5145 if (memcmp(Name.data()+7, "rning", 5) != 0)
5146 break;
5147 return AttributeCommonInfo::AT_Error; // "gnu::warning"
5148 case 'e': // 1 string to match.
5149 if (memcmp(Name.data()+7, "akref", 5) != 0)
5150 break;
5151 return AttributeCommonInfo::AT_WeakRef; // "gnu::weakref"
5152 }
5153 break;
5154 }
5155 break;
5156 case 'm': // 1 string to match.
5157 if (memcmp(Name.data()+1, "aybe_unused", 11) != 0)
5158 break;
5159 return AttributeCommonInfo::AT_Unused; // "maybe_unused"
5160 }
5161 break;
5162 case 13: // 12 strings to match.
5163 switch (Name[0]) {
5164 default: break;
5165 case 'c': // 4 strings to match.
5166 if (memcmp(Name.data()+1, "lang::", 6) != 0)
5167 break;
5168 switch (Name[7]) {
5169 default: break;
5170 case 'a': // 1 string to match.
5171 if (memcmp(Name.data()+8, "ssume", 5) != 0)
5172 break;
5173 return AttributeCommonInfo::AT_CXXAssume; // "clang::assume"
5174 case 'b': // 1 string to match.
5175 if (memcmp(Name.data()+8, "locks", 5) != 0)
5176 break;
5177 return AttributeCommonInfo::AT_Blocks; // "clang::blocks"
5178 case 'l': // 1 string to match.
5179 if (memcmp(Name.data()+8, "ikely", 5) != 0)
5180 break;
5181 return AttributeCommonInfo::AT_Likely; // "clang::likely"
5182 case 'p': // 1 string to match.
5183 if (memcmp(Name.data()+8, "ascal", 5) != 0)
5184 break;
5185 return AttributeCommonInfo::AT_Pascal; // "clang::pascal"
5186 }
5187 break;
5188 case 'g': // 8 strings to match.
5189 if (memcmp(Name.data()+1, "nu::", 4) != 0)
5190 break;
5191 switch (Name[5]) {
5192 default: break;
5193 case 'f': // 1 string to match.
5194 if (memcmp(Name.data()+6, "astcall", 7) != 0)
5195 break;
5196 return AttributeCommonInfo::AT_FastCall; // "gnu::fastcall"
5197 case 'n': // 4 strings to match.
5198 if (Name[6] != 'o')
5199 break;
5200 switch (Name[7]) {
5201 default: break;
5202 case 'c': // 1 string to match.
5203 if (memcmp(Name.data()+8, "ommon", 5) != 0)
5204 break;
5205 return AttributeCommonInfo::AT_NoCommon; // "gnu::nocommon"
5206 case 'i': // 1 string to match.
5207 if (memcmp(Name.data()+8, "nline", 5) != 0)
5208 break;
5209 return AttributeCommonInfo::AT_NoInline; // "gnu::noinline"
5210 case 'm': // 1 string to match.
5211 if (memcmp(Name.data()+8, "ips16", 5) != 0)
5212 break;
5213 return AttributeCommonInfo::AT_NoMips16; // "gnu::nomips16"
5214 case 'r': // 1 string to match.
5215 if (memcmp(Name.data()+8, "eturn", 5) != 0)
5216 break;
5217 return AttributeCommonInfo::AT_NoReturn; // "gnu::noreturn"
5218 }
5219 break;
5220 case 's': // 2 strings to match.
5221 switch (Name[6]) {
5222 default: break;
5223 case 'e': // 1 string to match.
5224 if (memcmp(Name.data()+7, "ntinel", 6) != 0)
5225 break;
5226 return AttributeCommonInfo::AT_Sentinel; // "gnu::sentinel"
5227 case 'y': // 1 string to match.
5228 if (memcmp(Name.data()+7, "sv_abi", 6) != 0)
5229 break;
5230 return AttributeCommonInfo::AT_SysVABI; // "gnu::sysv_abi"
5231 }
5232 break;
5233 case 't': // 1 string to match.
5234 if (memcmp(Name.data()+6, "hiscall", 7) != 0)
5235 break;
5236 return AttributeCommonInfo::AT_ThisCall; // "gnu::thiscall"
5237 }
5238 break;
5239 }
5240 break;
5241 case 14: // 15 strings to match.
5242 switch (Name[0]) {
5243 default: break;
5244 case 'c': // 5 strings to match.
5245 if (memcmp(Name.data()+1, "lang::", 6) != 0)
5246 break;
5247 switch (Name[7]) {
5248 default: break;
5249 case 'm': // 1 string to match.
5250 if (memcmp(Name.data()+8, "insize", 6) != 0)
5251 break;
5252 return AttributeCommonInfo::AT_MinSize; // "clang::minsize"
5253 case 'n': // 2 strings to match.
5254 if (Name[8] != 'o')
5255 break;
5256 switch (Name[9]) {
5257 default: break;
5258 case 'd': // 1 string to match.
5259 if (memcmp(Name.data()+10, "eref", 4) != 0)
5260 break;
5261 return AttributeCommonInfo::AT_NoDeref; // "clang::noderef"
5262 case 'm': // 1 string to match.
5263 if (memcmp(Name.data()+10, "erge", 4) != 0)
5264 break;
5265 return AttributeCommonInfo::AT_NoMerge; // "clang::nomerge"
5266 }
5267 break;
5268 case 'o': // 2 strings to match.
5269 switch (Name[8]) {
5270 default: break;
5271 case 'b': // 1 string to match.
5272 if (memcmp(Name.data()+9, "jc_gc", 5) != 0)
5273 break;
5274 return AttributeCommonInfo::AT_ObjCGC; // "clang::objc_gc"
5275 case 'p': // 1 string to match.
5276 if (memcmp(Name.data()+9, "tnone", 5) != 0)
5277 break;
5278 return AttributeCommonInfo::AT_OptimizeNone; // "clang::optnone"
5279 }
5280 break;
5281 }
5282 break;
5283 case 'g': // 9 strings to match.
5284 if (memcmp(Name.data()+1, "nu::", 4) != 0)
5285 break;
5286 switch (Name[5]) {
5287 default: break;
5288 case 'd': // 2 strings to match.
5289 if (memcmp(Name.data()+6, "ll", 2) != 0)
5290 break;
5291 switch (Name[8]) {
5292 default: break;
5293 case 'e': // 1 string to match.
5294 if (memcmp(Name.data()+9, "xport", 5) != 0)
5295 break;
5296 return AttributeCommonInfo::AT_DLLExport; // "gnu::dllexport"
5297 case 'i': // 1 string to match.
5298 if (memcmp(Name.data()+9, "mport", 5) != 0)
5299 break;
5300 return AttributeCommonInfo::AT_DLLImport; // "gnu::dllimport"
5301 }
5302 break;
5303 case 'i': // 1 string to match.
5304 if (memcmp(Name.data()+6, "nterrupt", 8) != 0)
5305 break;
5306 return AttributeCommonInfo::AT_Interrupt; // "gnu::interrupt"
5307 case 'l': // 1 string to match.
5308 if (memcmp(Name.data()+6, "ong_call", 8) != 0)
5309 break;
5310 return AttributeCommonInfo::AT_MipsLongCall; // "gnu::long_call"
5311 case 'm': // 3 strings to match.
5312 switch (Name[6]) {
5313 default: break;
5314 case 'a': // 1 string to match.
5315 if (memcmp(Name.data()+7, "y_alias", 7) != 0)
5316 break;
5317 return AttributeCommonInfo::AT_MayAlias; // "gnu::may_alias"
5318 case 'i': // 1 string to match.
5319 if (memcmp(Name.data()+7, "cromips", 7) != 0)
5320 break;
5321 return AttributeCommonInfo::AT_MicroMips; // "gnu::micromips"
5322 case 's': // 1 string to match.
5323 if (memcmp(Name.data()+7, "_struct", 7) != 0)
5324 break;
5325 return AttributeCommonInfo::AT_MSStruct; // "gnu::ms_struct"
5326 }
5327 break;
5328 case 's': // 1 string to match.
5329 if (memcmp(Name.data()+6, "electany", 8) != 0)
5330 break;
5331 return AttributeCommonInfo::AT_SelectAny; // "gnu::selectany"
5332 case 't': // 1 string to match.
5333 if (memcmp(Name.data()+6, "ls_model", 8) != 0)
5334 break;
5335 return AttributeCommonInfo::AT_TLSModel; // "gnu::tls_model"
5336 }
5337 break;
5338 case 'm': // 1 string to match.
5339 if (memcmp(Name.data()+1, "svc::noinline", 13) != 0)
5340 break;
5341 return AttributeCommonInfo::AT_NoInline; // "msvc::noinline"
5342 }
5343 break;
5344 case 15: // 22 strings to match.
5345 switch (Name[0]) {
5346 default: break;
5347 case 'c': // 13 strings to match.
5348 if (memcmp(Name.data()+1, "lang::", 6) != 0)
5349 break;
5350 switch (Name[7]) {
5351 default: break;
5352 case 'N': // 1 string to match.
5353 if (memcmp(Name.data()+8, "SObject", 7) != 0)
5354 break;
5355 return AttributeCommonInfo::AT_ObjCNSObject; // "clang::NSObject"
5356 case 'a': // 1 string to match.
5357 if (memcmp(Name.data()+8, "nnotate", 7) != 0)
5358 break;
5359 return AttributeCommonInfo::AT_Annotate; // "clang::annotate"
5360 case 'b': // 1 string to match.
5361 if (memcmp(Name.data()+8, "locking", 7) != 0)
5362 break;
5363 return AttributeCommonInfo::AT_Blocking; // "clang::blocking"
5364 case 'c': // 1 string to match.
5365 if (memcmp(Name.data()+8, "allback", 7) != 0)
5366 break;
5367 return AttributeCommonInfo::AT_Callback; // "clang::callback"
5368 case 'i': // 2 strings to match.
5369 if (Name[8] != 'b')
5370 break;
5371 switch (Name[9]) {
5372 default: break;
5373 case 'a': // 1 string to match.
5374 if (memcmp(Name.data()+10, "ction", 5) != 0)
5375 break;
5376 return AttributeCommonInfo::AT_IBAction; // "clang::ibaction"
5377 case 'o': // 1 string to match.
5378 if (memcmp(Name.data()+10, "utlet", 5) != 0)
5379 break;
5380 return AttributeCommonInfo::AT_IBOutlet; // "clang::iboutlet"
5381 }
5382 break;
5383 case 'm': // 2 strings to match.
5384 switch (Name[8]) {
5385 default: break;
5386 case '6': // 1 string to match.
5387 if (memcmp(Name.data()+9, "8k_rtd", 6) != 0)
5388 break;
5389 return AttributeCommonInfo::AT_M68kRTD; // "clang::m68k_rtd"
5390 case 'u': // 1 string to match.
5391 if (memcmp(Name.data()+9, "sttail", 6) != 0)
5392 break;
5393 return AttributeCommonInfo::AT_MustTail; // "clang::musttail"
5394 }
5395 break;
5396 case 'n': // 2 strings to match.
5397 if (Name[8] != 'o')
5398 break;
5399 switch (Name[9]) {
5400 default: break;
5401 case 'e': // 1 string to match.
5402 if (memcmp(Name.data()+10, "scape", 5) != 0)
5403 break;
5404 return AttributeCommonInfo::AT_NoEscape; // "clang::noescape"
5405 case 'i': // 1 string to match.
5406 if (memcmp(Name.data()+10, "nline", 5) != 0)
5407 break;
5408 return AttributeCommonInfo::AT_NoInline; // "clang::noinline"
5409 }
5410 break;
5411 case 's': // 2 strings to match.
5412 switch (Name[8]) {
5413 default: break;
5414 case 'i': // 1 string to match.
5415 if (memcmp(Name.data()+9, "zed_by", 6) != 0)
5416 break;
5417 return AttributeCommonInfo::AT_SizedBy; // "clang::sized_by"
5418 case 'u': // 1 string to match.
5419 if (memcmp(Name.data()+9, "ppress", 6) != 0)
5420 break;
5421 return AttributeCommonInfo::AT_Suppress; // "clang::suppress"
5422 }
5423 break;
5424 case 'u': // 1 string to match.
5425 if (memcmp(Name.data()+8, "nlikely", 7) != 0)
5426 break;
5427 return AttributeCommonInfo::AT_Unlikely; // "clang::unlikely"
5428 }
5429 break;
5430 case 'g': // 9 strings to match.
5431 if (memcmp(Name.data()+1, "nu::", 4) != 0)
5432 break;
5433 switch (Name[5]) {
5434 default: break;
5435 case 'a': // 2 strings to match.
5436 switch (Name[6]) {
5437 default: break;
5438 case 'l': // 1 string to match.
5439 if (memcmp(Name.data()+7, "loc_size", 8) != 0)
5440 break;
5441 return AttributeCommonInfo::AT_AllocSize; // "gnu::alloc_size"
5442 case 'r': // 1 string to match.
5443 if (memcmp(Name.data()+7, "tificial", 8) != 0)
5444 break;
5445 return AttributeCommonInfo::AT_Artificial; // "gnu::artificial"
5446 }
5447 break;
5448 case 'd': // 2 strings to match.
5449 if (Name[6] != 'e')
5450 break;
5451 switch (Name[7]) {
5452 default: break;
5453 case 'p': // 1 string to match.
5454 if (memcmp(Name.data()+8, "recated", 7) != 0)
5455 break;
5456 return AttributeCommonInfo::AT_Deprecated; // "gnu::deprecated"
5457 case 's': // 1 string to match.
5458 if (memcmp(Name.data()+8, "tructor", 7) != 0)
5459 break;
5460 return AttributeCommonInfo::AT_Destructor; // "gnu::destructor"
5461 }
5462 break;
5463 case 'f': // 1 string to match.
5464 if (memcmp(Name.data()+6, "ormat_arg", 9) != 0)
5465 break;
5466 return AttributeCommonInfo::AT_FormatArg; // "gnu::format_arg"
5467 case 'g': // 1 string to match.
5468 if (memcmp(Name.data()+6, "nu_inline", 9) != 0)
5469 break;
5470 return AttributeCommonInfo::AT_GNUInline; // "gnu::gnu_inline"
5471 case 'n': // 1 string to match.
5472 if (memcmp(Name.data()+6, "ocf_check", 9) != 0)
5473 break;
5474 return AttributeCommonInfo::AT_AnyX86NoCfCheck; // "gnu::nocf_check"
5475 case 's': // 1 string to match.
5476 if (memcmp(Name.data()+6, "hort_call", 9) != 0)
5477 break;
5478 return AttributeCommonInfo::AT_MipsShortCall; // "gnu::short_call"
5479 case 'v': // 1 string to match.
5480 if (memcmp(Name.data()+6, "isibility", 9) != 0)
5481 break;
5482 return AttributeCommonInfo::AT_Visibility; // "gnu::visibility"
5483 }
5484 break;
5485 }
5486 break;
5487 case 16: // 10 strings to match.
5488 switch (Name[0]) {
5489 default: break;
5490 case 'c': // 3 strings to match.
5491 if (memcmp(Name.data()+1, "lang::", 6) != 0)
5492 break;
5493 switch (Name[7]) {
5494 default: break;
5495 case 'f': // 1 string to match.
5496 if (memcmp(Name.data()+8, "lag_enum", 8) != 0)
5497 break;
5498 return AttributeCommonInfo::AT_FlagEnum; // "clang::flag_enum"
5499 case 'n': // 1 string to match.
5500 if (memcmp(Name.data()+8, "ouwtable", 8) != 0)
5501 break;
5502 return AttributeCommonInfo::AT_NoUwtable; // "clang::nouwtable"
5503 case 's': // 1 string to match.
5504 if (memcmp(Name.data()+8, "wiftcall", 8) != 0)
5505 break;
5506 return AttributeCommonInfo::AT_SwiftCall; // "clang::swiftcall"
5507 }
5508 break;
5509 case 'g': // 6 strings to match.
5510 if (memcmp(Name.data()+1, "nu::", 4) != 0)
5511 break;
5512 switch (Name[5]) {
5513 default: break;
5514 case 'a': // 1 string to match.
5515 if (memcmp(Name.data()+6, "lloc_align", 10) != 0)
5516 break;
5517 return AttributeCommonInfo::AT_AllocAlign; // "gnu::alloc_align"
5518 case 'c': // 1 string to match.
5519 if (memcmp(Name.data()+6, "onstructor", 10) != 0)
5520 break;
5521 return AttributeCommonInfo::AT_Constructor; // "gnu::constructor"
5522 case 'f': // 1 string to match.
5523 if (memcmp(Name.data()+6, "allthrough", 10) != 0)
5524 break;
5525 return AttributeCommonInfo::AT_FallThrough; // "gnu::fallthrough"
5526 case 'n': // 1 string to match.
5527 if (memcmp(Name.data()+6, "omicromips", 10) != 0)
5528 break;
5529 return AttributeCommonInfo::AT_NoMicroMips; // "gnu::nomicromips"
5530 case 'v': // 1 string to match.
5531 if (memcmp(Name.data()+6, "ector_size", 10) != 0)
5532 break;
5533 return AttributeCommonInfo::AT_VectorSize; // "gnu::vector_size"
5534 case 'w': // 1 string to match.
5535 if (memcmp(Name.data()+6, "arn_unused", 10) != 0)
5536 break;
5537 return AttributeCommonInfo::AT_WarnUnused; // "gnu::warn_unused"
5538 }
5539 break;
5540 case 'r': // 1 string to match.
5541 if (memcmp(Name.data()+1, "iscv::vector_cc", 15) != 0)
5542 break;
5543 return AttributeCommonInfo::AT_RISCVVectorCC; // "riscv::vector_cc"
5544 }
5545 break;
5546 case 17: // 7 strings to match.
5547 if (memcmp(Name.data()+0, "clang::", 7) != 0)
5548 break;
5549 switch (Name[7]) {
5550 default: break;
5551 case 'a': // 1 string to match.
5552 if (memcmp(Name.data()+8, "llocating", 9) != 0)
5553 break;
5554 return AttributeCommonInfo::AT_Allocating; // "clang::allocating"
5555 case 'c': // 3 strings to match.
5556 if (Name[8] != 'o')
5557 break;
5558 switch (Name[9]) {
5559 default: break;
5560 case 'd': // 1 string to match.
5561 if (memcmp(Name.data()+10, "e_align", 7) != 0)
5562 break;
5563 return AttributeCommonInfo::AT_CodeAlign; // "clang::code_align"
5564 case 'n': // 1 string to match.
5565 if (memcmp(Name.data()+10, "vergent", 7) != 0)
5566 break;
5567 return AttributeCommonInfo::AT_Convergent; // "clang::convergent"
5568 case 'u': // 1 string to match.
5569 if (memcmp(Name.data()+10, "nted_by", 7) != 0)
5570 break;
5571 return AttributeCommonInfo::AT_CountedBy; // "clang::counted_by"
5572 }
5573 break;
5574 case 'n': // 1 string to match.
5575 if (memcmp(Name.data()+8, "o_builtin", 9) != 0)
5576 break;
5577 return AttributeCommonInfo::AT_NoBuiltin; // "clang::no_builtin"
5578 case 'u': // 1 string to match.
5579 if (memcmp(Name.data()+8, "se_handle", 9) != 0)
5580 break;
5581 return AttributeCommonInfo::AT_UseHandle; // "clang::use_handle"
5582 case 'v': // 1 string to match.
5583 if (memcmp(Name.data()+8, "ectorcall", 9) != 0)
5584 break;
5585 return AttributeCommonInfo::AT_VectorCall; // "clang::vectorcall"
5586 }
5587 break;
5588 case 18: // 21 strings to match.
5589 switch (Name[0]) {
5590 default: break;
5591 case 'c': // 18 strings to match.
5592 if (memcmp(Name.data()+1, "lang::", 6) != 0)
5593 break;
5594 switch (Name[7]) {
5595 default: break;
5596 case 'c': // 2 strings to match.
5597 switch (Name[8]) {
5598 default: break;
5599 case 'a': // 1 string to match.
5600 if (memcmp(Name.data()+9, "lled_once", 9) != 0)
5601 break;
5602 return AttributeCommonInfo::AT_CalledOnce; // "clang::called_once"
5603 case 'f': // 1 string to match.
5604 if (memcmp(Name.data()+9, "_consumed", 9) != 0)
5605 break;
5606 return AttributeCommonInfo::AT_CFConsumed; // "clang::cf_consumed"
5607 }
5608 break;
5609 case 'e': // 2 strings to match.
5610 switch (Name[8]) {
5611 default: break;
5612 case 'n': // 1 string to match.
5613 if (memcmp(Name.data()+9, "force_tcb", 9) != 0)
5614 break;
5615 return AttributeCommonInfo::AT_EnforceTCB; // "clang::enforce_tcb"
5616 case 'x': // 1 string to match.
5617 if (memcmp(Name.data()+9, "port_name", 9) != 0)
5618 break;
5619 return AttributeCommonInfo::AT_WebAssemblyExportName; // "clang::export_name"
5620 }
5621 break;
5622 case 'i': // 1 string to match.
5623 if (memcmp(Name.data()+8, "mport_name", 10) != 0)
5624 break;
5625 return AttributeCommonInfo::AT_WebAssemblyImportName; // "clang::import_name"
5626 case 'm': // 2 strings to match.
5627 if (Name[8] != 'a')
5628 break;
5629 switch (Name[9]) {
5630 default: break;
5631 case 't': // 1 string to match.
5632 if (memcmp(Name.data()+10, "rix_type", 8) != 0)
5633 break;
5634 return AttributeCommonInfo::AT_MatrixType; // "clang::matrix_type"
5635 case 'y': // 1 string to match.
5636 if (memcmp(Name.data()+10, "be_undef", 8) != 0)
5637 break;
5638 return AttributeCommonInfo::AT_MaybeUndef; // "clang::maybe_undef"
5639 }
5640 break;
5641 case 'n': // 4 strings to match.
5642 switch (Name[8]) {
5643 default: break;
5644 case 'o': // 3 strings to match.
5645 switch (Name[9]) {
5646 default: break;
5647 case '_': // 1 string to match.
5648 if (memcmp(Name.data()+10, "sanitize", 8) != 0)
5649 break;
5650 return AttributeCommonInfo::AT_NoSanitize; // "clang::no_sanitize"
5651 case 'd': // 1 string to match.
5652 if (memcmp(Name.data()+10, "uplicate", 8) != 0)
5653 break;
5654 return AttributeCommonInfo::AT_NoDuplicate; // "clang::noduplicate"
5655 case 'n': // 1 string to match.
5656 if (memcmp(Name.data()+10, "blocking", 8) != 0)
5657 break;
5658 return AttributeCommonInfo::AT_NonBlocking; // "clang::nonblocking"
5659 }
5660 break;
5661 case 's': // 1 string to match.
5662 if (memcmp(Name.data()+9, "_consumed", 9) != 0)
5663 break;
5664 return AttributeCommonInfo::AT_NSConsumed; // "clang::ns_consumed"
5665 }
5666 break;
5667 case 'o': // 3 strings to match.
5668 switch (Name[8]) {
5669 default: break;
5670 case 'b': // 2 strings to match.
5671 if (memcmp(Name.data()+9, "jc_", 3) != 0)
5672 break;
5673 switch (Name[12]) {
5674 default: break;
5675 case 'b': // 1 string to match.
5676 if (memcmp(Name.data()+13, "ridge", 5) != 0)
5677 break;
5678 return AttributeCommonInfo::AT_ObjCBridge; // "clang::objc_bridge"
5679 case 'd': // 1 string to match.
5680 if (memcmp(Name.data()+13, "irect", 5) != 0)
5681 break;
5682 return AttributeCommonInfo::AT_ObjCDirect; // "clang::objc_direct"
5683 }
5684 break;
5685 case 's': // 1 string to match.
5686 if (memcmp(Name.data()+9, "_consumed", 9) != 0)
5687 break;
5688 return AttributeCommonInfo::AT_OSConsumed; // "clang::os_consumed"
5689 }
5690 break;
5691 case 's': // 2 strings to match.
5692 switch (Name[8]) {
5693 default: break;
5694 case 'w': // 1 string to match.
5695 if (memcmp(Name.data()+9, "ift_async", 9) != 0)
5696 break;
5697 return AttributeCommonInfo::AT_SwiftAsync; // "clang::swift_async"
5698 case 'y': // 1 string to match.
5699 if (memcmp(Name.data()+9, "cl_kernel", 9) != 0)
5700 break;
5701 return AttributeCommonInfo::AT_SYCLKernel; // "clang::sycl_kernel"
5702 }
5703 break;
5704 case 'u': // 1 string to match.
5705 if (memcmp(Name.data()+8, "navailable", 10) != 0)
5706 break;
5707 return AttributeCommonInfo::AT_Unavailable; // "clang::unavailable"
5708 case 'w': // 1 string to match.
5709 if (memcmp(Name.data()+8, "eak_import", 10) != 0)
5710 break;
5711 return AttributeCommonInfo::AT_WeakImport; // "clang::weak_import"
5712 }
5713 break;
5714 case 'g': // 3 strings to match.
5715 if (memcmp(Name.data()+1, "nu::", 4) != 0)
5716 break;
5717 switch (Name[5]) {
5718 default: break;
5719 case 'a': // 1 string to match.
5720 if (memcmp(Name.data()+6, "lways_inline", 12) != 0)
5721 break;
5722 return AttributeCommonInfo::AT_AlwaysInline; // "gnu::always_inline"
5723 case 'r': // 1 string to match.
5724 if (memcmp(Name.data()+6, "eturns_twice", 12) != 0)
5725 break;
5726 return AttributeCommonInfo::AT_ReturnsTwice; // "gnu::returns_twice"
5727 case 't': // 1 string to match.
5728 if (memcmp(Name.data()+6, "arget_clones", 12) != 0)
5729 break;
5730 return AttributeCommonInfo::AT_TargetClones; // "gnu::target_clones"
5731 }
5732 break;
5733 }
5734 break;
5735 case 19: // 16 strings to match.
5736 switch (Name[0]) {
5737 default: break;
5738 case 'c': // 13 strings to match.
5739 if (memcmp(Name.data()+1, "lang::", 6) != 0)
5740 break;
5741 switch (Name[7]) {
5742 default: break;
5743 case 'a': // 1 string to match.
5744 if (memcmp(Name.data()+8, "vailability", 11) != 0)
5745 break;
5746 return AttributeCommonInfo::AT_Availability; // "clang::availability"
5747 case 'b': // 3 strings to match.
5748 switch (Name[8]) {
5749 default: break;
5750 case 'p': // 1 string to match.
5751 if (memcmp(Name.data()+9, "f_fastcall", 10) != 0)
5752 break;
5753 return AttributeCommonInfo::AT_BPFFastCall; // "clang::bpf_fastcall"
5754 case 't': // 2 strings to match.
5755 if (memcmp(Name.data()+9, "f_", 2) != 0)
5756 break;
5757 switch (Name[11]) {
5758 default: break;
5759 case 'd': // 1 string to match.
5760 if (memcmp(Name.data()+12, "ecl_tag", 7) != 0)
5761 break;
5762 return AttributeCommonInfo::AT_BTFDeclTag; // "clang::btf_decl_tag"
5763 case 't': // 1 string to match.
5764 if (memcmp(Name.data()+12, "ype_tag", 7) != 0)
5765 break;
5766 return AttributeCommonInfo::AT_BTFTypeTag; // "clang::btf_type_tag"
5767 }
5768 break;
5769 }
5770 break;
5771 case 'c': // 3 strings to match.
5772 switch (Name[8]) {
5773 default: break;
5774 case 'o': // 1 string to match.
5775 if (memcmp(Name.data()+9, "ro_wrapper", 10) != 0)
5776 break;
5777 return AttributeCommonInfo::AT_CoroWrapper; // "clang::coro_wrapper"
5778 case 'p': // 2 strings to match.
5779 if (memcmp(Name.data()+9, "u_", 2) != 0)
5780 break;
5781 switch (Name[11]) {
5782 default: break;
5783 case 'd': // 1 string to match.
5784 if (memcmp(Name.data()+12, "ispatch", 7) != 0)
5785 break;
5786 return AttributeCommonInfo::AT_CPUDispatch; // "clang::cpu_dispatch"
5787 case 's': // 1 string to match.
5788 if (memcmp(Name.data()+12, "pecific", 7) != 0)
5789 break;
5790 return AttributeCommonInfo::AT_CPUSpecific; // "clang::cpu_specific"
5791 }
5792 break;
5793 }
5794 break;
5795 case 'n': // 2 strings to match.
5796 switch (Name[8]) {
5797 default: break;
5798 case 'o': // 1 string to match.
5799 if (memcmp(Name.data()+9, "convergent", 10) != 0)
5800 break;
5801 return AttributeCommonInfo::AT_NoConvergent; // "clang::noconvergent"
5802 case 'v': // 1 string to match.
5803 if (memcmp(Name.data()+9, "ptx_kernel", 10) != 0)
5804 break;
5805 return AttributeCommonInfo::AT_NVPTXKernel; // "clang::nvptx_kernel"
5806 }
5807 break;
5808 case 'o': // 3 strings to match.
5809 switch (Name[8]) {
5810 default: break;
5811 case 'b': // 1 string to match.
5812 if (memcmp(Name.data()+9, "jc_boxable", 10) != 0)
5813 break;
5814 return AttributeCommonInfo::AT_ObjCBoxable; // "clang::objc_boxable"
5815 case 'p': // 1 string to match.
5816 if (memcmp(Name.data()+9, "encl_local", 10) != 0)
5817 break;
5818 return AttributeCommonInfo::AT_OpenCLLocalAddressSpace; // "clang::opencl_local"
5819 case 'v': // 1 string to match.
5820 if (memcmp(Name.data()+9, "erloadable", 10) != 0)
5821 break;
5822 return AttributeCommonInfo::AT_Overloadable; // "clang::overloadable"
5823 }
5824 break;
5825 case 'p': // 1 string to match.
5826 if (memcmp(Name.data()+8, "reserve_all", 11) != 0)
5827 break;
5828 return AttributeCommonInfo::AT_PreserveAll; // "clang::preserve_all"
5829 }
5830 break;
5831 case 'g': // 3 strings to match.
5832 if (memcmp(Name.data()+1, "nu::", 4) != 0)
5833 break;
5834 switch (Name[5]) {
5835 default: break;
5836 case 'a': // 1 string to match.
5837 if (memcmp(Name.data()+6, "ssume_aligned", 13) != 0)
5838 break;
5839 return AttributeCommonInfo::AT_AssumeAligned; // "gnu::assume_aligned"
5840 case 'n': // 1 string to match.
5841 if (memcmp(Name.data()+6, "o_split_stack", 13) != 0)
5842 break;
5843 return AttributeCommonInfo::AT_NoSplitStack; // "gnu::no_split_stack"
5844 case 't': // 1 string to match.
5845 if (memcmp(Name.data()+6, "arget_version", 13) != 0)
5846 break;
5847 return AttributeCommonInfo::AT_TargetVersion; // "gnu::target_version"
5848 }
5849 break;
5850 }
5851 break;
5852 case 20: // 14 strings to match.
5853 switch (Name[0]) {
5854 default: break;
5855 case 'c': // 12 strings to match.
5856 if (memcmp(Name.data()+1, "lang::", 6) != 0)
5857 break;
5858 switch (Name[7]) {
5859 default: break;
5860 case 'a': // 4 strings to match.
5861 switch (Name[8]) {
5862 default: break;
5863 case 'd': // 1 string to match.
5864 if (memcmp(Name.data()+9, "dress_space", 11) != 0)
5865 break;
5866 return AttributeCommonInfo::AT_AddressSpace; // "clang::address_space"
5867 case 'l': // 1 string to match.
5868 if (memcmp(Name.data()+9, "ways_inline", 11) != 0)
5869 break;
5870 return AttributeCommonInfo::AT_AlwaysInline; // "clang::always_inline"
5871 case 'm': // 1 string to match.
5872 if (memcmp(Name.data()+9, "dgpu_kernel", 11) != 0)
5873 break;
5874 return AttributeCommonInfo::AT_AMDGPUKernelCall; // "clang::amdgpu_kernel"
5875 case 'n': // 1 string to match.
5876 if (memcmp(Name.data()+9, "notate_type", 11) != 0)
5877 break;
5878 return AttributeCommonInfo::AT_AnnotateType; // "clang::annotate_type"
5879 }
5880 break;
5881 case 'b': // 1 string to match.
5882 if (memcmp(Name.data()+8, "uiltin_alias", 12) != 0)
5883 break;
5884 return AttributeCommonInfo::AT_BuiltinAlias; // "clang::builtin_alias"
5885 case 'i': // 1 string to match.
5886 if (memcmp(Name.data()+8, "mport_module", 12) != 0)
5887 break;
5888 return AttributeCommonInfo::AT_WebAssemblyImportModule; // "clang::import_module"
5889 case 'n': // 1 string to match.
5890 if (memcmp(Name.data()+8, "onallocating", 12) != 0)
5891 break;
5892 return AttributeCommonInfo::AT_NonAllocating; // "clang::nonallocating"
5893 case 'o': // 1 string to match.
5894 if (memcmp(Name.data()+8, "pencl_global", 12) != 0)
5895 break;
5896 return AttributeCommonInfo::AT_OpenCLGlobalAddressSpace; // "clang::opencl_global"
5897 case 'p': // 2 strings to match.
5898 if (memcmp(Name.data()+8, "reserve_", 8) != 0)
5899 break;
5900 switch (Name[16]) {
5901 default: break;
5902 case 'm': // 1 string to match.
5903 if (memcmp(Name.data()+17, "ost", 3) != 0)
5904 break;
5905 return AttributeCommonInfo::AT_PreserveMost; // "clang::preserve_most"
5906 case 'n': // 1 string to match.
5907 if (memcmp(Name.data()+17, "one", 3) != 0)
5908 break;
5909 return AttributeCommonInfo::AT_PreserveNone; // "clang::preserve_none"
5910 }
5911 break;
5912 case 's': // 1 string to match.
5913 if (memcmp(Name.data()+8, "wift_context", 12) != 0)
5914 break;
5915 return AttributeCommonInfo::AT_SwiftContext; // "clang::swift_context"
5916 case 'x': // 1 string to match.
5917 if (memcmp(Name.data()+8, "ray_log_args", 12) != 0)
5918 break;
5919 return AttributeCommonInfo::AT_XRayLogArgs; // "clang::xray_log_args"
5920 }
5921 break;
5922 case 'g': // 2 strings to match.
5923 if (memcmp(Name.data()+1, "nu::", 4) != 0)
5924 break;
5925 switch (Name[5]) {
5926 default: break;
5927 case 'f': // 1 string to match.
5928 if (memcmp(Name.data()+6, "unction_return", 14) != 0)
5929 break;
5930 return AttributeCommonInfo::AT_FunctionReturnThunks; // "gnu::function_return"
5931 case 'r': // 1 string to match.
5932 if (memcmp(Name.data()+6, "eturns_nonnull", 14) != 0)
5933 break;
5934 return AttributeCommonInfo::AT_ReturnsNonNull; // "gnu::returns_nonnull"
5935 }
5936 break;
5937 }
5938 break;
5939 case 21: // 9 strings to match.
5940 switch (Name[0]) {
5941 default: break;
5942 case 'c': // 8 strings to match.
5943 if (memcmp(Name.data()+1, "lang::", 6) != 0)
5944 break;
5945 switch (Name[7]) {
5946 default: break;
5947 case 'a': // 1 string to match.
5948 if (memcmp(Name.data()+8, "cquire_handle", 13) != 0)
5949 break;
5950 return AttributeCommonInfo::AT_AcquireHandle; // "clang::acquire_handle"
5951 case 'o': // 4 strings to match.
5952 switch (Name[8]) {
5953 default: break;
5954 case 'b': // 2 strings to match.
5955 if (memcmp(Name.data()+9, "jc_", 3) != 0)
5956 break;
5957 switch (Name[12]) {
5958 default: break;
5959 case 'e': // 1 string to match.
5960 if (memcmp(Name.data()+13, "xception", 8) != 0)
5961 break;
5962 return AttributeCommonInfo::AT_ObjCException; // "clang::objc_exception"
5963 case 'o': // 1 string to match.
5964 if (memcmp(Name.data()+13, "wnership", 8) != 0)
5965 break;
5966 return AttributeCommonInfo::AT_ObjCOwnership; // "clang::objc_ownership"
5967 }
5968 break;
5969 case 'p': // 2 strings to match.
5970 if (memcmp(Name.data()+9, "encl_", 5) != 0)
5971 break;
5972 switch (Name[14]) {
5973 default: break;
5974 case 'g': // 1 string to match.
5975 if (memcmp(Name.data()+15, "eneric", 6) != 0)
5976 break;
5977 return AttributeCommonInfo::AT_OpenCLGenericAddressSpace; // "clang::opencl_generic"
5978 case 'p': // 1 string to match.
5979 if (memcmp(Name.data()+15, "rivate", 6) != 0)
5980 break;
5981 return AttributeCommonInfo::AT_OpenCLPrivateAddressSpace; // "clang::opencl_private"
5982 }
5983 break;
5984 }
5985 break;
5986 case 'p': // 1 string to match.
5987 if (memcmp(Name.data()+8, "referred_type", 13) != 0)
5988 break;
5989 return AttributeCommonInfo::AT_PreferredType; // "clang::preferred_type"
5990 case 'r': // 1 string to match.
5991 if (memcmp(Name.data()+8, "elease_handle", 13) != 0)
5992 break;
5993 return AttributeCommonInfo::AT_ReleaseHandle; // "clang::release_handle"
5994 case 's': // 1 string to match.
5995 if (memcmp(Name.data()+8, "wiftasynccall", 13) != 0)
5996 break;
5997 return AttributeCommonInfo::AT_SwiftAsyncCall; // "clang::swiftasynccall"
5998 }
5999 break;
6000 case 'g': // 1 string to match.
6001 if (memcmp(Name.data()+1, "nu::randomize_layout", 20) != 0)
6002 break;
6003 return AttributeCommonInfo::AT_RandomizeLayout; // "gnu::randomize_layout"
6004 }
6005 break;
6006 case 22: // 10 strings to match.
6007 switch (Name[0]) {
6008 default: break;
6009 case 'c': // 9 strings to match.
6010 if (memcmp(Name.data()+1, "lang::", 6) != 0)
6011 break;
6012 switch (Name[7]) {
6013 default: break;
6014 case 'a': // 1 string to match.
6015 if (memcmp(Name.data()+8, "arch64_sve_pcs", 14) != 0)
6016 break;
6017 return AttributeCommonInfo::AT_AArch64SVEPcs; // "clang::aarch64_sve_pcs"
6018 case 'n': // 1 string to match.
6019 if (memcmp(Name.data()+8, "ot_tail_called", 14) != 0)
6020 break;
6021 return AttributeCommonInfo::AT_NotTailCalled; // "clang::not_tail_called"
6022 case 'o': // 5 strings to match.
6023 switch (Name[8]) {
6024 default: break;
6025 case 'b': // 2 strings to match.
6026 if (memcmp(Name.data()+9, "jc_", 3) != 0)
6027 break;
6028 switch (Name[12]) {
6029 default: break;
6030 case 'c': // 1 string to match.
6031 if (memcmp(Name.data()+13, "lass_stub", 9) != 0)
6032 break;
6033 return AttributeCommonInfo::AT_ObjCClassStub; // "clang::objc_class_stub"
6034 case 'r': // 1 string to match.
6035 if (memcmp(Name.data()+13, "oot_class", 9) != 0)
6036 break;
6037 return AttributeCommonInfo::AT_ObjCRootClass; // "clang::objc_root_class"
6038 }
6039 break;
6040 case 'p': // 1 string to match.
6041 if (memcmp(Name.data()+9, "encl_constant", 13) != 0)
6042 break;
6043 return AttributeCommonInfo::AT_OpenCLConstantAddressSpace; // "clang::opencl_constant"
6044 case 'w': // 2 strings to match.
6045 if (memcmp(Name.data()+9, "nership_", 8) != 0)
6046 break;
6047 switch (Name[17]) {
6048 default: break;
6049 case 'h': // 1 string to match.
6050 if (memcmp(Name.data()+18, "olds", 4) != 0)
6051 break;
6052 return AttributeCommonInfo::AT_Ownership; // "clang::ownership_holds"
6053 case 't': // 1 string to match.
6054 if (memcmp(Name.data()+18, "akes", 4) != 0)
6055 break;
6056 return AttributeCommonInfo::AT_Ownership; // "clang::ownership_takes"
6057 }
6058 break;
6059 }
6060 break;
6061 case 'r': // 1 string to match.
6062 if (memcmp(Name.data()+8, "iscv_vector_cc", 14) != 0)
6063 break;
6064 return AttributeCommonInfo::AT_RISCVVectorCC; // "clang::riscv_vector_cc"
6065 case 't': // 1 string to match.
6066 if (memcmp(Name.data()+8, "ype_visibility", 14) != 0)
6067 break;
6068 return AttributeCommonInfo::AT_TypeVisibility; // "clang::type_visibility"
6069 }
6070 break;
6071 case 'g': // 1 string to match.
6072 if (memcmp(Name.data()+1, "nu::transparent_union", 21) != 0)
6073 break;
6074 return AttributeCommonInfo::AT_TransparentUnion; // "gnu::transparent_union"
6075 }
6076 break;
6077 case 23: // 13 strings to match.
6078 switch (Name[0]) {
6079 default: break;
6080 case 'c': // 10 strings to match.
6081 if (memcmp(Name.data()+1, "lang::", 6) != 0)
6082 break;
6083 switch (Name[7]) {
6084 default: break;
6085 case 'c': // 1 string to match.
6086 if (memcmp(Name.data()+8, "oro_return_type", 15) != 0)
6087 break;
6088 return AttributeCommonInfo::AT_CoroReturnType; // "clang::coro_return_type"
6089 case 'e': // 1 string to match.
6090 if (memcmp(Name.data()+8, "nforce_tcb_leaf", 15) != 0)
6091 break;
6092 return AttributeCommonInfo::AT_EnforceTCBLeaf; // "clang::enforce_tcb_leaf"
6093 case 'h': // 1 string to match.
6094 if (memcmp(Name.data()+8, "ybrid_patchable", 15) != 0)
6095 break;
6096 return AttributeCommonInfo::AT_HybridPatchable; // "clang::hybrid_patchable"
6097 case 'i': // 1 string to match.
6098 if (memcmp(Name.data()+8, "nternal_linkage", 15) != 0)
6099 break;
6100 return AttributeCommonInfo::AT_InternalLinkage; // "clang::internal_linkage"
6101 case 'm': // 1 string to match.
6102 if (memcmp(Name.data()+8, "in_vector_width", 15) != 0)
6103 break;
6104 return AttributeCommonInfo::AT_MinVectorWidth; // "clang::min_vector_width"
6105 case 'n': // 2 strings to match.
6106 switch (Name[8]) {
6107 default: break;
6108 case 'e': // 1 string to match.
6109 if (memcmp(Name.data()+9, "on_vector_type", 14) != 0)
6110 break;
6111 return AttributeCommonInfo::AT_NeonVectorType; // "clang::neon_vector_type"
6112 case 's': // 1 string to match.
6113 if (memcmp(Name.data()+9, "_consumes_self", 14) != 0)
6114 break;
6115 return AttributeCommonInfo::AT_NSConsumesSelf; // "clang::ns_consumes_self"
6116 }
6117 break;
6118 case 'o': // 1 string to match.
6119 if (memcmp(Name.data()+8, "s_consumes_this", 15) != 0)
6120 break;
6121 return AttributeCommonInfo::AT_OSConsumesThis; // "clang::os_consumes_this"
6122 case 'p': // 1 string to match.
6123 if (memcmp(Name.data()+8, "ass_object_size", 15) != 0)
6124 break;
6125 return AttributeCommonInfo::AT_PassObjectSize; // "clang::pass_object_size"
6126 case 's': // 1 string to match.
6127 if (memcmp(Name.data()+8, "ized_by_or_null", 15) != 0)
6128 break;
6129 return AttributeCommonInfo::AT_SizedByOrNull; // "clang::sized_by_or_null"
6130 }
6131 break;
6132 case 'g': // 3 strings to match.
6133 if (memcmp(Name.data()+1, "nu::", 4) != 0)
6134 break;
6135 switch (Name[5]) {
6136 default: break;
6137 case 'n': // 2 strings to match.
6138 if (memcmp(Name.data()+6, "o_s", 3) != 0)
6139 break;
6140 switch (Name[9]) {
6141 default: break;
6142 case 'a': // 1 string to match.
6143 if (memcmp(Name.data()+10, "nitize_thread", 13) != 0)
6144 break;
6145 return AttributeCommonInfo::AT_NoSanitizeSpecific; // "gnu::no_sanitize_thread"
6146 case 't': // 1 string to match.
6147 if (memcmp(Name.data()+10, "ack_protector", 13) != 0)
6148 break;
6149 return AttributeCommonInfo::AT_NoStackProtector; // "gnu::no_stack_protector"
6150 }
6151 break;
6152 case 'w': // 1 string to match.
6153 if (memcmp(Name.data()+6, "arn_unused_result", 17) != 0)
6154 break;
6155 return AttributeCommonInfo::AT_WarnUnusedResult; // "gnu::warn_unused_result"
6156 }
6157 break;
6158 }
6159 break;
6160 case 24: // 6 strings to match.
6161 switch (Name[0]) {
6162 default: break;
6163 case 'c': // 3 strings to match.
6164 if (memcmp(Name.data()+1, "lang::", 6) != 0)
6165 break;
6166 switch (Name[7]) {
6167 default: break;
6168 case 'o': // 2 strings to match.
6169 switch (Name[8]) {
6170 default: break;
6171 case 'b': // 1 string to match.
6172 if (memcmp(Name.data()+9, "jc_runtime_name", 15) != 0)
6173 break;
6174 return AttributeCommonInfo::AT_ObjCRuntimeName; // "clang::objc_runtime_name"
6175 case 'w': // 1 string to match.
6176 if (memcmp(Name.data()+9, "nership_returns", 15) != 0)
6177 break;
6178 return AttributeCommonInfo::AT_Ownership; // "clang::ownership_returns"
6179 }
6180 break;
6181 case 's': // 1 string to match.
6182 if (memcmp(Name.data()+8, "wift_async_error", 16) != 0)
6183 break;
6184 return AttributeCommonInfo::AT_SwiftAsyncError; // "clang::swift_async_error"
6185 }
6186 break;
6187 case 'g': // 3 strings to match.
6188 if (memcmp(Name.data()+1, "nu::", 4) != 0)
6189 break;
6190 switch (Name[5]) {
6191 default: break;
6192 case 'n': // 2 strings to match.
6193 if (memcmp(Name.data()+6, "o_", 2) != 0)
6194 break;
6195 switch (Name[8]) {
6196 default: break;
6197 case 'r': // 1 string to match.
6198 if (memcmp(Name.data()+9, "andomize_layout", 15) != 0)
6199 break;
6200 return AttributeCommonInfo::AT_NoRandomizeLayout; // "gnu::no_randomize_layout"
6201 case 's': // 1 string to match.
6202 if (memcmp(Name.data()+9, "anitize_address", 15) != 0)
6203 break;
6204 return AttributeCommonInfo::AT_NoSanitizeSpecific; // "gnu::no_sanitize_address"
6205 }
6206 break;
6207 case 'z': // 1 string to match.
6208 if (memcmp(Name.data()+6, "ero_call_used_regs", 18) != 0)
6209 break;
6210 return AttributeCommonInfo::AT_ZeroCallUsedRegs; // "gnu::zero_call_used_regs"
6211 }
6212 break;
6213 }
6214 break;
6215 case 25: // 14 strings to match.
6216 if (memcmp(Name.data()+0, "clang::", 7) != 0)
6217 break;
6218 switch (Name[7]) {
6219 default: break;
6220 case 'a': // 1 string to match.
6221 if (memcmp(Name.data()+8, "arch64_vector_pcs", 17) != 0)
6222 break;
6223 return AttributeCommonInfo::AT_AArch64VectorPcs; // "clang::aarch64_vector_pcs"
6224 case 'c': // 2 strings to match.
6225 if (Name[8] != 'o')
6226 break;
6227 switch (Name[9]) {
6228 default: break;
6229 case 'r': // 1 string to match.
6230 if (memcmp(Name.data()+10, "o_lifetimebound", 15) != 0)
6231 break;
6232 return AttributeCommonInfo::AT_CoroLifetimeBound; // "clang::coro_lifetimebound"
6233 case 'u': // 1 string to match.
6234 if (memcmp(Name.data()+10, "nted_by_or_null", 15) != 0)
6235 break;
6236 return AttributeCommonInfo::AT_CountedByOrNull; // "clang::counted_by_or_null"
6237 }
6238 break;
6239 case 'd': // 1 string to match.
6240 if (memcmp(Name.data()+8, "isable_tail_calls", 17) != 0)
6241 break;
6242 return AttributeCommonInfo::AT_DisableTailCalls; // "clang::disable_tail_calls"
6243 case 'e': // 1 string to match.
6244 if (memcmp(Name.data()+8, "num_extensibility", 17) != 0)
6245 break;
6246 return AttributeCommonInfo::AT_EnumExtensibility; // "clang::enum_extensibility"
6247 case 'i': // 1 string to match.
6248 if (memcmp(Name.data()+8, "boutletcollection", 17) != 0)
6249 break;
6250 return AttributeCommonInfo::AT_IBOutletCollection; // "clang::iboutletcollection"
6251 case 'm': // 1 string to match.
6252 if (memcmp(Name.data()+8, "ig_server_routine", 17) != 0)
6253 break;
6254 return AttributeCommonInfo::AT_MIGServerRoutine; // "clang::mig_server_routine"
6255 case 'n': // 2 strings to match.
6256 if (memcmp(Name.data()+8, "o_s", 3) != 0)
6257 break;
6258 switch (Name[11]) {
6259 default: break;
6260 case 'a': // 1 string to match.
6261 if (memcmp(Name.data()+12, "nitize_memory", 13) != 0)
6262 break;
6263 return AttributeCommonInfo::AT_NoSanitizeSpecific; // "clang::no_sanitize_memory"
6264 case 't': // 1 string to match.
6265 if (memcmp(Name.data()+12, "ack_protector", 13) != 0)
6266 break;
6267 return AttributeCommonInfo::AT_NoStackProtector; // "clang::no_stack_protector"
6268 }
6269 break;
6270 case 'o': // 3 strings to match.
6271 switch (Name[8]) {
6272 default: break;
6273 case 'b': // 2 strings to match.
6274 if (memcmp(Name.data()+9, "jc_", 3) != 0)
6275 break;
6276 switch (Name[12]) {
6277 default: break;
6278 case 'm': // 1 string to match.
6279 if (memcmp(Name.data()+13, "ethod_family", 12) != 0)
6280 break;
6281 return AttributeCommonInfo::AT_ObjCMethodFamily; // "clang::objc_method_family"
6282 case 'n': // 1 string to match.
6283 if (memcmp(Name.data()+13, "onlazy_class", 12) != 0)
6284 break;
6285 return AttributeCommonInfo::AT_ObjCNonLazyClass; // "clang::objc_nonlazy_class"
6286 }
6287 break;
6288 case 'p': // 1 string to match.
6289 if (memcmp(Name.data()+9, "encl_global_host", 16) != 0)
6290 break;
6291 return AttributeCommonInfo::AT_OpenCLGlobalHostAddressSpace; // "clang::opencl_global_host"
6292 }
6293 break;
6294 case 's': // 2 strings to match.
6295 switch (Name[8]) {
6296 default: break;
6297 case 'w': // 1 string to match.
6298 if (memcmp(Name.data()+9, "ift_error_result", 16) != 0)
6299 break;
6300 return AttributeCommonInfo::AT_SwiftErrorResult; // "clang::swift_error_result"
6301 case 'y': // 1 string to match.
6302 if (memcmp(Name.data()+9, "cl_special_class", 16) != 0)
6303 break;
6304 return AttributeCommonInfo::AT_SYCLSpecialClass; // "clang::sycl_special_class"
6305 }
6306 break;
6307 }
6308 break;
6309 case 26: // 13 strings to match.
6310 if (memcmp(Name.data()+0, "clang::", 7) != 0)
6311 break;
6312 switch (Name[7]) {
6313 default: break;
6314 case 'c': // 4 strings to match.
6315 switch (Name[8]) {
6316 default: break;
6317 case 'f': // 3 strings to match.
6318 if (Name[9] != '_')
6319 break;
6320 switch (Name[10]) {
6321 default: break;
6322 case 'a': // 1 string to match.
6323 if (memcmp(Name.data()+11, "udited_transfer", 15) != 0)
6324 break;
6325 return AttributeCommonInfo::AT_CFAuditedTransfer; // "clang::cf_audited_transfer"
6326 case 'r': // 1 string to match.
6327 if (memcmp(Name.data()+11, "eturns_retained", 15) != 0)
6328 break;
6329 return AttributeCommonInfo::AT_CFReturnsRetained; // "clang::cf_returns_retained"
6330 case 'u': // 1 string to match.
6331 if (memcmp(Name.data()+11, "nknown_transfer", 15) != 0)
6332 break;
6333 return AttributeCommonInfo::AT_CFUnknownTransfer; // "clang::cf_unknown_transfer"
6334 }
6335 break;
6336 case 'o': // 1 string to match.
6337 if (memcmp(Name.data()+9, "ro_await_elidable", 17) != 0)
6338 break;
6339 return AttributeCommonInfo::AT_CoroAwaitElidable; // "clang::coro_await_elidable"
6340 }
6341 break;
6342 case 'd': // 1 string to match.
6343 if (memcmp(Name.data()+8, "iagnose_as_builtin", 18) != 0)
6344 break;
6345 return AttributeCommonInfo::AT_DiagnoseAsBuiltin; // "clang::diagnose_as_builtin"
6346 case 'n': // 1 string to match.
6347 if (memcmp(Name.data()+8, "s_returns_retained", 18) != 0)
6348 break;
6349 return AttributeCommonInfo::AT_NSReturnsRetained; // "clang::ns_returns_retained"
6350 case 'o': // 5 strings to match.
6351 switch (Name[8]) {
6352 default: break;
6353 case 'b': // 4 strings to match.
6354 if (memcmp(Name.data()+9, "jc_", 3) != 0)
6355 break;
6356 switch (Name[12]) {
6357 default: break;
6358 case 'b': // 2 strings to match.
6359 if (memcmp(Name.data()+13, "ridge_", 6) != 0)
6360 break;
6361 switch (Name[19]) {
6362 default: break;
6363 case 'm': // 1 string to match.
6364 if (memcmp(Name.data()+20, "utable", 6) != 0)
6365 break;
6366 return AttributeCommonInfo::AT_ObjCBridgeMutable; // "clang::objc_bridge_mutable"
6367 case 'r': // 1 string to match.
6368 if (memcmp(Name.data()+20, "elated", 6) != 0)
6369 break;
6370 return AttributeCommonInfo::AT_ObjCBridgeRelated; // "clang::objc_bridge_related"
6371 }
6372 break;
6373 case 'd': // 1 string to match.
6374 if (memcmp(Name.data()+13, "irect_members", 13) != 0)
6375 break;
6376 return AttributeCommonInfo::AT_ObjCDirectMembers; // "clang::objc_direct_members"
6377 case 'r': // 1 string to match.
6378 if (memcmp(Name.data()+13, "equires_super", 13) != 0)
6379 break;
6380 return AttributeCommonInfo::AT_ObjCRequiresSuper; // "clang::objc_requires_super"
6381 }
6382 break;
6383 case 's': // 1 string to match.
6384 if (memcmp(Name.data()+9, "_returns_retained", 17) != 0)
6385 break;
6386 return AttributeCommonInfo::AT_OSReturnsRetained; // "clang::os_returns_retained"
6387 }
6388 break;
6389 case 's': // 1 string to match.
6390 if (memcmp(Name.data()+8, "wift_async_context", 18) != 0)
6391 break;
6392 return AttributeCommonInfo::AT_SwiftAsyncContext; // "clang::swift_async_context"
6393 case 'u': // 1 string to match.
6394 if (memcmp(Name.data()+8, "nsafe_buffer_usage", 18) != 0)
6395 break;
6396 return AttributeCommonInfo::AT_UnsafeBufferUsage; // "clang::unsafe_buffer_usage"
6397 }
6398 break;
6399 case 27: // 6 strings to match.
6400 switch (Name[0]) {
6401 default: break;
6402 case 'c': // 5 strings to match.
6403 if (memcmp(Name.data()+1, "lang::", 6) != 0)
6404 break;
6405 switch (Name[7]) {
6406 default: break;
6407 case 'c': // 1 string to match.
6408 if (memcmp(Name.data()+8, "lspv_libclc_builtin", 19) != 0)
6409 break;
6410 return AttributeCommonInfo::AT_ClspvLibclcBuiltin; // "clang::clspv_libclc_builtin"
6411 case 'l': // 1 string to match.
6412 if (memcmp(Name.data()+8, "oader_uninitialized", 19) != 0)
6413 break;
6414 return AttributeCommonInfo::AT_LoaderUninitialized; // "clang::loader_uninitialized"
6415 case 'n': // 1 string to match.
6416 if (memcmp(Name.data()+8, "eon_polyvector_type", 19) != 0)
6417 break;
6418 return AttributeCommonInfo::AT_NeonPolyVectorType; // "clang::neon_polyvector_type"
6419 case 'o': // 2 strings to match.
6420 switch (Name[8]) {
6421 default: break;
6422 case 'b': // 1 string to match.
6423 if (memcmp(Name.data()+9, "jc_runtime_visible", 18) != 0)
6424 break;
6425 return AttributeCommonInfo::AT_ObjCRuntimeVisible; // "clang::objc_runtime_visible"
6426 case 'p': // 1 string to match.
6427 if (memcmp(Name.data()+9, "encl_global_device", 18) != 0)
6428 break;
6429 return AttributeCommonInfo::AT_OpenCLGlobalDeviceAddressSpace; // "clang::opencl_global_device"
6430 }
6431 break;
6432 }
6433 break;
6434 case 'g': // 1 string to match.
6435 if (memcmp(Name.data()+1, "nu::no_instrument_function", 26) != 0)
6436 break;
6437 return AttributeCommonInfo::AT_NoInstrumentFunction; // "gnu::no_instrument_function"
6438 }
6439 break;
6440 case 28: // 8 strings to match.
6441 switch (Name[0]) {
6442 default: break;
6443 case 'c': // 7 strings to match.
6444 if (memcmp(Name.data()+1, "lang::", 6) != 0)
6445 break;
6446 switch (Name[7]) {
6447 default: break;
6448 case 'l': // 1 string to match.
6449 if (memcmp(Name.data()+8, "to_visibility_public", 20) != 0)
6450 break;
6451 return AttributeCommonInfo::AT_LTOVisibilityPublic; // "clang::lto_visibility_public"
6452 case 'o': // 1 string to match.
6453 if (memcmp(Name.data()+8, "bjc_precise_lifetime", 20) != 0)
6454 break;
6455 return AttributeCommonInfo::AT_ObjCPreciseLifetime; // "clang::objc_precise_lifetime"
6456 case 'p': // 2 strings to match.
6457 switch (Name[8]) {
6458 default: break;
6459 case 'o': // 1 string to match.
6460 if (memcmp(Name.data()+9, "inter_with_type_tag", 19) != 0)
6461 break;
6462 return AttributeCommonInfo::AT_ArgumentWithTypeTag; // "clang::pointer_with_type_tag"
6463 case 'r': // 1 string to match.
6464 if (memcmp(Name.data()+9, "eserve_access_index", 19) != 0)
6465 break;
6466 return AttributeCommonInfo::AT_BPFPreserveAccessIndex; // "clang::preserve_access_index"
6467 }
6468 break;
6469 case 's': // 1 string to match.
6470 if (memcmp(Name.data()+8, "wift_indirect_result", 20) != 0)
6471 break;
6472 return AttributeCommonInfo::AT_SwiftIndirectResult; // "clang::swift_indirect_result"
6473 case 't': // 1 string to match.
6474 if (memcmp(Name.data()+8, "ype_tag_for_datatype", 20) != 0)
6475 break;
6476 return AttributeCommonInfo::AT_TypeTagForDatatype; // "clang::type_tag_for_datatype"
6477 case 'x': // 1 string to match.
6478 if (memcmp(Name.data()+8, "ray_never_instrument", 20) != 0)
6479 break;
6480 return AttributeCommonInfo::AT_XRayInstrument; // "clang::xray_never_instrument"
6481 }
6482 break;
6483 case 'g': // 1 string to match.
6484 if (memcmp(Name.data()+1, "nu::force_align_arg_pointer", 27) != 0)
6485 break;
6486 return AttributeCommonInfo::AT_X86ForceAlignArgPointer; // "gnu::force_align_arg_pointer"
6487 }
6488 break;
6489 case 29: // 7 strings to match.
6490 switch (Name[0]) {
6491 default: break;
6492 case 'c': // 6 strings to match.
6493 if (memcmp(Name.data()+1, "lang::", 6) != 0)
6494 break;
6495 switch (Name[7]) {
6496 default: break;
6497 case 'a': // 1 string to match.
6498 if (memcmp(Name.data()+8, "rgument_with_type_tag", 21) != 0)
6499 break;
6500 return AttributeCommonInfo::AT_ArgumentWithTypeTag; // "clang::argument_with_type_tag"
6501 case 'e': // 1 string to match.
6502 if (memcmp(Name.data()+8, "xternal_source_symbol", 21) != 0)
6503 break;
6504 return AttributeCommonInfo::AT_ExternalSourceSymbol; // "clang::external_source_symbol"
6505 case 'o': // 1 string to match.
6506 if (memcmp(Name.data()+8, "bjc_independent_class", 21) != 0)
6507 break;
6508 return AttributeCommonInfo::AT_ObjCIndependentClass; // "clang::objc_independent_class"
6509 case 'p': // 2 strings to match.
6510 switch (Name[8]) {
6511 default: break;
6512 case 'r': // 1 string to match.
6513 if (memcmp(Name.data()+9, "eserve_static_offset", 20) != 0)
6514 break;
6515 return AttributeCommonInfo::AT_BPFPreserveStaticOffset; // "clang::preserve_static_offset"
6516 case 't': // 1 string to match.
6517 if (memcmp(Name.data()+9, "rauth_vtable_pointer", 20) != 0)
6518 break;
6519 return AttributeCommonInfo::AT_VTablePointerAuthentication; // "clang::ptrauth_vtable_pointer"
6520 }
6521 break;
6522 case 'x': // 1 string to match.
6523 if (memcmp(Name.data()+8, "ray_always_instrument", 21) != 0)
6524 break;
6525 return AttributeCommonInfo::AT_XRayInstrument; // "clang::xray_always_instrument"
6526 }
6527 break;
6528 case 'g': // 1 string to match.
6529 if (memcmp(Name.data()+1, "nu::patchable_function_entry", 28) != 0)
6530 break;
6531 return AttributeCommonInfo::AT_PatchableFunctionEntry; // "gnu::patchable_function_entry"
6532 }
6533 break;
6534 case 30: // 6 strings to match.
6535 switch (Name[0]) {
6536 default: break;
6537 case 'c': // 5 strings to match.
6538 if (memcmp(Name.data()+1, "lang::", 6) != 0)
6539 break;
6540 switch (Name[7]) {
6541 default: break;
6542 case 'c': // 1 string to match.
6543 if (memcmp(Name.data()+8, "f_returns_not_retained", 22) != 0)
6544 break;
6545 return AttributeCommonInfo::AT_CFReturnsNotRetained; // "clang::cf_returns_not_retained"
6546 case 'n': // 2 strings to match.
6547 if (memcmp(Name.data()+8, "s_returns_", 10) != 0)
6548 break;
6549 switch (Name[18]) {
6550 default: break;
6551 case 'a': // 1 string to match.
6552 if (memcmp(Name.data()+19, "utoreleased", 11) != 0)
6553 break;
6554 return AttributeCommonInfo::AT_NSReturnsAutoreleased; // "clang::ns_returns_autoreleased"
6555 case 'n': // 1 string to match.
6556 if (memcmp(Name.data()+19, "ot_retained", 11) != 0)
6557 break;
6558 return AttributeCommonInfo::AT_NSReturnsNotRetained; // "clang::ns_returns_not_retained"
6559 }
6560 break;
6561 case 'o': // 1 string to match.
6562 if (memcmp(Name.data()+8, "s_returns_not_retained", 22) != 0)
6563 break;
6564 return AttributeCommonInfo::AT_OSReturnsNotRetained; // "clang::os_returns_not_retained"
6565 case 's': // 1 string to match.
6566 if (memcmp(Name.data()+8, "ycl_kernel_entry_point", 22) != 0)
6567 break;
6568 return AttributeCommonInfo::AT_SYCLKernelEntryPoint; // "clang::sycl_kernel_entry_point"
6569 }
6570 break;
6571 case 'g': // 1 string to match.
6572 if (memcmp(Name.data()+1, "nu::no_caller_saved_registers", 29) != 0)
6573 break;
6574 return AttributeCommonInfo::AT_AnyX86NoCallerSavedRegisters; // "gnu::no_caller_saved_registers"
6575 }
6576 break;
6577 case 31: // 4 strings to match.
6578 switch (Name[0]) {
6579 default: break;
6580 case 'c': // 3 strings to match.
6581 if (memcmp(Name.data()+1, "lang::", 6) != 0)
6582 break;
6583 switch (Name[7]) {
6584 default: break;
6585 case 'c': // 1 string to match.
6586 if (memcmp(Name.data()+8, "fi_canonical_jump_table", 23) != 0)
6587 break;
6588 return AttributeCommonInfo::AT_CFICanonicalJumpTable; // "clang::cfi_canonical_jump_table"
6589 case 'o': // 1 string to match.
6590 if (memcmp(Name.data()+8, "bjc_externally_retained", 23) != 0)
6591 break;
6592 return AttributeCommonInfo::AT_ObjCExternallyRetained; // "clang::objc_externally_retained"
6593 case 'p': // 1 string to match.
6594 if (memcmp(Name.data()+8, "ass_dynamic_object_size", 23) != 0)
6595 break;
6596 return AttributeCommonInfo::AT_PassObjectSize; // "clang::pass_dynamic_object_size"
6597 }
6598 break;
6599 case 'g': // 1 string to match.
6600 if (memcmp(Name.data()+1, "nu::no_address_safety_analysis", 30) != 0)
6601 break;
6602 return AttributeCommonInfo::AT_NoSanitizeSpecific; // "gnu::no_address_safety_analysis"
6603 }
6604 break;
6605 case 32: // 3 strings to match.
6606 if (memcmp(Name.data()+0, "clang::", 7) != 0)
6607 break;
6608 switch (Name[7]) {
6609 default: break;
6610 case '_': // 1 string to match.
6611 if (memcmp(Name.data()+8, "_clang_arm_builtin_alias", 24) != 0)
6612 break;
6613 return AttributeCommonInfo::AT_ArmBuiltinAlias; // "clang::__clang_arm_builtin_alias"
6614 case 'n': // 1 string to match.
6615 if (memcmp(Name.data()+8, "o_thread_safety_analysis", 24) != 0)
6616 break;
6617 return AttributeCommonInfo::AT_NoThreadSafetyAnalysis; // "clang::no_thread_safety_analysis"
6618 case 'o': // 1 string to match.
6619 if (memcmp(Name.data()+8, "bjc_non_runtime_protocol", 24) != 0)
6620 break;
6621 return AttributeCommonInfo::AT_ObjCNonRuntimeProtocol; // "clang::objc_non_runtime_protocol"
6622 }
6623 break;
6624 case 33: // 3 strings to match.
6625 if (memcmp(Name.data()+0, "clang::", 7) != 0)
6626 break;
6627 switch (Name[7]) {
6628 default: break;
6629 case 'c': // 1 string to match.
6630 if (memcmp(Name.data()+8, "oro_disable_lifetimebound", 25) != 0)
6631 break;
6632 return AttributeCommonInfo::AT_CoroDisableLifetimeBound; // "clang::coro_disable_lifetimebound"
6633 case 'o': // 1 string to match.
6634 if (memcmp(Name.data()+8, "bjc_returns_inner_pointer", 25) != 0)
6635 break;
6636 return AttributeCommonInfo::AT_ObjCReturnsInnerPointer; // "clang::objc_returns_inner_pointer"
6637 case 's': // 1 string to match.
6638 if (memcmp(Name.data()+8, "peculative_load_hardening", 25) != 0)
6639 break;
6640 return AttributeCommonInfo::AT_SpeculativeLoadHardening; // "clang::speculative_load_hardening"
6641 }
6642 break;
6643 case 34: // 4 strings to match.
6644 if (memcmp(Name.data()+0, "clang::", 7) != 0)
6645 break;
6646 switch (Name[7]) {
6647 default: break;
6648 case 'e': // 1 string to match.
6649 if (memcmp(Name.data()+8, "nforce_read_only_placement", 26) != 0)
6650 break;
6651 return AttributeCommonInfo::AT_ReadOnlyPlacement; // "clang::enforce_read_only_placement"
6652 case 'o': // 3 strings to match.
6653 switch (Name[8]) {
6654 default: break;
6655 case 'b': // 2 strings to match.
6656 if (memcmp(Name.data()+9, "jc_", 3) != 0)
6657 break;
6658 switch (Name[12]) {
6659 default: break;
6660 case 'd': // 1 string to match.
6661 if (memcmp(Name.data()+13, "esignated_initializer", 21) != 0)
6662 break;
6663 return AttributeCommonInfo::AT_ObjCDesignatedInitializer; // "clang::objc_designated_initializer"
6664 case 's': // 1 string to match.
6665 if (memcmp(Name.data()+13, "ubclassing_restricted", 21) != 0)
6666 break;
6667 return AttributeCommonInfo::AT_ObjCSubclassingRestricted; // "clang::objc_subclassing_restricted"
6668 }
6669 break;
6670 case 's': // 1 string to match.
6671 if (memcmp(Name.data()+9, "_returns_retained_on_zero", 25) != 0)
6672 break;
6673 return AttributeCommonInfo::AT_OSReturnsRetainedOnZero; // "clang::os_returns_retained_on_zero"
6674 }
6675 break;
6676 }
6677 break;
6678 case 35: // 2 strings to match.
6679 switch (Name[0]) {
6680 default: break;
6681 case 'c': // 1 string to match.
6682 if (memcmp(Name.data()+1, "lang::coro_await_elidable_argument", 34) != 0)
6683 break;
6684 return AttributeCommonInfo::AT_CoroAwaitElidableArgument; // "clang::coro_await_elidable_argument"
6685 case 'g': // 1 string to match.
6686 if (memcmp(Name.data()+1, "nu::no_profile_instrument_function", 34) != 0)
6687 break;
6688 return AttributeCommonInfo::AT_NoProfileFunction; // "gnu::no_profile_instrument_function"
6689 }
6690 break;
6691 case 36: // 1 string to match.
6692 if (memcmp(Name.data()+0, "clang::no_speculative_load_hardening", 36) != 0)
6693 break;
6694 return AttributeCommonInfo::AT_NoSpeculativeLoadHardening; // "clang::no_speculative_load_hardening"
6695 case 38: // 3 strings to match.
6696 if (memcmp(Name.data()+0, "clang::", 7) != 0)
6697 break;
6698 switch (Name[7]) {
6699 default: break;
6700 case 'c': // 1 string to match.
6701 if (memcmp(Name.data()+8, "oro_only_destroy_when_complete", 30) != 0)
6702 break;
6703 return AttributeCommonInfo::AT_CoroOnlyDestroyWhenComplete; // "clang::coro_only_destroy_when_complete"
6704 case 'o': // 1 string to match.
6705 if (memcmp(Name.data()+8, "s_returns_retained_on_non_zero", 30) != 0)
6706 break;
6707 return AttributeCommonInfo::AT_OSReturnsRetainedOnNonZero; // "clang::os_returns_retained_on_non_zero"
6708 case 'r': // 1 string to match.
6709 if (memcmp(Name.data()+8, "equire_explicit_initialization", 30) != 0)
6710 break;
6711 return AttributeCommonInfo::AT_ExplicitInit; // "clang::require_explicit_initialization"
6712 }
6713 break;
6714 case 40: // 1 string to match.
6715 if (memcmp(Name.data()+0, "clang::disable_sanitizer_instrumentation", 40) != 0)
6716 break;
6717 return AttributeCommonInfo::AT_DisableSanitizerInstrumentation; // "clang::disable_sanitizer_instrumentation"
6718 case 41: // 1 string to match.
6719 if (memcmp(Name.data()+0, "clang::objc_requires_property_definitions", 41) != 0)
6720 break;
6721 return AttributeCommonInfo::AT_ObjCRequiresPropertyDefs; // "clang::objc_requires_property_definitions"
6722 case 42: // 3 strings to match.
6723 if (memcmp(Name.data()+0, "clang::", 7) != 0)
6724 break;
6725 switch (Name[7]) {
6726 default: break;
6727 case '_': // 1 string to match.
6728 if (memcmp(Name.data()+8, "_clang_arm_mve_strict_polymorphism", 34) != 0)
6729 break;
6730 return AttributeCommonInfo::AT_ArmMveStrictPolymorphism; // "clang::__clang_arm_mve_strict_polymorphism"
6731 case 'e': // 1 string to match.
6732 if (memcmp(Name.data()+8, "xclude_from_explicit_instantiation", 34) != 0)
6733 break;
6734 return AttributeCommonInfo::AT_ExcludeFromExplicitInstantiation; // "clang::exclude_from_explicit_instantiation"
6735 case 'o': // 1 string to match.
6736 if (memcmp(Name.data()+8, "bjc_arc_weak_reference_unavailable", 34) != 0)
6737 break;
6738 return AttributeCommonInfo::AT_ArcWeakrefUnavailable; // "clang::objc_arc_weak_reference_unavailable"
6739 }
6740 break;
6741 case 44: // 1 string to match.
6742 if (memcmp(Name.data()+0, "clang::available_only_in_default_eval_method", 44) != 0)
6743 break;
6744 return AttributeCommonInfo::AT_AvailableOnlyInDefaultEvalMethod; // "clang::available_only_in_default_eval_method"
6745 case 53: // 1 string to match.
6746 if (memcmp(Name.data()+0, "clang::objc_protocol_requires_explicit_implementation", 53) != 0)
6747 break;
6748 return AttributeCommonInfo::AT_ObjCExplicitProtocolImpl; // "clang::objc_protocol_requires_explicit_implementation"
6749 }
6750 } else if (AttributeCommonInfo::AS_Keyword == Syntax || AttributeCommonInfo::AS_ContextSensitiveKeyword == Syntax) {
6751 switch (Name.size()) {
6752 default: break;
6753 case 2: // 1 string to match.
6754 if (memcmp(Name.data()+0, "in", 2) != 0)
6755 break;
6756 return AttributeCommonInfo::AT_HLSLParamModifier; // "in"
6757 case 3: // 1 string to match.
6758 if (memcmp(Name.data()+0, "out", 3) != 0)
6759 break;
6760 return AttributeCommonInfo::AT_HLSLParamModifier; // "out"
6761 case 5: // 3 strings to match.
6762 switch (Name[0]) {
6763 default: break;
6764 case '_': // 1 string to match.
6765 if (memcmp(Name.data()+1, "_w64", 4) != 0)
6766 break;
6767 return AttributeCommonInfo::IgnoredAttribute; // "__w64"
6768 case 'i': // 1 string to match.
6769 if (memcmp(Name.data()+1, "nout", 4) != 0)
6770 break;
6771 return AttributeCommonInfo::AT_HLSLParamModifier; // "inout"
6772 case 'l': // 1 string to match.
6773 if (memcmp(Name.data()+1, "ocal", 4) != 0)
6774 break;
6775 return AttributeCommonInfo::AT_OpenCLLocalAddressSpace; // "local"
6776 }
6777 break;
6778 case 6: // 5 strings to match.
6779 switch (Name[0]) {
6780 default: break;
6781 case '_': // 3 strings to match.
6782 switch (Name[1]) {
6783 default: break;
6784 case '_': // 2 strings to match.
6785 switch (Name[2]) {
6786 default: break;
6787 case 's': // 1 string to match.
6788 if (memcmp(Name.data()+3, "ptr", 3) != 0)
6789 break;
6790 return AttributeCommonInfo::AT_SPtr; // "__sptr"
6791 case 'u': // 1 string to match.
6792 if (memcmp(Name.data()+3, "ptr", 3) != 0)
6793 break;
6794 return AttributeCommonInfo::AT_UPtr; // "__uptr"
6795 }
6796 break;
6797 case 'c': // 1 string to match.
6798 if (memcmp(Name.data()+2, "decl", 4) != 0)
6799 break;
6800 return AttributeCommonInfo::AT_CDecl; // "_cdecl"
6801 }
6802 break;
6803 case 'g': // 1 string to match.
6804 if (memcmp(Name.data()+1, "lobal", 5) != 0)
6805 break;
6806 return AttributeCommonInfo::AT_OpenCLGlobalAddressSpace; // "global"
6807 case 'k': // 1 string to match.
6808 if (memcmp(Name.data()+1, "ernel", 5) != 0)
6809 break;
6810 return AttributeCommonInfo::AT_OpenCLKernel; // "kernel"
6811 }
6812 break;
6813 case 7: // 8 strings to match.
6814 switch (Name[0]) {
6815 default: break;
6816 case '_': // 5 strings to match.
6817 switch (Name[1]) {
6818 default: break;
6819 case '_': // 4 strings to match.
6820 switch (Name[2]) {
6821 default: break;
6822 case 'c': // 1 string to match.
6823 if (memcmp(Name.data()+3, "decl", 4) != 0)
6824 break;
6825 return AttributeCommonInfo::AT_CDecl; // "__cdecl"
6826 case 'l': // 1 string to match.
6827 if (memcmp(Name.data()+3, "ocal", 4) != 0)
6828 break;
6829 return AttributeCommonInfo::AT_OpenCLLocalAddressSpace; // "__local"
6830 case 'p': // 2 strings to match.
6831 if (memcmp(Name.data()+3, "tr", 2) != 0)
6832 break;
6833 switch (Name[5]) {
6834 default: break;
6835 case '3': // 1 string to match.
6836 if (Name[6] != '2')
6837 break;
6838 return AttributeCommonInfo::AT_Ptr32; // "__ptr32"
6839 case '6': // 1 string to match.
6840 if (Name[6] != '4')
6841 break;
6842 return AttributeCommonInfo::AT_Ptr64; // "__ptr64"
6843 }
6844 break;
6845 }
6846 break;
6847 case 'p': // 1 string to match.
6848 if (memcmp(Name.data()+2, "ascal", 5) != 0)
6849 break;
6850 return AttributeCommonInfo::AT_Pascal; // "_pascal"
6851 }
6852 break;
6853 case 'a': // 1 string to match.
6854 if (memcmp(Name.data()+1, "lignas", 6) != 0)
6855 break;
6856 return AttributeCommonInfo::AT_Aligned; // "alignas"
6857 case 'g': // 1 string to match.
6858 if (memcmp(Name.data()+1, "eneric", 6) != 0)
6859 break;
6860 return AttributeCommonInfo::AT_OpenCLGenericAddressSpace; // "generic"
6861 case 'p': // 1 string to match.
6862 if (memcmp(Name.data()+1, "rivate", 6) != 0)
6863 break;
6864 return AttributeCommonInfo::AT_OpenCLPrivateAddressSpace; // "private"
6865 }
6866 break;
6867 case 8: // 9 strings to match.
6868 switch (Name[0]) {
6869 default: break;
6870 case '_': // 8 strings to match.
6871 switch (Name[1]) {
6872 default: break;
6873 case 'A': // 1 string to match.
6874 if (memcmp(Name.data()+2, "lignas", 6) != 0)
6875 break;
6876 return AttributeCommonInfo::AT_Aligned; // "_Alignas"
6877 case 'N': // 1 string to match.
6878 if (memcmp(Name.data()+2, "onnull", 6) != 0)
6879 break;
6880 return AttributeCommonInfo::AT_TypeNonNull; // "_Nonnull"
6881 case '_': // 5 strings to match.
6882 switch (Name[2]) {
6883 default: break;
6884 case 'a': // 1 string to match.
6885 if (memcmp(Name.data()+3, "rm_in", 5) != 0)
6886 break;
6887 return AttributeCommonInfo::AT_ArmIn; // "__arm_in"
6888 case 'g': // 1 string to match.
6889 if (memcmp(Name.data()+3, "lobal", 5) != 0)
6890 break;
6891 return AttributeCommonInfo::AT_OpenCLGlobalAddressSpace; // "__global"
6892 case 'k': // 2 strings to match.
6893 switch (Name[3]) {
6894 default: break;
6895 case 'e': // 1 string to match.
6896 if (memcmp(Name.data()+4, "rnel", 4) != 0)
6897 break;
6898 return AttributeCommonInfo::AT_OpenCLKernel; // "__kernel"
6899 case 'i': // 1 string to match.
6900 if (memcmp(Name.data()+4, "ndof", 4) != 0)
6901 break;
6902 return AttributeCommonInfo::AT_ObjCKindOf; // "__kindof"
6903 }
6904 break;
6905 case 'p': // 1 string to match.
6906 if (memcmp(Name.data()+3, "ascal", 5) != 0)
6907 break;
6908 return AttributeCommonInfo::AT_Pascal; // "__pascal"
6909 }
6910 break;
6911 case 's': // 1 string to match.
6912 if (memcmp(Name.data()+2, "tdcall", 6) != 0)
6913 break;
6914 return AttributeCommonInfo::AT_StdCall; // "_stdcall"
6915 }
6916 break;
6917 case 'c': // 1 string to match.
6918 if (memcmp(Name.data()+1, "onstant", 7) != 0)
6919 break;
6920 return AttributeCommonInfo::AT_OpenCLConstantAddressSpace; // "constant"
6921 }
6922 break;
6923 case 9: // 12 strings to match.
6924 switch (Name[0]) {
6925 default: break;
6926 case '_': // 10 strings to match.
6927 switch (Name[1]) {
6928 default: break;
6929 case 'N': // 1 string to match.
6930 if (memcmp(Name.data()+2, "ullable", 7) != 0)
6931 break;
6932 return AttributeCommonInfo::AT_TypeNullable; // "_Nullable"
6933 case '_': // 7 strings to match.
6934 switch (Name[2]) {
6935 default: break;
6936 case 'a': // 2 strings to match.
6937 if (memcmp(Name.data()+3, "rm_", 3) != 0)
6938 break;
6939 switch (Name[6]) {
6940 default: break;
6941 case 'n': // 1 string to match.
6942 if (memcmp(Name.data()+7, "ew", 2) != 0)
6943 break;
6944 return AttributeCommonInfo::AT_ArmNew; // "__arm_new"
6945 case 'o': // 1 string to match.
6946 if (memcmp(Name.data()+7, "ut", 2) != 0)
6947 break;
6948 return AttributeCommonInfo::AT_ArmOut; // "__arm_out"
6949 }
6950 break;
6951 case 'f': // 1 string to match.
6952 if (memcmp(Name.data()+3, "uncref", 6) != 0)
6953 break;
6954 return AttributeCommonInfo::AT_WebAssemblyFuncref; // "__funcref"
6955 case 'g': // 1 string to match.
6956 if (memcmp(Name.data()+3, "eneric", 6) != 0)
6957 break;
6958 return AttributeCommonInfo::AT_OpenCLGenericAddressSpace; // "__generic"
6959 case 'p': // 1 string to match.
6960 if (memcmp(Name.data()+3, "rivate", 6) != 0)
6961 break;
6962 return AttributeCommonInfo::AT_OpenCLPrivateAddressSpace; // "__private"
6963 case 'r': // 1 string to match.
6964 if (memcmp(Name.data()+3, "egcall", 6) != 0)
6965 break;
6966 return AttributeCommonInfo::AT_RegCall; // "__regcall"
6967 case 's': // 1 string to match.
6968 if (memcmp(Name.data()+3, "tdcall", 6) != 0)
6969 break;
6970 return AttributeCommonInfo::AT_StdCall; // "__stdcall"
6971 }
6972 break;
6973 case 'f': // 1 string to match.
6974 if (memcmp(Name.data()+2, "astcall", 7) != 0)
6975 break;
6976 return AttributeCommonInfo::AT_FastCall; // "_fastcall"
6977 case 't': // 1 string to match.
6978 if (memcmp(Name.data()+2, "hiscall", 7) != 0)
6979 break;
6980 return AttributeCommonInfo::AT_ThisCall; // "_thiscall"
6981 }
6982 break;
6983 case 'c': // 1 string to match.
6984 if (memcmp(Name.data()+1, "onstinit", 8) != 0)
6985 break;
6986 return AttributeCommonInfo::AT_ConstInit; // "constinit"
6987 case 'r': // 1 string to match.
6988 if (memcmp(Name.data()+1, "ead_only", 8) != 0)
6989 break;
6990 return AttributeCommonInfo::AT_OpenCLAccess; // "read_only"
6991 }
6992 break;
6993 case 10: // 5 strings to match.
6994 switch (Name[0]) {
6995 default: break;
6996 case '_': // 3 strings to match.
6997 if (Name[1] != '_')
6998 break;
6999 switch (Name[2]) {
7000 default: break;
7001 case 'c': // 1 string to match.
7002 if (memcmp(Name.data()+3, "onstant", 7) != 0)
7003 break;
7004 return AttributeCommonInfo::AT_OpenCLConstantAddressSpace; // "__constant"
7005 case 'f': // 1 string to match.
7006 if (memcmp(Name.data()+3, "astcall", 7) != 0)
7007 break;
7008 return AttributeCommonInfo::AT_FastCall; // "__fastcall"
7009 case 't': // 1 string to match.
7010 if (memcmp(Name.data()+3, "hiscall", 7) != 0)
7011 break;
7012 return AttributeCommonInfo::AT_ThisCall; // "__thiscall"
7013 }
7014 break;
7015 case 'r': // 1 string to match.
7016 if (memcmp(Name.data()+1, "ead_write", 9) != 0)
7017 break;
7018 return AttributeCommonInfo::AT_OpenCLAccess; // "read_write"
7019 case 'w': // 1 string to match.
7020 if (memcmp(Name.data()+1, "rite_only", 9) != 0)
7021 break;
7022 return AttributeCommonInfo::AT_OpenCLAccess; // "write_only"
7023 }
7024 break;
7025 case 11: // 4 strings to match.
7026 switch (Name[0]) {
7027 default: break;
7028 case '_': // 3 strings to match.
7029 switch (Name[1]) {
7030 default: break;
7031 case '_': // 2 strings to match.
7032 switch (Name[2]) {
7033 default: break;
7034 case 'a': // 1 string to match.
7035 if (memcmp(Name.data()+3, "rm_inout", 8) != 0)
7036 break;
7037 return AttributeCommonInfo::AT_ArmInOut; // "__arm_inout"
7038 case 'r': // 1 string to match.
7039 if (memcmp(Name.data()+3, "ead_only", 8) != 0)
7040 break;
7041 return AttributeCommonInfo::AT_OpenCLAccess; // "__read_only"
7042 }
7043 break;
7044 case 'v': // 1 string to match.
7045 if (memcmp(Name.data()+2, "ectorcall", 9) != 0)
7046 break;
7047 return AttributeCommonInfo::AT_VectorCall; // "_vectorcall"
7048 }
7049 break;
7050 case 'g': // 1 string to match.
7051 if (memcmp(Name.data()+1, "roupshared", 10) != 0)
7052 break;
7053 return AttributeCommonInfo::AT_HLSLGroupSharedAddressSpace; // "groupshared"
7054 }
7055 break;
7056 case 12: // 4 strings to match.
7057 if (memcmp(Name.data()+0, "__", 2) != 0)
7058 break;
7059 switch (Name[2]) {
7060 default: break;
7061 case 'n': // 1 string to match.
7062 if (memcmp(Name.data()+3, "oinline__", 9) != 0)
7063 break;
7064 return AttributeCommonInfo::AT_NoInline; // "__noinline__"
7065 case 'r': // 1 string to match.
7066 if (memcmp(Name.data()+3, "ead_write", 9) != 0)
7067 break;
7068 return AttributeCommonInfo::AT_OpenCLAccess; // "__read_write"
7069 case 'v': // 1 string to match.
7070 if (memcmp(Name.data()+3, "ectorcall", 9) != 0)
7071 break;
7072 return AttributeCommonInfo::AT_VectorCall; // "__vectorcall"
7073 case 'w': // 1 string to match.
7074 if (memcmp(Name.data()+3, "rite_only", 9) != 0)
7075 break;
7076 return AttributeCommonInfo::AT_OpenCLAccess; // "__write_only"
7077 }
7078 break;
7079 case 13: // 1 string to match.
7080 if (memcmp(Name.data()+0, "__forceinline", 13) != 0)
7081 break;
7082 return AttributeCommonInfo::AT_AlwaysInline; // "__forceinline"
7083 case 14: // 1 string to match.
7084 if (memcmp(Name.data()+0, "__arm_agnostic", 14) != 0)
7085 break;
7086 return AttributeCommonInfo::AT_ArmAgnostic; // "__arm_agnostic"
7087 case 15: // 2 strings to match.
7088 if (memcmp(Name.data()+0, "__arm_", 6) != 0)
7089 break;
7090 switch (Name[6]) {
7091 default: break;
7092 case 'p': // 1 string to match.
7093 if (memcmp(Name.data()+7, "reserves", 8) != 0)
7094 break;
7095 return AttributeCommonInfo::AT_ArmPreserves; // "__arm_preserves"
7096 case 's': // 1 string to match.
7097 if (memcmp(Name.data()+7, "treaming", 8) != 0)
7098 break;
7099 return AttributeCommonInfo::AT_ArmStreaming; // "__arm_streaming"
7100 }
7101 break;
7102 case 16: // 1 string to match.
7103 if (memcmp(Name.data()+0, "_Nullable_result", 16) != 0)
7104 break;
7105 return AttributeCommonInfo::AT_TypeNullableResult; // "_Nullable_result"
7106 case 17: // 1 string to match.
7107 if (memcmp(Name.data()+0, "_Null_unspecified", 17) != 0)
7108 break;
7109 return AttributeCommonInfo::AT_TypeNullUnspecified; // "_Null_unspecified"
7110 case 19: // 1 string to match.
7111 if (memcmp(Name.data()+0, "__unsafe_unretained", 19) != 0)
7112 break;
7113 return AttributeCommonInfo::AT_ObjCInertUnsafeUnretained; // "__unsafe_unretained"
7114 case 20: // 1 string to match.
7115 if (memcmp(Name.data()+0, "__single_inheritance", 20) != 0)
7116 break;
7117 return AttributeCommonInfo::AT_MSInheritance; // "__single_inheritance"
7118 case 21: // 1 string to match.
7119 if (memcmp(Name.data()+0, "__virtual_inheritance", 21) != 0)
7120 break;
7121 return AttributeCommonInfo::AT_MSInheritance; // "__virtual_inheritance"
7122 case 22: // 1 string to match.
7123 if (memcmp(Name.data()+0, "__multiple_inheritance", 22) != 0)
7124 break;
7125 return AttributeCommonInfo::AT_MSInheritance; // "__multiple_inheritance"
7126 case 23: // 1 string to match.
7127 if (memcmp(Name.data()+0, "__arm_locally_streaming", 23) != 0)
7128 break;
7129 return AttributeCommonInfo::AT_ArmLocallyStreaming; // "__arm_locally_streaming"
7130 case 25: // 1 string to match.
7131 if (memcmp(Name.data()+0, "__unspecified_inheritance", 25) != 0)
7132 break;
7133 return AttributeCommonInfo::AT_MSInheritance; // "__unspecified_inheritance"
7134 case 26: // 1 string to match.
7135 if (memcmp(Name.data()+0, "__arm_streaming_compatible", 26) != 0)
7136 break;
7137 return AttributeCommonInfo::AT_ArmStreamingCompatible; // "__arm_streaming_compatible"
7138 }
7139 } else if (AttributeCommonInfo::AS_Pragma == Syntax) {
7140 switch (Name.size()) {
7141 default: break;
7142 case 4: // 1 string to match.
7143 if (memcmp(Name.data()+0, "loop", 4) != 0)
7144 break;
7145 return AttributeCommonInfo::AT_LoopHint; // "loop"
7146 case 6: // 1 string to match.
7147 if (memcmp(Name.data()+0, "unroll", 6) != 0)
7148 break;
7149 return AttributeCommonInfo::AT_LoopHint; // "unroll"
7150 case 8: // 1 string to match.
7151 if (memcmp(Name.data()+0, "nounroll", 8) != 0)
7152 break;
7153 return AttributeCommonInfo::AT_LoopHint; // "nounroll"
7154 case 14: // 1 string to match.
7155 if (memcmp(Name.data()+0, "unroll_and_jam", 14) != 0)
7156 break;
7157 return AttributeCommonInfo::AT_LoopHint; // "unroll_and_jam"
7158 case 16: // 1 string to match.
7159 if (memcmp(Name.data()+0, "nounroll_and_jam", 16) != 0)
7160 break;
7161 return AttributeCommonInfo::AT_LoopHint; // "nounroll_and_jam"
7162 }
7163 } else if (AttributeCommonInfo::AS_HLSLAnnotation == Syntax) {
7164 switch (Name.size()) {
7165 default: break;
7166 case 8: // 1 string to match.
7167 if (memcmp(Name.data()+0, "register", 8) != 0)
7168 break;
7169 return AttributeCommonInfo::AT_HLSLResourceBinding; // "register"
7170 case 10: // 2 strings to match.
7171 switch (Name[0]) {
7172 default: break;
7173 case 'S': // 1 string to match.
7174 if (memcmp(Name.data()+1, "V_GroupID", 9) != 0)
7175 break;
7176 return AttributeCommonInfo::AT_HLSLSV_GroupID; // "SV_GroupID"
7177 case 'p': // 1 string to match.
7178 if (memcmp(Name.data()+1, "ackoffset", 9) != 0)
7179 break;
7180 return AttributeCommonInfo::AT_HLSLPackOffset; // "packoffset"
7181 }
7182 break;
7183 case 13: // 1 string to match.
7184 if (memcmp(Name.data()+0, "SV_GroupIndex", 13) != 0)
7185 break;
7186 return AttributeCommonInfo::AT_HLSLSV_GroupIndex; // "SV_GroupIndex"
7187 case 16: // 1 string to match.
7188 if (memcmp(Name.data()+0, "SV_GroupThreadID", 16) != 0)
7189 break;
7190 return AttributeCommonInfo::AT_HLSLSV_GroupThreadID; // "SV_GroupThreadID"
7191 case 19: // 1 string to match.
7192 if (memcmp(Name.data()+0, "SV_DispatchThreadID", 19) != 0)
7193 break;
7194 return AttributeCommonInfo::AT_HLSLSV_DispatchThreadID; // "SV_DispatchThreadID"
7195 }
7196 }
7197 return AttributeCommonInfo::UnknownAttribute;
7198 }