<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Thu, Feb 27, 2014 at 2:07 AM, vikasbhargava <span dir="ltr"><<a href="mailto:vikasbhargava@gmail.com" target="_blank">vikasbhargava@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
I am using clang::ToolInvocation class to compile some code in-memory:<br>
<br>
   clang::tooling::ToolInvocation ti<br>
      (<br>
       compilerArgs,<br>
       new clang::EmitBCAction(),<br>
       new clang::FileManager(clang::FileSystemOptions())<br>
      );<br>
   //filename is the name of the source file, e.g. "Somefile.cpp"<br>
   //sourcecode contains the source of the file<br>
   ti.mapVirtualFile( filename, sourcecode );<br>
   bool ret = ti.run();<br>
<br>
In order to speed up compilation of several sources, I call the above code<br>
concurrently in separate threads, with each thread compiling its own source<br>
code. However, this does not work because clang::CompilerInstance calls<br>
llvm::Sys::RemoveFileOnSignal which in turn calls RegisterHandlers() which<br>
is not re-entrant.<br>
<br>
Is there a way of making this parallel compilation work? I do call<br>
llvm::start_multi_threaded() before any of this, hoping that it will make<br>
llvm routines thread-safe, but to no avail. Are there any other classes that<br>
do not set llvm::Sys::RemoveFileOnSignal to true?<br></blockquote><div><br></div><div>All of this is currently not thread-safe. We usually use multiprocessing to solve the problem. Patches to help making it thread-compatible would be welcome :)</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
thx<br>
Vikas.<br>
=========<br>
<br>
<br>
<br>
--<br>
View this message in context: <a href="http://clang-developers.42468.n3.nabble.com/multithreaded-use-of-clang-tooling-ToolInvocation-tp4038119.html" target="_blank">http://clang-developers.42468.n3.nabble.com/multithreaded-use-of-clang-tooling-ToolInvocation-tp4038119.html</a><br>

Sent from the Clang Developers mailing list archive at Nabble.com.<br>
_______________________________________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@cs.uiuc.edu">cfe-dev@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev</a><br>
</blockquote></div><br></div></div>