[LLVMdev] Available code-generation parallism
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Fri Nov 7 06:05:39 PST 2008
Jonathan Brandmeyer wrote:
>
> What about lazy unification of uniqued values after IR construction? If
> that pass is performed on a per-module basis, then all of the Modules
> will be isolated in memory from each other. The front-end can partition
> its source into N modules in whatever way it sees fit. Then it can
> instantiate a PassManager and Module per thread and build the IR into
> them. That isn't quite as nice as taking advantage of per-function
> parallelism where the individual passes allow it, but it would be a step
> in the right direction.
>
>
Going further, why should it be per-module? We could let the front-end
decide if uniqued values like constants, types, ... are per-function,
per-module or global.
When using LLVM as a JIT (eg vmkit), the nice thing if it's
per-function is that we can delete all constants a function uses after
JIT code generation. For example, I've noticed that 5M are used only for
constants when running vmkit with a large application (eg Tomcat). I
surely would like these 5M to be deleted when JIT code generation is
finished.
Nicolas
More information about the llvm-dev
mailing list