Sfoglia il codice sorgente

gallivm: Support MCJIT on Windows.

It works fine, though it requires using ELF objects.

With this change there is nothing preventing us to switch exclusively
to MCJIT, everywhere.  It's still off though.
tags/10.3-branchpoint
José Fonseca 11 anni fa
parent
commit
2c02f34fcc
2 ha cambiato i file con 12 aggiunte e 5 eliminazioni
  1. 3
    5
      scons/llvm.py
  2. 9
    0
      src/gallium/auxiliary/gallivm/lp_bld_misc.cpp

+ 3
- 5
scons/llvm.py Vedi File

@@ -104,7 +104,7 @@ def generate(env):
'LLVMBitWriter', 'LLVMX86Disassembler', 'LLVMX86AsmParser',
'LLVMX86CodeGen', 'LLVMX86Desc', 'LLVMSelectionDAG',
'LLVMAsmPrinter', 'LLVMMCParser', 'LLVMX86AsmPrinter',
'LLVMX86Utils', 'LLVMX86Info', 'LLVMJIT',
'LLVMX86Utils', 'LLVMX86Info', 'LLVMMCJIT', 'LLVMJIT',
'LLVMExecutionEngine', 'LLVMCodeGen', 'LLVMScalarOpts',
'LLVMInstCombine', 'LLVMTransformUtils', 'LLVMipa',
'LLVMAnalysis', 'LLVMTarget', 'LLVMMC', 'LLVMCore',
@@ -116,7 +116,7 @@ def generate(env):
'LLVMBitWriter', 'LLVMX86Disassembler', 'LLVMX86AsmParser',
'LLVMX86CodeGen', 'LLVMX86Desc', 'LLVMSelectionDAG',
'LLVMAsmPrinter', 'LLVMMCParser', 'LLVMX86AsmPrinter',
'LLVMX86Utils', 'LLVMX86Info', 'LLVMJIT',
'LLVMX86Utils', 'LLVMX86Info', 'LLVMMCJIT', 'LLVMJIT',
'LLVMExecutionEngine', 'LLVMCodeGen', 'LLVMScalarOpts',
'LLVMInstCombine', 'LLVMTransformUtils', 'LLVMipa',
'LLVMAnalysis', 'LLVMTarget', 'LLVMMC', 'LLVMCore',
@@ -165,9 +165,7 @@ def generate(env):
if '-fno-rtti' in cxxflags:
env.Append(CXXFLAGS = ['-fno-rtti'])

components = ['engine', 'bitwriter', 'x86asmprinter']

components.append('mcjit')
components = ['engine', 'mcjit', 'bitwriter', 'x86asmprinter']

env.ParseConfig('llvm-config --libs ' + ' '.join(components))
env.ParseConfig('llvm-config --ldflags')

+ 9
- 0
src/gallium/auxiliary/gallivm/lp_bld_misc.cpp Vedi File

@@ -57,6 +57,7 @@
#include <llvm/ADT/Triple.h>
#include <llvm/ExecutionEngine/JITMemoryManager.h>
#include <llvm/Support/CommandLine.h>
#include <llvm/Support/Host.h>
#include <llvm/Support/PrettyStackTrace.h>

#include <llvm/Support/TargetSelect.h>
@@ -452,6 +453,14 @@ lp_build_create_jit_compiler_for_module(LLVMExecutionEngineRef *OutJIT,

if (useMCJIT) {
builder.setUseMCJIT(true);
#ifdef _WIN32
/*
* MCJIT works on Windows, but currently only through ELF object format.
*/
std::string targetTriple = llvm::sys::getProcessTriple();
targetTriple.append("-elf");
unwrap(M)->setTargetTriple(targetTriple);
#endif
}

llvm::SmallVector<std::string, 1> MAttrs;

Loading…
Annulla
Salva