On Sat, Apr 27, 2019 at 9:24 AM Priyanka Bose via llvm-dev <[hidden email]> wrote:
We are using clang based compiler for our android
We plan to enable the PGO (profile guided optimization
) for some of our android modules
I would like to have some understanding on the way
that the PGO profiles are being used by the clang compiler.
As I understand Profile guidance enables the
compiler to make better optimization decisions by using knowledge about how the
program actually runs.
With this profile information, the compiler can
do a better job of inlining functions, ordering basic blocks, allocating
registers, and so on.
So I would like to know if the clang based
compiler in android will use these profiles for making better decisions on
inlining or register allocations ?
Not sure on the register allocation, but definitely yes for inlining. It is also used for a slew of other optimizations (e.g. value profiling based indirect call promotion and memcpy optimization, partial inlining, function layout, and misc other places.
But when I went through the clang documentation,
right now the pgo profiles can be used for block reordering but could not find
reference as to whether it helps the compiler