mirror of
https://github.com/Gericom/teak-llvm.git
synced 2025-06-19 11:35:51 -04:00
![]() This commit adds a ManglingOptions struct to IRMaterializationUnit, and replaces IRCompileLayer::CompileFunction with a new IRCompileLayer::IRCompiler class. The ManglingOptions struct defines the emulated-TLS state (via a bool member, EmulatedTLS, which is true if emulated-TLS is enabled and false otherwise). The IRCompileLayer::IRCompiler class wraps an IRCompiler (the same way that the CompileFunction typedef used to), but adds a method to return the IRCompileLayer::ManglingOptions that the compiler will use. These changes allow us to correctly determine the symbols that will be produced when a thread local global variable defined at the IR level is compiled with or without emulated TLS. This is required for ORCv2, where MaterializationUnits must declare their interface up-front. Most ORCv2 clients should not require any changes. Clients writing custom IR compilers will need to wrap their compiler in an IRCompileLayer::IRCompiler, rather than an IRCompileLayer::CompileFunction, however this should be a straightforward change (see modifications to CompileUtils.* in this patch for an example). |
||
---|---|---|
.. | ||
CMakeLists.txt | ||
CompileOnDemandLayer.cpp | ||
CompileUtils.cpp | ||
Core.cpp | ||
DebugUtils.cpp | ||
ExecutionUtils.cpp | ||
IndirectionUtils.cpp | ||
IRCompileLayer.cpp | ||
IRTransformLayer.cpp | ||
JITTargetMachineBuilder.cpp | ||
Layer.cpp | ||
LazyReexports.cpp | ||
Legacy.cpp | ||
LLJIT.cpp | ||
LLVMBuild.txt | ||
NullResolver.cpp | ||
ObjectLinkingLayer.cpp | ||
ObjectTransformLayer.cpp | ||
OrcABISupport.cpp | ||
OrcCBindings.cpp | ||
OrcCBindingsStack.h | ||
OrcMCJITReplacement.cpp | ||
OrcMCJITReplacement.h | ||
RTDyldObjectLinkingLayer.cpp | ||
SpeculateAnalyses.cpp | ||
Speculation.cpp | ||
ThreadSafeModule.cpp |