Question

What properties of LLVM makes it good choice for implementation of (parallel, concurrent, distributed)-oriented language, what makes it bad?

Was it helpful?

Solution

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.

OTHER TIPS

For some practical examples in this space see http://code.google.com/p/gpuocelot/. It allows Cuda code to multitarget on x86.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top