Преглед изворни кода

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 година
родитељ
комит
2c02f34fcc
2 измењених фајлова са 12 додато и 5 уклоњено
  1. 3
    5
      scons/llvm.py
  2. 9
    0
      src/gallium/auxiliary/gallivm/lp_bld_misc.cpp

+ 3
- 5
scons/llvm.py Прегледај датотеку

@@ -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 Прегледај датотеку

@@ -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…
Откажи
Сачувај