[LLVMdev] Capabilities of Clang's PGO (e.g. improving code density)

Philip Reames listmail at philipreames.com
Thu May 28 09:56:43 PDT 2015



On 05/27/2015 11:13 AM, Duncan P. N. Exon Smith wrote:
>> On 2015 May 27, at 07:42, Diego Novillo <dnovillo at google.com> wrote:
>>
>> On Tue, May 26, 2015 at 11:47 PM, Lee Hunt <leehu at exchange.microsoft.com> wrote:
>>
>>> For example, from reading different pages on how Clang PGO, it’s unclear if
>>> it does “block reordering” (i.e. moving unexecuted code blocks to a distant
>>> code page, leaving only ‘hot’ executed code packed together for greater code
>>> density).  I find mention of “hot arc” optimization (-fprofile-arcs) , but
>>> I’m unclear if this is the same thing.  Does Clang PGO do block reordering?
>> A small clarification.  Clang itself does not implement any
>> optimizations.  Clang limits itself to generate LLVM IR.  The
>> annotated IR is then used by some LLVM optimizers to guide decisions.
>> At this time, there are few optimization passes that use the profile
>> information: block reordering and register allocation (to avoid
>> spilling on cold paths).
>>
>> There are no other significant transformations that use profiling
>> information. We are working on that.  Notably, we'd like to add
>> profiling-based decisions to the inliner
> Just a quick note about the inliner.  Although the inliner itself
> doesn't know how to use the profile, clang's IRGen has been modified
> to add an 'inlinehint' attribute to hot functions and the 'cold'
> attribute to cold functions.  Indirectly, PGO does affect the
> inliner.  (We'll remove this once the inliner does the right thing on
> its own.)
OT: Can you give me a pointer to the clang code involved?  I wasn't 
aware of this.
>
>> , loop optimizers and the
>> vectorizer.
>>
>>
>> Diego.
>>
>> _______________________________________________
>> LLVM Developers mailing list
>> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev





More information about the llvm-dev mailing list