Add docs+a script for building clang/LLVM with PGO
authorGeorge Burgess IV <george.burgess.iv@gmail.com>
Fri, 26 Oct 2018 20:56:03 +0000 (20:56 +0000)
committerGeorge Burgess IV <george.burgess.iv@gmail.com>
Fri, 26 Oct 2018 20:56:03 +0000 (20:56 +0000)
commitcf477f4e41d5676ee15444244e2f74d9418b6b68
tree92d1899410be8c04ce91159f94de720643ee0754
parent98d880fbd7aa16b833466855b01cd2c2e5576443
Add docs+a script for building clang/LLVM with PGO

Depending on who you ask, PGO grants a 15%-25% improvement in build
times when using clang. Sadly, hooking everything up properly to
generate a profile and apply it to clang isn't always straightforward.
This script (and the accompanying docs) aim to make this process easier;
ideally, a single invocation of the given script.

In terms of testing, I've got a cronjob on my Debian box that's meant to
run this a few times per week, and I tried manually running it on a puny
Gentoo box I have (four whole Atom cores!). Nothing obviously broke.
¯\_(ツ)_/¯

I don't know if we have a Python style guide, so I just shoved this
through yapf with all the defaults on.

Finally, though the focus is clang at the moment, the hope is that this
is easily applicable to other LLVM-y tools with minimal effort (e.g.
lld, opt, ...). Hence, this lives in llvm/utils and tries to be somewhat
ambiguous about naming.

Differential Revision: https://reviews.llvm.org/D53598

llvm-svn: 345427
llvm/docs/HowToBuildWithPGO.rst [new file with mode: 0644]
llvm/docs/index.rst
llvm/utils/collect_and_build_with_pgo.py [new file with mode: 0755]