[LLVMdev] Performing my own pass with a single command line?
Zheng Wang
jason.wangz at gmail.com
Wed Apr 21 04:52:37 PDT 2010
Hi John,
Are there any documents about how to add a pass into LTO?
Cheers,
Zheng
On 19 April 2010 15:11, John Criswell <criswell at uiuc.edu> wrote:
> Dear Zheng Wang,
>
> You have a few options:
>
> 1) You can add your pass to the set of passes that llvm-gcc runs when it
> optimizes code. This requires re-compiling llvm-gcc; it also means that
> your pass must be able to run on incomplete programs and be run multiple
> times over the same code (i.e., it cannot do whole-program analysis).
>
> 2) You can change the build system of the program you're working with to
> generate an LLVM bitcode file. It's the same as what you're doing now,
> except that the program's Makefiles automate the task for you.
>
> 3) You can add your passes to libLTO (http://llvm.org/docs/GoldPlugin.html
> and http://llvm.org/docs/LinkTimeOptimization.html). This will allow your
> passes to be run at link-time by the linker. This method takes some time to
> set up, but it should work beautfully once set up. Furthermore, it can do
> whole-program analysis and optimization (the linker knows when it is
> creating a final executable vs. an object file and can defer whole program
> analysis and transformation until the final link stage).
>
> -- John T.
>
>
> Zheng Wang wrote:
>>
>> Hello,
>>
>>
>> As far as I know, the LLVM pass manager only perform at the llvm
>> bytecode level.
>>
>> This means for each program, I have to convert it to a LLVM bytecode by:
>>
>> llvm-gcc -c -emit-llvm test.c
>>
>> then, I can issue the llvm pass manager to invoke my own pass and
>> produce an output as LLVM bytecode, such as:
>>
>> opt -my-pass < test.o > test.new.o
>>
>> After this point, I need to convert it to assembly code using llc,
>> then to use 'as' to compile the assembly code to an object file, and
>> finally I can
>> use gcc to generate an executable program.
>>
>> *****My question is*****, is there any way to automatically evoke the
>> pass manager, such as:
>>
>> llvm-gcc -c test.c
>>
>> and in such a way my own pass will be evoked?
>>
>> Cheers,
>> Zheng
>> _______________________________________________
>> LLVM Developers mailing list
>> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>>
>
>
--
Best regards,
WANG Zheng
More information about the llvm-dev
mailing list