diff --git a/include/llvm/ADT/Triple.h b/include/llvm/ADT/Triple.h index f146c0f37ff..b260f984948 100644 --- a/include/llvm/ADT/Triple.h +++ b/include/llvm/ADT/Triple.h @@ -50,6 +50,7 @@ public: UnknownOS, Darwin, + DragonFly, FreeBSD, Linux }; @@ -75,6 +76,13 @@ public: Triple() : Data(""), Arch(InvalidArch) {} explicit Triple(const char *Str) : Data(Str), Arch(InvalidArch) {} + explicit Triple(const char *ArchStr, const char *VendorStr, const char *OSStr) + : Data(ArchStr), Arch(InvalidArch) { + Data += '-'; + Data += VendorStr; + Data += '-'; + Data += OSStr; + } /// @} /// @name Typed Component Access diff --git a/lib/Support/Triple.cpp b/lib/Support/Triple.cpp index 5310c3a6e73..e8cf69d81ff 100644 --- a/lib/Support/Triple.cpp +++ b/lib/Support/Triple.cpp @@ -44,6 +44,7 @@ const char *Triple::getOSTypeName(OSType Kind) { case UnknownOS: return "unknown"; case Darwin: return "darwin"; + case DragonFly: return "dragonfly"; case FreeBSD: return "freebsd"; case Linux: return "linux"; } @@ -80,6 +81,8 @@ void Triple::Parse() const { std::string OSName = getOSName(); if (memcmp(&OSName[0], "darwin", 6) == 0) OS = Darwin; + else if (memcmp(&OSName[0], "dragonfly", 9) == 0) + OS = DragonFly; else if (memcmp(&OSName[0], "freebsd", 7) == 0) OS = FreeBSD; else if (memcmp(&OSName[0], "linux", 5) == 0)