Add llvm::triple constructor from arch, vendor, os strings, and recognize
DragonFly OS type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72242 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/include/llvm/ADT/Triple.h b/include/llvm/ADT/Triple.h
index f146c0f..b260f98 100644
--- a/include/llvm/ADT/Triple.h
+++ b/include/llvm/ADT/Triple.h
@@ -50,6 +50,7 @@
     UnknownOS,
 
     Darwin,
+    DragonFly,
     FreeBSD,
     Linux
   };
@@ -75,6 +76,13 @@
   
   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 5310c3a..e8cf69d 100644
--- a/lib/Support/Triple.cpp
+++ b/lib/Support/Triple.cpp
@@ -44,6 +44,7 @@
   case UnknownOS: return "unknown";
 
   case Darwin: return "darwin";
+  case DragonFly: return "dragonfly";
   case FreeBSD: return "freebsd";
   case Linux: return "linux";
   }
@@ -80,6 +81,8 @@
   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)