Is LLVM suitable for parallel languages?
What p开发者_JS百科roperties of LLVM makes it good choice for implementation of (parallel, concurrent, distributed)-oriented language, what makes it bad?
LLVM is called LLVM (Low Level virtual machine) for a good reason. It is so low-level that you're not bound to any particular semantics for your source language.
There are some useful things in LLVM that makes compilation of some parallel languages easier - e.g., jumps to arbitrary blocks: http://llvm.org/docs/LangRef.html#blockaddress
And LLVM does not imply any particular runtime properties, does not force any specific implementation of GC. You can build whatever you want on top of it.
For some practical examples in this space see http://code.google.com/p/gpuocelot/. It allows Cuda code to multitarget on x86.
精彩评论