[LLVMdev] Fwd: Basic questions
mail at grahamwakefield.net
Sun Nov 9 11:47:15 PST 2008
On Nov 9, 2008, at 3:46 AM, Nuno Lopes wrote:
>> I'd like to support users dynamically adding and using functions
>> (plus structs, globals etc) to a Module, JIT compiling to an
>> ExecutionEngine, in an interleaved fashion. That is, declare & define
>> a function, run it through a FunctionPassManager, add it to an
>> ExecutionEngine, use it, go ahead and repeat for a different function
>> with the same Module, FunctionPassManager & ExecutionEngine, etc.
> that should work without much trouble.
> You can also redefine a function body
> and recompile it. The only catch is with inling. If you do any
> inling you'll
> have to recompile the other functions that inlined the redefined
Got it. nice.
>> Also, does there need to be a 1-1-1 correspondence between Module,
>> FunctionPassManager and ExecutionEngine, or can it be 1-many(1-1)?
> You can do the combinations you want, although I don't see any
> point in
> doing such a thing. It's just a waste of memory :)
The reason is that I may have users needing to run very similar code
concurrently and somewhat sandboxed. I was thinking to save memory by
using the same Module for each concurrent instance.
>> Thanks again, and once again sorry if this info is available in
>> existing docs; I haven't been able to find it yet.
> I think you'll find the doxygen docs helpful:
Yes I saw the doxy ... this line put me off: "This documentation
describes the internal software that makes up LLVM, not the external
use of LLVM. There are no instructions here on how to use LLVM, only
the APIs that make up the software. For usage instructions, please
see the programmer's guide or reference manual." (Which I have
I'm at an early stage with LLVM, trying to put together a design/
implementation strategy for some specific use-cases. Having a broad
top-level view of LLVM's potentials, limits/points of possible
failure, and implementation idioms is essential to getting a good
strategy for using it. It's understandably difficult to attain given
that LLVM could be used in *so many* different and powerful ways! I
think some of this understanding will emerge through practice and
test projects, and the various presentations (mov, pdf) on the site
have also helped tremendously.
Thanks for all your help.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the llvm-dev