[LLVMdev] recreate optimized clang output
Hendrix_ at gmx.net
Hendrix_ at gmx.net
Thu Jan 27 12:02:39 PST 2011
On 26.01.2011, at 04:39, John McCall wrote:
> On Jan 24, 2011, at 10:36 AM, Hendrix_ at gmx.net wrote:
>> I was using "clang -O3 -S -emit-llvm" got some very optimized output.
>>
>> Then I did "clang -S -emit-llvm" (without optimization) and wanted to optimized the code in a
>> separate pass. The llvm program "opt" did not do anything.
>>
>> How can I invoke the optimizer on some un-optimized program, possibly showing the output of each optimizer stage?
>> I would like to get a deeper understanding of the optimization pass.
>
> In addition to Sam's advice, I want to point out that clang's IR generator doesn't necessarily emit the same code when compiling for optimization and not. Most obviously, we never emit available_externally function definitions at -O0 because we assume that would just waste compile time.
>
> John.
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?
Best, Patrick
More information about the llvm-dev
mailing list