aboutsummaryrefslogtreecommitdiffstats
path: root/lib/Support
diff options
context:
space:
mode:
authorChad Rosier <mcrosier@apple.com>2011-10-15 02:10:06 +0000
committerChad Rosier <mcrosier@apple.com>2011-10-15 02:10:06 +0000
commit8e3ef115506f40b43f9b2f05755d74eeda67adb2 (patch)
tree0a546e6cdc313a46f495b4bfef011a806cdedf0e /lib/Support
parentde7ec8be276bd004ce4469aede93707f184127f1 (diff)
downloadexternal_llvm-8e3ef115506f40b43f9b2f05755d74eeda67adb2.zip
external_llvm-8e3ef115506f40b43f9b2f05755d74eeda67adb2.tar.gz
external_llvm-8e3ef115506f40b43f9b2f05755d74eeda67adb2.tar.bz2
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@aaronballman.com> git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142046 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Support')
-rw-r--r--lib/Support/Windows/Host.inc40
1 files changed, 36 insertions, 4 deletions
diff --git a/lib/Support/Windows/Host.inc b/lib/Support/Windows/Host.inc
index 733830e..6d4803f 100644
--- a/lib/Support/Windows/Host.inc
+++ b/lib/Support/Windows/Host.inc
@@ -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();
}