[Orc] Refactor the compile-on-demand layer to make module partitioning lazy,
authorLang Hames <lhames@gmail.com>
Mon, 4 May 2015 22:03:10 +0000 (22:03 +0000)
committerLang Hames <lhames@gmail.com>
Mon, 4 May 2015 22:03:10 +0000 (22:03 +0000)
commitee160106a131f9b79b89c5ea3b6c0e1e1d1f019d
tree2607bedc615614f162bdd0935002b23bc6ed8202
parent79597d74890dc34ab67f791e6033332334803fc9
[Orc] Refactor the compile-on-demand layer to make module partitioning lazy,
and avoid cloning unused decls into every partition.

Module partitioning showed up as a source of significant overhead when I
profiled some trivial test cases. Avoiding the overhead of partitionging
for uncalled functions helps to mitigate this.

This change also means that it is no longer necessary to have a
LazyEmittingLayer underneath the CompileOnDemand layer, since the
CompileOnDemandLayer will not extract or emit function bodies until they are
called.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236465 91177308-0d34-0410-b5e6-96231b3b80d8
examples/Kaleidoscope/Orc/fully_lazy/toy.cpp
include/llvm/ExecutionEngine/Orc/CloneSubModule.h [deleted file]
include/llvm/ExecutionEngine/Orc/CompileOnDemandLayer.h
include/llvm/ExecutionEngine/Orc/IndirectionUtils.h
lib/ExecutionEngine/Orc/CMakeLists.txt
lib/ExecutionEngine/Orc/CloneSubModule.cpp [deleted file]
lib/ExecutionEngine/Orc/IndirectionUtils.cpp
test/ExecutionEngine/OrcLazy/hello.ll
tools/lli/OrcLazyJIT.h