[LLVMdev] Runtime optimization and other doubts
Chris Lattner
sabre at nondot.org
Wed Nov 2 13:35:05 PST 2005
On Wed, 2 Nov 2005, Sandra Johnson wrote:
> $lli -load ../../../mypass.so test1.bc
> using JIT and it worked perfectly.
> Now I am trying to generate static native code generation and then execute the
> native code program as:
> $opt -load ../../../mypass.so -myoption test.bc > test1.bc
> $llc -load ../../../mypass.so test1.bc -o test1.s
> $gcc test1.s -o test1.native -lpthread
> but now I get the following error
> /tmp/cc8ilAEp.o(.text+0x251): In function `main':
> : undefined reference to `llvm_profile_init'
Try
gcc test1.s -o test1.native -lpthread ../../../mypass.so
Make sure that ../../.. is in your LD_LIBRARY_PATH when running your
program.
> I am also interested in knowing more about profile driven runtime optimizations
There is one profile driven optimization (basic block layout), it does not
run at runtime though, and is not enabled by default.
> I found that optimizations of FunctionPass or MachineFunctionPass when
> used with JIT are executed only once for each function. Am I wright ?
Yes.
> Is there any pass which will be executed each time a function is called
> or whenever it is needed i.e. during runtime ?
No. You could use a function pass that inserts a function call into each
function though, that would give you control every time each function is
entered.
> Is it possible to inline/ clone the function after the machine code is
> generated ?
No, not currently. High-level optimizations like inlining are best
performed on the LLVM IR level, not the machine code level.
-Chris
--
http://nondot.org/sabre/
http://llvm.org/
More information about the llvm-dev
mailing list