| OLD | NEW |
| 1 //===--- Triple.cpp - Target triple helper class --------------------------===// | 1 //===--- Triple.cpp - Target triple helper class --------------------------===// |
| 2 // | 2 // |
| 3 // The LLVM Compiler Infrastructure | 3 // The LLVM Compiler Infrastructure |
| 4 // | 4 // |
| 5 // This file is distributed under the University of Illinois Open Source | 5 // This file is distributed under the University of Illinois Open Source |
| 6 // License. See LICENSE.TXT for details. | 6 // License. See LICENSE.TXT for details. |
| 7 // | 7 // |
| 8 //===----------------------------------------------------------------------===// | 8 //===----------------------------------------------------------------------===// |
| 9 | 9 |
| 10 #include "llvm/ADT/Triple.h" | 10 #include "llvm/ADT/Triple.h" |
| 11 #include "llvm/ADT/SmallString.h" | 11 #include "llvm/ADT/SmallString.h" |
| 12 #include "llvm/ADT/STLExtras.h" | 12 #include "llvm/ADT/STLExtras.h" |
| 13 #include "llvm/Support/ErrorHandling.h" |
| 13 #include <cstring> | 14 #include <cstring> |
| 14 using namespace llvm; | 15 using namespace llvm; |
| 15 | 16 |
| 16 const char *Triple::getArchTypeName(ArchType Kind) { | 17 const char *Triple::getArchTypeName(ArchType Kind) { |
| 17 switch (Kind) { | 18 switch (Kind) { |
| 18 case InvalidArch: return "<invalid>"; | 19 case InvalidArch: return "<invalid>"; |
| 19 case UnknownArch: return "unknown"; | 20 case UnknownArch: return "unknown"; |
| 20 | 21 |
| 21 case alpha: return "alpha"; | 22 case alpha: return "alpha"; |
| 22 case arm: return "arm"; | 23 case arm: return "arm"; |
| (...skipping 298 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 321 else if (VendorName == "pc") | 322 else if (VendorName == "pc") |
| 322 return PC; | 323 return PC; |
| 323 else if (VendorName == "scei") | 324 else if (VendorName == "scei") |
| 324 return SCEI; | 325 return SCEI; |
| 325 else | 326 else |
| 326 return UnknownVendor; | 327 return UnknownVendor; |
| 327 } | 328 } |
| 328 | 329 |
| 329 Triple::OSType Triple::ParseOS(StringRef OSName) { | 330 Triple::OSType Triple::ParseOS(StringRef OSName) { |
| 330 if (OSName.startswith("auroraux")) | 331 if (OSName.startswith("auroraux")) |
| 332 #if defined(LLVM_ENABLED_TARGET_OS_AURORAUX) |
| 331 return AuroraUX; | 333 return AuroraUX; |
| 334 #else |
| 335 llvm_unreachable( |
| 336 "ParseOS auroraux w/out LLVM_ENABLED_TARGET_OS_AURORAUX"); |
| 337 #endif |
| 332 else if (OSName.startswith("cygwin")) | 338 else if (OSName.startswith("cygwin")) |
| 339 #if defined(LLVM_ENABLED_TARGET_OS_CYGWIN) |
| 333 return Cygwin; | 340 return Cygwin; |
| 341 #else |
| 342 llvm_unreachable("ParseOS cygwin w/out LLVM_ENABLED_TARGET_OS_CYGWIN"); |
| 343 #endif |
| 334 else if (OSName.startswith("darwin")) | 344 else if (OSName.startswith("darwin")) |
| 345 #if defined(LLVM_ENABLED_TARGET_OS_DARWIN) |
| 335 return Darwin; | 346 return Darwin; |
| 347 #else |
| 348 llvm_unreachable("ParseOS darwin w/out LLVM_ENABLED_TARGET_OS_DARWIN"); |
| 349 #endif |
| 336 else if (OSName.startswith("dragonfly")) | 350 else if (OSName.startswith("dragonfly")) |
| 351 #if defined(LLVM_ENABLED_TARGET_OS_DRAGONFLY) |
| 337 return DragonFly; | 352 return DragonFly; |
| 353 #else |
| 354 llvm_unreachable( |
| 355 "ParseOS dragonfly w/out LLVM_ENABLED_TARGET_OS_DRAGONFLY"); |
| 356 #endif |
| 338 else if (OSName.startswith("freebsd")) | 357 else if (OSName.startswith("freebsd")) |
| 358 #if defined(LLVM_ENABLED_TARGET_OS_FREEBSD) |
| 339 return FreeBSD; | 359 return FreeBSD; |
| 360 #else |
| 361 llvm_unreachable("ParseOS freebsd w/out LLVM_ENABLED_TARGET_OS_FREEBSD"); |
| 362 #endif |
| 340 else if (OSName.startswith("ios")) | 363 else if (OSName.startswith("ios")) |
| 364 #if defined(LLVM_ENABLED_TARGET_OS_IOS) |
| 341 return IOS; | 365 return IOS; |
| 366 #else |
| 367 llvm_unreachable("ParseOS ios w/out LLVM_ENABLED_TARGET_OS_IOS"); |
| 368 #endif |
| 342 else if (OSName.startswith("kfreebsd")) | 369 else if (OSName.startswith("kfreebsd")) |
| 370 #if defined(LLVM_ENABLED_TARGET_OS_KFREEBSD) |
| 343 return KFreeBSD; | 371 return KFreeBSD; |
| 372 #else |
| 373 llvm_unreachable("ParseOS kfreebsd w/out LLVM_ENABLED_TARGET_OS_KFREEBSD"); |
| 374 #endif |
| 344 else if (OSName.startswith("linux")) | 375 else if (OSName.startswith("linux")) |
| 376 #if defined(LLVM_ENABLED_TARGET_OS_LINUX) |
| 345 return Linux; | 377 return Linux; |
| 378 #else |
| 379 llvm_unreachable("ParseOS linux w/out LLVM_ENABLED_TARGET_OS_LINUX"); |
| 380 #endif |
| 346 else if (OSName.startswith("lv2")) | 381 else if (OSName.startswith("lv2")) |
| 382 #if defined(LLVM_ENABLED_TARGET_OS_LV2) |
| 347 return Lv2; | 383 return Lv2; |
| 384 #else |
| 385 llvm_unreachable("ParseOS lv2 w/out LLVM_ENABLED_TARGET_OS_LV2"); |
| 386 #endif |
| 348 else if (OSName.startswith("macosx")) | 387 else if (OSName.startswith("macosx")) |
| 388 #if defined(LLVM_ENABLED_TARGET_OS_MACOSX) |
| 349 return MacOSX; | 389 return MacOSX; |
| 390 #else |
| 391 llvm_unreachable("ParseOS macosx w/out LLVM_ENABLED_TARGET_OS_MACOSX"); |
| 392 #endif |
| 350 else if (OSName.startswith("mingw32")) | 393 else if (OSName.startswith("mingw32")) |
| 394 #if defined(LLVM_ENABLED_TARGET_OS_MINGW32) |
| 351 return MinGW32; | 395 return MinGW32; |
| 396 #else |
| 397 llvm_unreachable("ParseOS mingw32 w/out LLVM_ENABLED_TARGET_OS_MINGW32"); |
| 398 #endif |
| 352 else if (OSName.startswith("netbsd")) | 399 else if (OSName.startswith("netbsd")) |
| 400 #if defined(LLVM_ENABLED_TARGET_OS_NETBSD) |
| 353 return NetBSD; | 401 return NetBSD; |
| 402 #else |
| 403 llvm_unreachable("ParseOS netbsd w/out LLVM_ENABLED_TARGET_OS_NETBSD"); |
| 404 #endif |
| 354 else if (OSName.startswith("openbsd")) | 405 else if (OSName.startswith("openbsd")) |
| 406 #if defined(LLVM_ENABLED_TARGET_OS_OPENBSD) |
| 355 return OpenBSD; | 407 return OpenBSD; |
| 408 #else |
| 409 llvm_unreachable("ParseOS openbsd w/out LLVM_ENABLED_TARGET_OS_OPENBSD"); |
| 410 #endif |
| 356 else if (OSName.startswith("psp")) | 411 else if (OSName.startswith("psp")) |
| 412 #if defined(LLVM_ENABLED_TARGET_OS_PSP) |
| 357 return Psp; | 413 return Psp; |
| 414 #else |
| 415 llvm_unreachable("ParseOS psp w/out LLVM_ENABLED_TARGET_OS_PSP"); |
| 416 #endif |
| 358 else if (OSName.startswith("solaris")) | 417 else if (OSName.startswith("solaris")) |
| 418 #if defined(LLVM_ENABLED_TARGET_OS_SOLARIS) |
| 359 return Solaris; | 419 return Solaris; |
| 420 #else |
| 421 llvm_unreachable("ParseOS solaris w/out LLVM_ENABLED_TARGET_OS_SOLARIS"); |
| 422 #endif |
| 360 else if (OSName.startswith("win32")) | 423 else if (OSName.startswith("win32")) |
| 424 #if defined(LLVM_ENABLED_TARGET_OS_WIN32) |
| 361 return Win32; | 425 return Win32; |
| 426 #else |
| 427 llvm_unreachable("ParseOS win32 w/out LLVM_ENABLED_TARGET_OS_WIN32"); |
| 428 #endif |
| 362 else if (OSName.startswith("haiku")) | 429 else if (OSName.startswith("haiku")) |
| 430 #if defined(LLVM_ENABLED_TARGET_OS_HAIKU) |
| 363 return Haiku; | 431 return Haiku; |
| 432 #else |
| 433 llvm_unreachable("ParseOS haiku w/out LLVM_ENABLED_TARGET_OS_HAIKU"); |
| 434 #endif |
| 364 else if (OSName.startswith("minix")) | 435 else if (OSName.startswith("minix")) |
| 436 #if defined(LLVM_ENABLED_TARGET_OS_MINIX) |
| 365 return Minix; | 437 return Minix; |
| 438 #else |
| 439 llvm_unreachable("ParseOS minix w/out LLVM_ENABLED_TARGET_OS_MINIX"); |
| 440 #endif |
| 366 else if (OSName.startswith("rtems")) | 441 else if (OSName.startswith("rtems")) |
| 442 #if defined(LLVM_ENABLED_TARGET_OS_RTEMS) |
| 367 return RTEMS; | 443 return RTEMS; |
| 444 #else |
| 445 llvm_unreachable("ParseOS rtems w/out LLVM_ENABLED_TARGET_OS_RTEMS"); |
| 446 #endif |
| 368 else if (OSName.startswith("nacl")) | 447 else if (OSName.startswith("nacl")) |
| 448 #if defined(LLVM_ENABLED_TARGET_OS_NATIVECLIENT) |
| 369 return NativeClient; | 449 return NativeClient; |
| 450 #else |
| 451 llvm_unreachable("ParseOS nacl w/out LLVM_ENABLED_TARGET_OS_NATIVECLIENT"); |
| 452 #endif |
| 370 else | 453 else |
| 371 return UnknownOS; | 454 return UnknownOS; |
| 372 } | 455 } |
| 373 | 456 |
| 374 Triple::EnvironmentType Triple::ParseEnvironment(StringRef EnvironmentName) { | 457 Triple::EnvironmentType Triple::ParseEnvironment(StringRef EnvironmentName) { |
| 375 if (EnvironmentName.startswith("eabi")) | 458 if (EnvironmentName.startswith("eabi")) |
| 459 #if defined(LLVM_ENABLED_TARGET_ENV_EABI) |
| 376 return EABI; | 460 return EABI; |
| 461 #else |
| 462 llvm_unreachable("ParseEnv eabi w/out LLVM_ENABLED_TARGET_ENV_EABI"); |
| 463 #endif |
| 377 else if (EnvironmentName.startswith("gnueabi")) | 464 else if (EnvironmentName.startswith("gnueabi")) |
| 465 #if defined(LLVM_ENABLED_TARGET_ENV_GNUEABI) |
| 378 return GNUEABI; | 466 return GNUEABI; |
| 467 #else |
| 468 llvm_unreachable("ParseEnv gnueabi w/out LLVM_ENABLED_TARGET_ENV_GNUEABI"); |
| 469 #endif |
| 379 else if (EnvironmentName.startswith("gnu")) | 470 else if (EnvironmentName.startswith("gnu")) |
| 471 #if defined(LLVM_ENABLED_TARGET_ENV_GNU) |
| 380 return GNU; | 472 return GNU; |
| 473 #else |
| 474 llvm_unreachable("ParseEnv gnu w/out LLVM_ENABLED_TARGET_ENV_GNU"); |
| 475 #endif |
| 381 else if (EnvironmentName.startswith("macho")) | 476 else if (EnvironmentName.startswith("macho")) |
| 477 #if defined(LLVM_ENABLED_TARGET_ENV_MACHO) |
| 382 return MachO; | 478 return MachO; |
| 479 #else |
| 480 llvm_unreachable("ParseEnv macho w/out LLVM_ENABLED_TARGET_ENV_MACHO"); |
| 481 #endif |
| 383 else | 482 else |
| 384 return UnknownEnvironment; | 483 return UnknownEnvironment; |
| 385 } | 484 } |
| 386 | 485 |
| 387 void Triple::Parse() const { | 486 void Triple::Parse() const { |
| 388 assert(!isInitialized() && "Invalid parse call."); | 487 assert(!isInitialized() && "Invalid parse call."); |
| 389 | 488 |
| 390 Arch = ParseArch(getArchName()); | 489 Arch = ParseArch(getArchName()); |
| 391 Vendor = ParseVendor(getVendorName()); | 490 Vendor = ParseVendor(getVendorName()); |
| 392 OS = ParseOS(getOSName()); | 491 OS = ParseOS(getOSName()); |
| (...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 644 } | 743 } |
| 645 | 744 |
| 646 void Triple::setEnvironmentName(StringRef Str) { | 745 void Triple::setEnvironmentName(StringRef Str) { |
| 647 setTriple(getArchName() + "-" + getVendorName() + "-" + getOSName() + | 746 setTriple(getArchName() + "-" + getVendorName() + "-" + getOSName() + |
| 648 "-" + Str); | 747 "-" + Str); |
| 649 } | 748 } |
| 650 | 749 |
| 651 void Triple::setOSAndEnvironmentName(StringRef Str) { | 750 void Triple::setOSAndEnvironmentName(StringRef Str) { |
| 652 setTriple(getArchName() + "-" + getVendorName() + "-" + Str); | 751 setTriple(getArchName() + "-" + getVendorName() + "-" + Str); |
| 653 } | 752 } |
| OLD | NEW |