[llvm-commits] [llvm] r142046 - /llvm/trunk/lib/Support/Windows/Host.inc

Chad Rosier mcrosier at apple.com
Fri Oct 14 19:10:06 PDT 2011


Author: mcrosier
Date: Fri Oct 14 21:10:06 2011
New Revision: 142046

URL: http://llvm.org/viewvc/llvm-project?rev=142046&view=rev
Log:
Fix for llvm::sys::getHostTriple on Windows.  Instead of relying on the triple
from config.h, it discovers the triple based on the execution environment.

Patch by Aaron Ballman <aaron at aaronballman.com>

Modified:
    llvm/trunk/lib/Support/Windows/Host.inc

Modified: llvm/trunk/lib/Support/Windows/Host.inc
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Support/Windows/Host.inc?rev=142046&r1=142045&r2=142046&view=diff
==============================================================================
--- llvm/trunk/lib/Support/Windows/Host.inc (original)
+++ llvm/trunk/lib/Support/Windows/Host.inc Fri Oct 14 21:10:06 2011
@@ -12,12 +12,44 @@
 //===----------------------------------------------------------------------===//
 
 #include "Windows.h"
-#include <cstdio>
-#include <string>
+#include "llvm/ADT/Twine.h"
 
 using namespace llvm;
 
 std::string sys::getHostTriple() {
-  // FIXME: Adapt to running version.
-  return LLVM_HOSTTRIPLE;
+  // Get the execution environment, not the native environment.
+  SYSTEM_INFO info;
+  ::GetSystemInfo(&info);
+
+  Twine ret;
+  switch (info.wProcessorArchitecture) {
+  // If we don't know what the processor architecture is, or it is not one
+  // we currently support, then we should fall back on something reasonable.
+  case PROCESSOR_ARCHITECTURE_IA64:
+  default: return LLVM_HOSTTRIPLE;
+
+  case PROCESSOR_ARCHITECTURE_INTEL:
+    // We need to figure out what kind of x86 it is (possible values are
+    // i386 through i986).
+    ret = Twine("i").concat(Twine(info.wProcessorLevel)).concat("86");
+    break;
+  case PROCESSOR_ARCHITECTURE_AMD64:
+    ret = "amd64";
+	break;
+  case PROCESSOR_ARCHITECTURE_MIPS:
+    ret = "mips";
+    break;
+  case PROCESSOR_ARCHITECTURE_ARM:
+    ret = "arm";
+    break;
+  case PROCESSOR_ARCHITECTURE_PPC:
+    ret = "ppc";
+    break;
+  case PROCESSOR_ARCHITECTURE_ALPHA:
+    ret = "alpha";
+    break;
+  }
+
+  // Since we're on Windows, we're always on pc-win32.
+  return ret.concat("-pc-win32").str();
 }





More information about the llvm-commits mailing list