[LLVMdev] recreate optimized clang output

Hendrix_ at gmx.net Hendrix_ at gmx.net
Thu Jan 27 13:45:06 PST 2011


On 27.01.2011, at 21:45, Devang Patel wrote:

> 
> On Jan 27, 2011, at 12:37 PM, Hendrix_ at gmx.net wrote:
> 
>> 
>> On 27.01.2011, at 21:12, Devang Patel wrote:
>> 
>>> 
>>> On Jan 27, 2011, at 12:02 PM, Hendrix_ at gmx.net wrote:
>>> 
>>>> OK, I am looking for "LTO"/global optimization. So the function definition will remain "somewhere else" (externally), and the optimizer will find in some other module to possibly inline it later on.
>>>> 
>>>> I am planning to concat all the *.ll (eg "link" the files) and pass them to the "global" optimizer, as "size" is a very important optimization criterium to me. After that, the back-end will be invoked.
>>>> Is that a good approach?
>>> 
>>> How about just add -O4 on clang (or llvm-gcc) command line to get LTO optimizations ?
>>> See	http://llvm.org/docs/LinkTimeOptimization.html
>>> 	http://llvm.org/docs/GoldPlugin.html
>>> 	On Mac OS X, it is a checkbox in Xcode.
>>> -
>>> Devang
>> 
>> My backend doesnt supply lto :( I am trying to emulate lto like this:
> 
> The backend (or code generator) does not do LTO in this case also.

Roger, but the effect is equivalent to lto, isnt it?
As I understand, lto-enabled GCC does the same (save as compiled code and IR) and the linker will optimize over that IR (if present) and then invoke its backend.
I was playing with gcc-lto on linux last year, but it didnt work very well for me at that time. So when I saw llvm, that is what came to my mind first: emulated lto due to the IR!

>> clang *.c -S -emit-llvm
>> cat *.ll > very_big.ll
>> opt -O3 -extra-things...
>> llc very_big.ll.optimized
> 
> Try replacing "cat *.ll > very_big.ll" with "llvm-ld *.ll -o big.bc". 'llvm-ld' is another llvm tool, just like 'opt'

OK! I will be able to have a look at any intermediate file with llvm-dis I suppose in order to verify the transformations done...

Best, Patrick
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20110127/175ad9d8/attachment.html>


More information about the llvm-dev mailing list