diff options
Diffstat (limited to 'llvm/tools/lli/OrcLazyJIT.cpp')
-rw-r--r-- | llvm/tools/lli/OrcLazyJIT.cpp | 27 |
1 files changed, 20 insertions, 7 deletions
diff --git a/llvm/tools/lli/OrcLazyJIT.cpp b/llvm/tools/lli/OrcLazyJIT.cpp index fee3c72d643..dc9d6486b6e 100644 --- a/llvm/tools/lli/OrcLazyJIT.cpp +++ b/llvm/tools/lli/OrcLazyJIT.cpp @@ -8,7 +8,7 @@ //===----------------------------------------------------------------------===// #include "OrcLazyJIT.h" -#include "llvm/ExecutionEngine/Orc/OrcArchitectureSupport.h" +#include "llvm/ExecutionEngine/Orc/OrcABISupport.h" #include "llvm/Support/Debug.h" #include "llvm/Support/DynamicLibrary.h" #include <cstdio> @@ -57,8 +57,13 @@ OrcLazyJIT::createCompileCallbackMgr(Triple T) { } case Triple::x86_64: { - typedef orc::LocalJITCompileCallbackManager<orc::OrcX86_64> CCMgrT; - return llvm::make_unique<CCMgrT>(0); + if ( T.getOS() == Triple::OSType::Win32 ) { + typedef orc::LocalJITCompileCallbackManager<orc::OrcX86_64_Win32> CCMgrT; + return llvm::make_unique<CCMgrT>(0); + } else { + typedef orc::LocalJITCompileCallbackManager<orc::OrcX86_64_SysV> CCMgrT; + return llvm::make_unique<CCMgrT>(0); + } } } } @@ -75,10 +80,17 @@ OrcLazyJIT::createIndirectStubsMgrBuilder(Triple T) { }; case Triple::x86_64: - return [](){ - return llvm::make_unique< - orc::LocalIndirectStubsManager<orc::OrcX86_64>>(); - }; + if (T.getOS() == Triple::OSType::Win32) { + return [](){ + return llvm::make_unique< + orc::LocalIndirectStubsManager<orc::OrcX86_64_Win32>>(); + }; + } else { + return [](){ + return llvm::make_unique< + orc::LocalIndirectStubsManager<orc::OrcX86_64_SysV>>(); + }; + } } } @@ -192,3 +204,4 @@ int llvm::runOrcLazyJIT(std::unique_ptr<Module> M, int ArgC, char* ArgV[]) { auto Main = fromTargetAddress<MainFnPtr>(MainSym.getAddress()); return Main(ArgC, ArgV); } + |