From: Lang Hames Date: Wed, 25 Mar 2015 12:11:48 +0000 (+0000) Subject: [Orc][lli] Add a very simple Orc-based lazy JIT to lli. X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=47fd5639bc5a65daf1b73505e6556f0f2a8bf777;p=oota-llvm.git [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 --- 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/2002-12-16-ArgTest.ll b/test/ExecutionEngine/OrcJIT/2002-12-16-ArgTest.ll deleted file mode 100644 index 027085519b4..00000000000 --- a/test/ExecutionEngine/OrcJIT/2002-12-16-ArgTest.ll +++ /dev/null @@ -1,37 +0,0 @@ -; RUN: %lli -use-orcmcjit %s > /dev/null - -@.LC0 = internal global [10 x i8] c"argc: %d\0A\00" ; <[10 x i8]*> [#uses=1] - -declare i32 @puts(i8*) - -define void @getoptions(i32* %argc) { -bb0: - ret void -} - -declare i32 @printf(i8*, ...) - -define i32 @main(i32 %argc, i8** %argv) { -bb0: - call i32 (i8*, ...)* @printf( i8* getelementptr ([10 x i8], [10 x i8]* @.LC0, i64 0, i64 0), i32 %argc ) ; :0 [#uses=0] - %cast224 = bitcast i8** %argv to i8* ; [#uses=1] - %local = alloca i8* ; [#uses=3] - store i8* %cast224, i8** %local - %cond226 = icmp sle i32 %argc, 0 ; [#uses=1] - br i1 %cond226, label %bb3, label %bb2 -bb2: ; preds = %bb2, %bb0 - %cann-indvar = phi i32 [ 0, %bb0 ], [ %add1-indvar, %bb2 ] ; [#uses=2] - %add1-indvar = add i32 %cann-indvar, 1 ; [#uses=2] - %cann-indvar-idxcast = sext i32 %cann-indvar to i64 ; [#uses=1] - %CT = bitcast i8** %local to i8*** ; [#uses=1] - %reg115 = load i8**, i8*** %CT ; [#uses=1] - %cast235 = getelementptr i8*, i8** %reg115, i64 %cann-indvar-idxcast ; [#uses=1] - %reg117 = load i8*, i8** %cast235 ; [#uses=1] - %reg236 = call i32 @puts( i8* %reg117 ) ; [#uses=0] - %cond239 = icmp slt i32 %add1-indvar, %argc ; [#uses=1] - br i1 %cond239, label %bb2, label %bb3 -bb3: ; preds = %bb2, %bb0 - %cast243 = bitcast i8** %local to i32* ; [#uses=1] - call void @getoptions( i32* %cast243 ) - ret i32 0 -} diff --git a/test/ExecutionEngine/OrcJIT/2003-01-04-ArgumentBug.ll b/test/ExecutionEngine/OrcJIT/2003-01-04-ArgumentBug.ll deleted file mode 100644 index 67425a9a3a3..00000000000 --- a/test/ExecutionEngine/OrcJIT/2003-01-04-ArgumentBug.ll +++ /dev/null @@ -1,13 +0,0 @@ -; RUN: %lli -use-orcmcjit %s > /dev/null - -define i32 @foo(i32 %X, i32 %Y, double %A) { - %cond212 = fcmp une double %A, 1.000000e+00 ; [#uses=1] - %cast110 = zext i1 %cond212 to i32 ; [#uses=1] - ret i32 %cast110 -} - -define i32 @main() { - %reg212 = call i32 @foo( i32 0, i32 1, double 1.000000e+00 ) ; [#uses=1] - ret i32 %reg212 -} - diff --git a/test/ExecutionEngine/OrcJIT/2003-01-04-LoopTest.ll b/test/ExecutionEngine/OrcJIT/2003-01-04-LoopTest.ll deleted file mode 100644 index cf805ea4162..00000000000 --- a/test/ExecutionEngine/OrcJIT/2003-01-04-LoopTest.ll +++ /dev/null @@ -1,20 +0,0 @@ -; RUN: %lli -use-orcmcjit %s > /dev/null - -define i32 @main() { - call i32 @mylog( i32 4 ) ; :1 [#uses=0] - ret i32 0 -} - -define internal i32 @mylog(i32 %num) { -bb0: - br label %bb2 -bb2: ; preds = %bb2, %bb0 - %reg112 = phi i32 [ 10, %bb2 ], [ 1, %bb0 ] ; [#uses=1] - %cann-indvar = phi i32 [ %cann-indvar, %bb2 ], [ 0, %bb0 ] ; [#uses=1] - %reg114 = add i32 %reg112, 1 ; [#uses=2] - %cond222 = icmp slt i32 %reg114, %num ; [#uses=1] - br i1 %cond222, label %bb2, label %bb3 -bb3: ; preds = %bb2 - ret i32 %reg114 -} - diff --git a/test/ExecutionEngine/OrcJIT/2003-01-04-PhiTest.ll b/test/ExecutionEngine/OrcJIT/2003-01-04-PhiTest.ll deleted file mode 100644 index b8b851966c0..00000000000 --- a/test/ExecutionEngine/OrcJIT/2003-01-04-PhiTest.ll +++ /dev/null @@ -1,12 +0,0 @@ -; RUN: %lli -use-orcmcjit %s > /dev/null - -define i32 @main() { -;