<div dir="ltr">Hi,<div><br></div><div>I'm trying to speed up the JIT time with llvm (3.9.1).</div><div>So far i've implemented the object cache, used FastISel and disabled optimizations.</div><div>Jit time is still too slow for my purpose (I do have a lot of code to Jit).</div><div><br></div><div><a href="http://llvm.org/docs/ProgrammersManual.html#threads-and-the-jit">http://llvm.org/docs/ProgrammersManual.html#threads-and-the-jit</a> states that we can invoke <span style="color:rgb(0,0,0);font-family:consolas,'deja vu sans mono','bitstream vera sans mono',monospace;font-size:13px">ExecutionEngine::getPointerToFunction()</span> concurrently. This function was replaced by <span style="color:rgb(0,0,0);font-family:consolas,'deja vu sans mono','bitstream vera sans mono',monospace;font-size:13px">ExecutionEngine::getFunctionAddress(). </span>Is this function also thread safe?</div><div><br></div><div>I want to speed up codegen by invoking parallel calls to getfunctionaddress(). Currently  due the the large amount of code that has to be Jitted, the getfunctionaddress() takes around 40% of my load time.</div><div><br></div><div>What is meant with "<span style="color:rgb(0,0,0);font-family:'lucida grande','lucida sans unicode',geneva,verdana,sans-serif;font-size:14px">he user must still ensure that only one thread accesses IR in a given </span><code class="gmail-docutils gmail-literal" style="font-family:consolas,'deja vu sans mono','bitstream vera sans mono',monospace;font-size:0.95em;color:rgb(0,0,0)"><span class="gmail-pre">LLVMContext</span></code><span style="color:rgb(0,0,0);font-family:'lucida grande','lucida sans unicode',geneva,verdana,sans-serif;font-size:14px"> while another thread might be modifying it" ?</span></div><div><span style="color:rgb(0,0,0);font-family:'lucida grande','lucida sans unicode',geneva,verdana,sans-serif;font-size:14px"><br></span></div><div><span style="color:rgb(0,0,0);font-family:'lucida grande','lucida sans unicode',geneva,verdana,sans-serif;font-size:14px">If I pre-generate all IR, and before execution, invoke the parallel getfunctionaddress() I should be fine right ? Since IR won't be modified anymore.</span></div><div><span style="color:rgb(0,0,0);font-family:'lucida grande','lucida sans unicode',geneva,verdana,sans-serif;font-size:14px"><br></span></div><div><font color="#000000" face="lucida grande, lucida sans unicode, geneva, verdana, sans-serif"><span style="font-size:14px">Cheers,</span></font></div></div>