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

Duncan P. N. Exon Smith dexonsmith at apple.com
Wed May 27 11:13:30 PDT 2015


> 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.)

> , 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





More information about the llvm-dev mailing list