From 47fd5639bc5a65daf1b73505e6556f0f2a8bf777 Mon Sep 17 00:00:00 2001 From: Lang Hames Date: Wed, 25 Mar 2015 12:11:48 +0000 Subject: [PATCH] [Orc][lli] Add a very simple Orc-based lazy JIT to lli. This ensures that we're building and testing the CompileOnDemand layer, at least in a basic way. Currently x86-64 only, and with limited to no library calls enabled (depending on host platform). Patches welcome. ;) To enable access to the lazy JIT, this patch replaces the '-use-orcmcjit' lli option with a new option: '-jit-kind={ mcjit | orc-mcjit | orc-lazy }'. All regression tests are updated to use the new option, and one trivial test of the new lazy JIT is added. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233182 91177308-0d34-0410-b5e6-96231b3b80d8 --- .../Orc/CompileOnDemandLayer.h | 4 +- test/ExecutionEngine/OrcJIT/multi-module-a.ll | 9 -- .../OrcJIT/multi-module-sm-pic-a.ll | 10 -- .../OrcJIT/remote/cross-module-a.ll | 12 --- .../OrcJIT/remote/cross-module-sm-pic-a.ll | 14 --- .../OrcJIT/remote/multi-module-a.ll | 9 -- .../OrcJIT/remote/multi-module-sm-pic-a.ll | 10 -- test/ExecutionEngine/OrcJIT/simplesttest.ll | 6 -- test/ExecutionEngine/OrcLazy/lit.local.cfg | 2 + .../OrcLazy/trivial_retval_1.ll | 25 +++++ .../2002-12-16-ArgTest.ll | 2 +- .../2003-01-04-ArgumentBug.ll | 2 +- .../2003-01-04-LoopTest.ll | 2 +- .../2003-01-04-PhiTest.ll | 2 +- .../2003-01-09-SARTest.ll | 2 +- .../{OrcJIT => OrcMCJIT}/2003-01-10-FUCOM.ll | 2 +- .../2003-01-15-AlignmentTest.ll | 2 +- .../2003-05-06-LivenessClobber.ll | 2 +- .../2003-05-07-ArgumentTest.ll | 2 +- .../2003-05-11-PHIRegAllocBug.ll | 2 +- .../2003-06-04-bzip2-bug.ll | 2 +- .../{OrcJIT => OrcMCJIT}/2003-06-05-PHIBug.ll | 2 +- .../2003-08-15-AllocaAssertion.ll | 2 +- .../2003-08-21-EnvironmentTest.ll | 2 +- .../2003-08-23-RegisterAllocatePhysReg.ll | 2 +- ...8-PHINode-ConstantExpr-CondCode-Failure.ll | 2 +- .../2005-12-02-TailCallBug.ll | 2 +- .../2007-12-10-APIntLoadStore.ll | 2 +- .../2008-06-05-APInt-OverAShr.ll | 2 +- .../2013-04-04-RelocAddend.ll | 2 +- .../Inputs/cross-module-b.ll | 0 .../Inputs/multi-module-b.ll | 0 .../Inputs/multi-module-c.ll | 0 .../Inputs/multi-module-eh-b.ll | 0 .../{OrcJIT => OrcMCJIT}/cross-module-a.ll | 2 +- .../cross-module-sm-pic-a.ll | 2 +- .../{OrcJIT => OrcMCJIT}/eh-lg-pic.ll | 2 +- .../{OrcJIT => OrcMCJIT}/eh-sm-pic.ll | 2 +- .../{OrcJIT => OrcMCJIT}/eh.ll | 2 +- .../{OrcJIT => OrcMCJIT}/fpbitcast.ll | 2 +- .../{OrcJIT => OrcMCJIT}/hello-sm-pic.ll | 2 +- .../{OrcJIT => OrcMCJIT}/hello.ll | 2 +- .../{OrcJIT => OrcMCJIT}/hello2.ll | 2 +- .../{OrcJIT => OrcMCJIT}/lit.local.cfg | 0 .../{OrcJIT => OrcMCJIT}/load-object-a.ll | 6 +- .../OrcMCJIT/multi-module-a.ll | 9 ++ .../{OrcJIT => OrcMCJIT}/multi-module-eh-a.ll | 2 +- .../OrcMCJIT/multi-module-sm-pic-a.ll | 10 ++ .../{OrcJIT => OrcMCJIT}/non-extern-addend.ll | 2 +- .../{OrcJIT => OrcMCJIT}/pr13727.ll | 2 +- .../remote/Inputs/cross-module-b.ll | 0 .../remote/Inputs/multi-module-b.ll | 0 .../remote/Inputs/multi-module-c.ll | 0 .../OrcMCJIT/remote/cross-module-a.ll | 12 +++ .../OrcMCJIT/remote/cross-module-sm-pic-a.ll | 14 +++ .../{OrcJIT => OrcMCJIT}/remote/lit.local.cfg | 0 .../OrcMCJIT/remote/multi-module-a.ll | 9 ++ .../OrcMCJIT/remote/multi-module-sm-pic-a.ll | 10 ++ .../remote/simpletest-remote.ll | 2 +- .../remote/stubs-remote.ll | 2 +- .../remote/stubs-sm-pic.ll | 2 +- .../remote/test-common-symbols-remote.ll | 2 +- .../remote/test-data-align-remote.ll | 2 +- .../test-fp-no-external-funcs-remote.ll | 2 +- .../remote/test-global-init-nonzero-remote.ll | 2 +- .../remote/test-global-init-nonzero-sm-pic.ll | 2 +- .../remote/test-ptr-reloc-remote.ll | 2 +- .../remote/test-ptr-reloc-sm-pic.ll | 2 +- test/ExecutionEngine/OrcMCJIT/simplesttest.ll | 6 ++ .../{OrcJIT => OrcMCJIT}/simpletest.ll | 2 +- .../{OrcJIT => OrcMCJIT}/stubs-sm-pic.ll | 2 +- .../{OrcJIT => OrcMCJIT}/stubs.ll | 2 +- .../{OrcJIT => OrcMCJIT}/test-arith.ll | 2 +- .../{OrcJIT => OrcMCJIT}/test-branch.ll | 2 +- .../test-call-no-external-funcs.ll | 2 +- .../{OrcJIT => OrcMCJIT}/test-call.ll | 2 +- .../{OrcJIT => OrcMCJIT}/test-cast.ll | 2 +- .../test-common-symbols-alignment.ll | 2 +- .../test-common-symbols.ll | 2 +- .../{OrcJIT => OrcMCJIT}/test-constantexpr.ll | 2 +- .../{OrcJIT => OrcMCJIT}/test-data-align.ll | 2 +- .../test-fp-no-external-funcs.ll | 2 +- .../{OrcJIT => OrcMCJIT}/test-fp.ll | 2 +- .../{OrcJIT => OrcMCJIT}/test-global-ctors.ll | 2 +- .../test-global-init-nonzero-sm-pic.ll | 2 +- .../test-global-init-nonzero.ll | 2 +- .../{OrcJIT => OrcMCJIT}/test-global.ll | 2 +- .../{OrcJIT => OrcMCJIT}/test-loadstore.ll | 2 +- .../{OrcJIT => OrcMCJIT}/test-local.ll | 2 +- .../{OrcJIT => OrcMCJIT}/test-logical.ll | 2 +- .../{OrcJIT => OrcMCJIT}/test-loop.ll | 2 +- .../{OrcJIT => OrcMCJIT}/test-phi.ll | 2 +- .../test-ptr-reloc-sm-pic.ll | 2 +- .../{OrcJIT => OrcMCJIT}/test-ptr-reloc.ll | 2 +- .../{OrcJIT => OrcMCJIT}/test-ret.ll | 2 +- .../{OrcJIT => OrcMCJIT}/test-return.ll | 2 +- .../{OrcJIT => OrcMCJIT}/test-setcond-fp.ll | 2 +- .../{OrcJIT => OrcMCJIT}/test-setcond-int.ll | 2 +- .../{OrcJIT => OrcMCJIT}/test-shift.ll | 2 +- tools/lli/CMakeLists.txt | 1 + tools/lli/OrcLazyJIT.cpp | 53 ++++++++++ tools/lli/OrcLazyJIT.h | 97 +++++++++++++++++++ tools/lli/lli.cpp | 28 ++++-- 103 files changed, 346 insertions(+), 154 deletions(-) delete mode 100644 test/ExecutionEngine/OrcJIT/multi-module-a.ll delete mode 100644 test/ExecutionEngine/OrcJIT/multi-module-sm-pic-a.ll delete mode 100644 test/ExecutionEngine/OrcJIT/remote/cross-module-a.ll delete mode 100644 test/ExecutionEngine/OrcJIT/remote/cross-module-sm-pic-a.ll delete mode 100644 test/ExecutionEngine/OrcJIT/remote/multi-module-a.ll delete mode 100644 test/ExecutionEngine/OrcJIT/remote/multi-module-sm-pic-a.ll delete mode 100644 test/ExecutionEngine/OrcJIT/simplesttest.ll create mode 100644 test/ExecutionEngine/OrcLazy/lit.local.cfg create mode 100644 test/ExecutionEngine/OrcLazy/trivial_retval_1.ll rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/2002-12-16-ArgTest.ll (96%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/2003-01-04-ArgumentBug.ll (86%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/2003-01-04-LoopTest.ll (91%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/2003-01-04-PhiTest.ll (81%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/2003-01-09-SARTest.ll (83%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/2003-01-10-FUCOM.ll (85%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/2003-01-15-AlignmentTest.ll (89%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/2003-05-06-LivenessClobber.ll (90%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/2003-05-07-ArgumentTest.ll (86%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/2003-05-11-PHIRegAllocBug.ll (84%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/2003-06-04-bzip2-bug.ll (90%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/2003-06-05-PHIBug.ll (86%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/2003-08-15-AllocaAssertion.ll (83%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/2003-08-21-EnvironmentTest.ll (90%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/2003-08-23-RegisterAllocatePhysReg.ll (95%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/2003-10-18-PHINode-ConstantExpr-CondCode-Failure.ll (92%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/2005-12-02-TailCallBug.ll (95%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/2007-12-10-APIntLoadStore.ll (91%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/2008-06-05-APInt-OverAShr.ll (96%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/2013-04-04-RelocAddend.ll (92%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/Inputs/cross-module-b.ll (100%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/Inputs/multi-module-b.ll (100%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/Inputs/multi-module-c.ll (100%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/Inputs/multi-module-eh-b.ll (100%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/cross-module-a.ll (60%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/cross-module-sm-pic-a.ll (55%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/eh-lg-pic.ll (92%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/eh-sm-pic.ll (92%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/eh.ll (96%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/fpbitcast.ll (86%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/hello-sm-pic.ll (77%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/hello.ll (84%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/hello2.ll (86%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/lit.local.cfg (100%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/load-object-a.ll (64%) create mode 100644 test/ExecutionEngine/OrcMCJIT/multi-module-a.ll rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/multi-module-eh-a.ll (92%) create mode 100644 test/ExecutionEngine/OrcMCJIT/multi-module-sm-pic-a.ll rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/non-extern-addend.ll (92%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/pr13727.ll (97%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/remote/Inputs/cross-module-b.ll (100%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/remote/Inputs/multi-module-b.ll (100%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/remote/Inputs/multi-module-c.ll (100%) create mode 100644 test/ExecutionEngine/OrcMCJIT/remote/cross-module-a.ll create mode 100644 test/ExecutionEngine/OrcMCJIT/remote/cross-module-sm-pic-a.ll rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/remote/lit.local.cfg (100%) create mode 100644 test/ExecutionEngine/OrcMCJIT/remote/multi-module-a.ll create mode 100644 test/ExecutionEngine/OrcMCJIT/remote/multi-module-sm-pic-a.ll rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/remote/simpletest-remote.ll (54%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/remote/stubs-remote.ll (88%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/remote/stubs-sm-pic.ll (88%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/remote/test-common-symbols-remote.ll (95%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/remote/test-data-align-remote.ll (74%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/remote/test-fp-no-external-funcs-remote.ll (86%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/remote/test-global-init-nonzero-remote.ll (89%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/remote/test-global-init-nonzero-sm-pic.ll (90%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/remote/test-ptr-reloc-remote.ll (84%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/remote/test-ptr-reloc-sm-pic.ll (86%) create mode 100644 test/ExecutionEngine/OrcMCJIT/simplesttest.ll rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/simpletest.ll (70%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/stubs-sm-pic.ll (89%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/stubs.ll (93%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/test-arith.ll (96%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/test-branch.ll (81%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/test-call-no-external-funcs.ll (83%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/test-call.ll (88%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/test-cast.ll (98%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/test-common-symbols-alignment.ll (95%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/test-common-symbols.ll (97%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/test-constantexpr.ll (84%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/test-data-align.ll (87%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/test-fp-no-external-funcs.ll (93%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/test-fp.ll (94%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/test-global-ctors.ll (92%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/test-global-init-nonzero-sm-pic.ll (91%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/test-global-init-nonzero.ll (95%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/test-global.ll (95%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/test-loadstore.ll (95%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/test-local.ll (95%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/test-logical.ll (93%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/test-loop.ll (86%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/test-phi.ll (93%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/test-ptr-reloc-sm-pic.ll (88%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/test-ptr-reloc.ll (93%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/test-ret.ll (90%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/test-return.ll (71%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/test-setcond-fp.ll (95%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/test-setcond-int.ll (98%) rename test/ExecutionEngine/{OrcJIT => OrcMCJIT}/test-shift.ll (96%) create mode 100644 tools/lli/OrcLazyJIT.cpp create mode 100644 tools/lli/OrcLazyJIT.h diff --git a/include/llvm/ExecutionEngine/Orc/CompileOnDemandLayer.h b/include/llvm/ExecutionEngine/Orc/CompileOnDemandLayer.h index 3dd1a37e1ed..77b0c48d0a7 100644 --- a/include/llvm/ExecutionEngine/Orc/CompileOnDemandLayer.h +++ b/include/llvm/ExecutionEngine/Orc/CompileOnDemandLayer.h @@ -193,8 +193,8 @@ public: /// below this one. JITSymbol findSymbolIn(ModuleSetHandleT H, const std::string &Name, bool ExportedSymbolsOnly) { - BaseLayerModuleSetHandleListT &BaseLayerHandles = H->second; - for (auto &BH : BaseLayerHandles) { + + for (auto &BH : H->BaseLayerModuleSetHandles) { if (auto Symbol = BaseLayer.findSymbolIn(BH, Name, ExportedSymbolsOnly)) return Symbol; } diff --git a/test/ExecutionEngine/OrcJIT/multi-module-a.ll b/test/ExecutionEngine/OrcJIT/multi-module-a.ll deleted file mode 100644 index 587a1e893ed..00000000000 --- a/test/ExecutionEngine/OrcJIT/multi-module-a.ll +++ /dev/null @@ -1,9 +0,0 @@ -; RUN: %lli -use-orcmcjit -extra-module=%p/Inputs/multi-module-b.ll -extra-module=%p/Inputs/multi-module-c.ll %s > /dev/null - -declare i32 @FB() - -define i32 @main() { - %r = call i32 @FB( ) ; [#uses=1] - ret i32 %r -} - diff --git a/test/ExecutionEngine/OrcJIT/multi-module-sm-pic-a.ll b/test/ExecutionEngine/OrcJIT/multi-module-sm-pic-a.ll deleted file mode 100644 index b5ee3d13b96..00000000000 --- a/test/ExecutionEngine/OrcJIT/multi-module-sm-pic-a.ll +++ /dev/null @@ -1,10 +0,0 @@ -; RUN: %lli -use-orcmcjit -extra-module=%p/Inputs/multi-module-b.ll -extra-module=%p/Inputs/multi-module-c.ll -relocation-model=pic -code-model=small %s > /dev/null -; XFAIL: mips, i686, i386 - -declare i32 @FB() - -define i32 @main() { - %r = call i32 @FB( ) ; [#uses=1] - ret i32 %r -} - diff --git a/test/ExecutionEngine/OrcJIT/remote/cross-module-a.ll b/test/ExecutionEngine/OrcJIT/remote/cross-module-a.ll deleted file mode 100644 index cc48fd4426c..00000000000 --- a/test/ExecutionEngine/OrcJIT/remote/cross-module-a.ll +++ /dev/null @@ -1,12 +0,0 @@ -; RUN: %lli -use-orcmcjit -extra-module=%p/Inputs/cross-module-b.ll -disable-lazy-compilation=true -remote-mcjit -mcjit-remote-process=lli-child-target%exeext %s > /dev/null - -declare i32 @FB() - -define i32 @FA() nounwind { - ret i32 0 -} - -define i32 @main() nounwind { - %r = call i32 @FB( ) ; [#uses=1] - ret i32 %r -} diff --git a/test/ExecutionEngine/OrcJIT/remote/cross-module-sm-pic-a.ll b/test/ExecutionEngine/OrcJIT/remote/cross-module-sm-pic-a.ll deleted file mode 100644 index d6209d7523a..00000000000 --- a/test/ExecutionEngine/OrcJIT/remote/cross-module-sm-pic-a.ll +++ /dev/null @@ -1,14 +0,0 @@ -; RUN: %lli -use-orcmcjit -extra-module=%p/Inputs/cross-module-b.ll -disable-lazy-compilation=true -remote-mcjit -mcjit-remote-process=lli-child-target%exeext -relocation-model=pic -code-model=small %s > /dev/null -; XFAIL: mips, i686, i386, arm - -declare i32 @FB() - -define i32 @FA() { - ret i32 0 -} - -define i32 @main() { - %r = call i32 @FB( ) ; [#uses=1] - ret i32 %r -} - diff --git a/test/ExecutionEngine/OrcJIT/remote/multi-module-a.ll b/test/ExecutionEngine/OrcJIT/remote/multi-module-a.ll deleted file mode 100644 index 9ae0e060dd0..00000000000 --- a/test/ExecutionEngine/OrcJIT/remote/multi-module-a.ll +++ /dev/null @@ -1,9 +0,0 @@ -; RUN: %lli -use-orcmcjit -extra-module=%p/Inputs/multi-module-b.ll -extra-module=%p/Inputs/multi-module-c.ll -disable-lazy-compilation=true -remote-mcjit -mcjit-remote-process=lli-child-target%exeext %s > /dev/null - -declare i32 @FB() - -define i32 @main() nounwind { - %r = call i32 @FB( ) ; [#uses=1] - ret i32 %r -} - diff --git a/test/ExecutionEngine/OrcJIT/remote/multi-module-sm-pic-a.ll b/test/ExecutionEngine/OrcJIT/remote/multi-module-sm-pic-a.ll deleted file mode 100644 index a1d4b81eb1a..00000000000 --- a/test/ExecutionEngine/OrcJIT/remote/multi-module-sm-pic-a.ll +++ /dev/null @@ -1,10 +0,0 @@ -; RUN: %lli -use-orcmcjit -extra-module=%p/Inputs/multi-module-b.ll -extra-module=%p/Inputs/multi-module-c.ll -disable-lazy-compilation=true -remote-mcjit -mcjit-remote-process=lli-child-target%exeext -relocation-model=pic -code-model=small %s > /dev/null -; XFAIL: mips, i686, i386, arm - -declare i32 @FB() - -define i32 @main() { - %r = call i32 @FB( ) ; [#uses=1] - ret i32 %r -} - diff --git a/test/ExecutionEngine/OrcJIT/simplesttest.ll b/test/ExecutionEngine/OrcJIT/simplesttest.ll deleted file mode 100644 index c2f24f6450a..00000000000 --- a/test/ExecutionEngine/OrcJIT/simplesttest.ll +++ /dev/null @@ -1,6 +0,0 @@ -; RUN: %lli -use-orcmcjit %s > /dev/null - -define i32 @main() { - ret i32 0 -} - diff --git a/test/ExecutionEngine/OrcLazy/lit.local.cfg b/test/ExecutionEngine/OrcLazy/lit.local.cfg new file mode 100644 index 00000000000..bf63c4f73ed --- /dev/null +++ b/test/ExecutionEngine/OrcLazy/lit.local.cfg @@ -0,0 +1,2 @@ +if config.root.host_arch not in ['x86_64']: + config.unsupported = True diff --git a/test/ExecutionEngine/OrcLazy/trivial_retval_1.ll b/test/ExecutionEngine/OrcLazy/trivial_retval_1.ll new file mode 100644 index 00000000000..b1234f9a44d --- /dev/null +++ b/test/ExecutionEngine/OrcLazy/trivial_retval_1.ll @@ -0,0 +1,25 @@ +; RUN: lli -jit-kind=orc-lazy %s; [ $? -eq 30 ] +define i32 @baz() { +entry: + ret i32 2 +} + +define i32 @bar() { +entry: + %call = call i32 @baz() + %mul = mul nsw i32 3, %call + ret i32 %mul +} + +define i32 @foo() { +entry: + %call = call i32 @bar() + %mul = mul nsw i32 5, %call + ret i32 %mul +} + +define i32 @main(i32 %argc, i8** %argv) { +entry: + %call = call i32 @foo() + ret i32 %call +} diff --git a/test/ExecutionEngine/OrcJIT/2002-12-16-ArgTest.ll b/test/ExecutionEngine/OrcMCJIT/2002-12-16-ArgTest.ll similarity index 96% rename from test/ExecutionEngine/OrcJIT/2002-12-16-ArgTest.ll rename to test/ExecutionEngine/OrcMCJIT/2002-12-16-ArgTest.ll index 027085519b4..e8eb6939850 100644 --- a/test/ExecutionEngine/OrcJIT/2002-12-16-ArgTest.ll +++ b/test/ExecutionEngine/OrcMCJIT/2002-12-16-ArgTest.ll @@ -1,4 +1,4 @@ -; RUN: %lli -use-orcmcjit %s > /dev/null +; RUN: %lli -jit-kind=orc-mcjit %s > /dev/null @.LC0 = internal global [10 x i8] c"argc: %d\0A\00" ; <[10 x i8]*> [#uses=1] diff --git a/test/ExecutionEngine/OrcJIT/2003-01-04-ArgumentBug.ll b/test/ExecutionEngine/OrcMCJIT/2003-01-04-ArgumentBug.ll similarity index 86% rename from test/ExecutionEngine/OrcJIT/2003-01-04-ArgumentBug.ll rename to test/ExecutionEngine/OrcMCJIT/2003-01-04-ArgumentBug.ll index 67425a9a3a3..2061329f252 100644 --- a/test/ExecutionEngine/OrcJIT/2003-01-04-ArgumentBug.ll +++ b/test/ExecutionEngine/OrcMCJIT/2003-01-04-ArgumentBug.ll @@ -1,4 +1,4 @@ -; RUN: %lli -use-orcmcjit %s > /dev/null +; RUN: %lli -jit-kind=orc-mcjit %s > /dev/null define i32 @foo(i32 %X, i32 %Y, double %A) { %cond212 = fcmp une double %A, 1.000000e+00 ; [#uses=1] diff --git a/test/ExecutionEngine/OrcJIT/2003-01-04-LoopTest.ll b/test/ExecutionEngine/OrcMCJIT/2003-01-04-LoopTest.ll similarity index 91% rename from test/ExecutionEngine/OrcJIT/2003-01-04-LoopTest.ll rename to test/ExecutionEngine/OrcMCJIT/2003-01-04-LoopTest.ll index cf805ea4162..a298172e678 100644 --- a/test/ExecutionEngine/OrcJIT/2003-01-04-LoopTest.ll +++ b/test/ExecutionEngine/OrcMCJIT/2003-01-04-LoopTest.ll @@ -1,4 +1,4 @@ -; RUN: %lli -use-orcmcjit %s > /dev/null +; RUN: %lli -jit-kind=orc-mcjit %s > /dev/null define i32 @main() { call i32 @mylog( i32 4 ) ; :1 [#uses=0] diff --git a/test/ExecutionEngine/OrcJIT/2003-01-04-PhiTest.ll b/test/ExecutionEngine/OrcMCJIT/2003-01-04-PhiTest.ll similarity index 81% rename from test/ExecutionEngine/OrcJIT/2003-01-04-PhiTest.ll rename to test/ExecutionEngine/OrcMCJIT/2003-01-04-PhiTest.ll index b8b851966c0..a24e188438f 100644 --- a/test/ExecutionEngine/OrcJIT/2003-01-04-PhiTest.ll +++ b/test/ExecutionEngine/OrcMCJIT/2003-01-04-PhiTest.ll @@ -1,4 +1,4 @@ -; RUN: %lli -use-orcmcjit %s > /dev/null +; RUN: %lli -jit-kind=orc-mcjit %s > /dev/null define i32 @main() { ;