summaryrefslogtreecommitdiffstats
path: root/lib/Basic/Targets.cpp
diff options
context:
space:
mode:
authorDan Gohman <dan433584@gmail.com>2019-01-15 06:58:16 +0000
committerDan Gohman <dan433584@gmail.com>2019-01-15 06:58:16 +0000
commitbbdcf0a5e9374613d6b5f8e21f5d53044b7732c8 (patch)
tree2c8918fd5064f577c9bce17f49233fc4c5e6ad1b /lib/Basic/Targets.cpp
parent659a479615dc0ce00063d935e6848db0a7653f41 (diff)
[WebAssembly] Support multilibs for wasm32 and add a wasm OS that uses it
This adds support for multilib paths for wasm32 targets, following [Debian's Multiarch conventions], and also adds an experimental OS name in order to test it. [Debian's Multiarch conventions]: https://wiki.debian.org/Multiarch/ Differential Revision: https://reviews.llvm.org/D56553 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@351164 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Basic/Targets.cpp')
-rw-r--r--lib/Basic/Targets.cpp14
1 files changed, 8 insertions, 6 deletions
diff --git a/lib/Basic/Targets.cpp b/lib/Basic/Targets.cpp
index f79da4e576..fd201a9add 100644
--- a/lib/Basic/Targets.cpp
+++ b/lib/Basic/Targets.cpp
@@ -572,17 +572,19 @@ TargetInfo *AllocateTarget(const llvm::Triple &Triple,
case llvm::Triple::wasm32:
if (Triple.getSubArch() != llvm::Triple::NoSubArch ||
Triple.getVendor() != llvm::Triple::UnknownVendor ||
- Triple.getOS() != llvm::Triple::UnknownOS ||
- Triple.getEnvironment() != llvm::Triple::UnknownEnvironment ||
- !(Triple.isOSBinFormatELF() || Triple.isOSBinFormatWasm()))
+ !Triple.isOSBinFormatWasm())
+ return nullptr;
+ if (Triple.getOS() != llvm::Triple::UnknownOS &&
+ Triple.getOS() != llvm::Triple::COWS)
return nullptr;
return new WebAssemblyOSTargetInfo<WebAssembly32TargetInfo>(Triple, Opts);
case llvm::Triple::wasm64:
if (Triple.getSubArch() != llvm::Triple::NoSubArch ||
Triple.getVendor() != llvm::Triple::UnknownVendor ||
- Triple.getOS() != llvm::Triple::UnknownOS ||
- Triple.getEnvironment() != llvm::Triple::UnknownEnvironment ||
- !(Triple.isOSBinFormatELF() || Triple.isOSBinFormatWasm()))
+ !Triple.isOSBinFormatWasm())
+ return nullptr;
+ if (Triple.getOS() != llvm::Triple::UnknownOS &&
+ Triple.getOS() != llvm::Triple::COWS)
return nullptr;
return new WebAssemblyOSTargetInfo<WebAssembly64TargetInfo>(Triple, Opts);