diff options
author | Chad Rosier <mcrosier@apple.com> | 2011-10-15 02:10:06 +0000 |
---|---|---|
committer | Chad Rosier <mcrosier@apple.com> | 2011-10-15 02:10:06 +0000 |
commit | 8e3ef115506f40b43f9b2f05755d74eeda67adb2 (patch) | |
tree | 0a546e6cdc313a46f495b4bfef011a806cdedf0e /lib | |
parent | de7ec8be276bd004ce4469aede93707f184127f1 (diff) | |
download | external_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')
-rw-r--r-- | lib/Support/Windows/Host.inc | 40 |
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(); } |