Hi Everyone,
I'm looking for someone who is interested in doing contract work to
improve LLVM's support for multithreaded compilers. Specifically,
we'd like to support a process with multiple threads hacking on
*different* LLVM Module's at the same time in the same address space.
At this point, I'm not worried about multiple threads hacking on
different parts of a single module.
Current issues that prevent this from working include a small
collection of global and static variables (e.g. those in
TargetOptions.h, those in VMCore, etc) and the bigger issue of
uniquing of Constants and Types, how this works with the LLVM IR
operand infrastructure, and how uniqued objects are shared between
Modules. As part of this work, I'd expect you to build a simple test
harness to show that it actually works (e.g. set up a harness that has
clang parse, optimize, and codegen multiple files at a time in
different threads).
The work should be done on the mainline LLVM tree, and will be
structured as a milestone-based contract where payment is made as each
milestone is achieved.
If you are interested in this, please contact me off the mailing list,
thanks!
-Chris