[ORC] Promote and rename private symbols inside the CompileOnDemand layer,
authorLang Hames <lhames@gmail.com>
Tue, 9 Oct 2018 20:44:32 +0000 (20:44 +0000)
committerLang Hames <lhames@gmail.com>
Tue, 9 Oct 2018 20:44:32 +0000 (20:44 +0000)
commitbf6603e9181e1a1e2c88f148b487c8cc7f655a51
tree1b8e51fb73438f251145a6fceea260efc43fcd6c
parent87873d04c3401ecd91bbdd38b2b84b1f6bc0b1e4
[ORC] Promote and rename private symbols inside the CompileOnDemand layer,
rather than require them to have been promoted before being passed in.

Dropping this precondition is better for layer composition (CompileOnDemandLayer
was the only one that placed pre-conditions on the modules that could be added).
It also means that the promoted private symbols do not show up in the target
JITDylib's symbol table. Instead, they are confined to the hidden implementation
dylib that contains the actual definitions.

For the 403.gcc testcase this cut down the public symbol table size from ~15,000
symbols to ~4000, substantially reducing symbol dependence tracking costs.

llvm-svn: 344078
llvm/include/llvm/ExecutionEngine/Orc/CompileOnDemandLayer.h
llvm/include/llvm/ExecutionEngine/Orc/IndirectionUtils.h
llvm/include/llvm/ExecutionEngine/Orc/LLJIT.h
llvm/lib/ExecutionEngine/Orc/CompileOnDemandLayer.cpp
llvm/lib/ExecutionEngine/Orc/ExecutionUtils.cpp
llvm/lib/ExecutionEngine/Orc/IndirectionUtils.cpp
llvm/lib/ExecutionEngine/Orc/LLJIT.cpp