[ORC] Add support for emulated TLS to ORCv2.
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).
Loading
-
mentioned in commit 7984b474
-
mentioned in commit e0a6093a
-
mentioned in commit 98e55477
-
mentioned in commit b54aa053
-
mentioned in commit 97d000da
-
mentioned in commit 32723d57
-
mentioned in commit 46f6f038
-
mentioned in commit 92edb295
-
mentioned in commit 011adfcb
-
mentioned in commit 32056b4e
-
mentioned in commit e40782f3
Please register or sign in to comment