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