[llvm-dev] [RFC] Profile guided section layout

Tobias Edler von Koch via llvm-dev llvm-dev at lists.llvm.org
Mon Jul 31 14:43:53 PDT 2017

Hi Rafael,

On 07/31/2017 04:20 PM, Rafael Avila de Espindola via llvm-dev wrote:
> However, do we need to start with instrumentation? The original paper
> uses sampling with good results and current intel cpus can record every
> branch in a program.
> I would propose starting with just an lld patch that reads the call
> graph from a file. The format would be very similar to what you propose,
> just weight,caller,callee.

The advantage of the proposed approach (weighted callgraph section) is 
that it's completely transparent: it works regardless of the particular 
profiling methodology (as long as there's !perf metadata when the pass 
runs). For this reason, it fits neatly into an *existing* PGO-based 
build flow. I only need to add 1 compiler flag to enable it. That's a 
big plus.

On the other hand, I could see how your idea (callgraph input file for 
linker) would be useful in situations where I just want to do section 
layout but no PGO in the compiler... and of course for testing of the 
linker's sorting algorithm.

So there's merits in both, but for my use cases Michael's original 
approach is the most practical.


Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
a Linux Foundation Collaborative Project.

More information about the llvm-dev mailing list