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!