diff options
Diffstat (limited to 'lib/Target/JSBackend/TargetInfo/JSBackendTargetInfo.cpp')
-rw-r--r-- | lib/Target/JSBackend/TargetInfo/JSBackendTargetInfo.cpp | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/lib/Target/JSBackend/TargetInfo/JSBackendTargetInfo.cpp b/lib/Target/JSBackend/TargetInfo/JSBackendTargetInfo.cpp index cf06eaceea..66a3f4d6e8 100644 --- a/lib/Target/JSBackend/TargetInfo/JSBackendTargetInfo.cpp +++ b/lib/Target/JSBackend/TargetInfo/JSBackendTargetInfo.cpp @@ -8,6 +8,7 @@ //===--------------------------------------------------------------------===// #include "JSTargetMachine.h" +#include "MCTargetDesc/JSBackendMCTargetDesc.h" #include "llvm/IR/Module.h" #include "llvm/Support/TargetRegistry.h" using namespace llvm; @@ -15,8 +16,21 @@ using namespace llvm; Target llvm::TheJSBackendTarget; static unsigned JSBackend_TripleMatchQuality(const std::string &TT) { - // This class always works, but shouldn't be the default in most cases. - return 1; + switch (Triple(TT).getArch()) { + case Triple::asmjs: + // That's us! + return 20; + + case Triple::le32: + case Triple::x86: + // For compatibility with older versions of Emscripten, we also basically + // support generating code for le32-unknown-nacl and i386-pc-linux-gnu, + // but we use a low number here so that we're not the default. + return 1; + + default: + return 0; + } } extern "C" void LLVMInitializeJSBackendTargetInfo() { @@ -24,5 +38,3 @@ extern "C" void LLVMInitializeJSBackendTargetInfo() { "JavaScript (asm.js, emscripten) backend", &JSBackend_TripleMatchQuality); } - -extern "C" void LLVMInitializeJSBackendTargetMC() {} |