rust/src/tools
bors 3ffea60dd5 Auto merge of #80262 - Mark-Simulacrum:pgo-rustc, r=pietroalbini
Utilize PGO for rustc linux dist builds

This implements support for applying PGO to the rustc compilation step (not
standard library or any tooling, including rustdoc). Expanding PGO to more tools
is not terribly difficult but will involve more work and greater CI time
commitment.

For the same reason of avoiding greater implementation time commitment,
implementing for platforms outside of x86_64-unknown-linux-gnu is skipped.
In practice it should be quite simple to extend over time to more platforms. The
initial implementation is intentionally minimal here to avoid too much work
investment before we start seeing wins for a subset of Rust users.

The choice of workloads to profile here is somewhat arbitrary, but the general
rationale was to aim for a small set that largely avoided time regressions on
perf.rust-lang.org's full suite of crates. The set chosen is libcore, cargo (and
its dependencies), and a few ad-hoc stress tests from perf.rlo. The stress tests
are arguably the most controversial, but they benefit those cases (avoiding
regressions) and do not really remove wins from other benchmarks.

The primary next step after this PR lands is to implement support for PGO in
LLVM. It is unclear whether we can afford a full LLVM rebuild in CI, though, so
the approach taken there may need to be more staggered. rustc-only PGO seems
well affordable on linux at least, giving us up to 20% wall time wins on some
crates for 15 minutes of extra CI time (1 hour with this PR, up from 45 minutes).

The PGO data is uploaded to allow others to reuse it if attempting to reproduce
the CI build or potentially, in the future, on other platforms where an
off-by-one strategy is used for dist builds at minimal performance cost.

r? `@michaelwoerister` (but tell me if you don't want to / don't feel comfortable approving and we can find others)
2020-12-23 12:54:56 +00:00
..
build-manifest Utilize PGO for rustc linux dist builds 2020-12-22 12:23:37 -05:00
cargo@a3c2627fbc Update cargo 2020-12-18 07:30:23 -08:00
cargotest Update xsv to prevent random CI failures 2020-12-07 12:51:28 -05:00
clippy Merge commit '4911ab124c' into clippyup 2020-12-20 17:19:49 +01:00
compiletest compiletest: add split dwarf compare mode 2020-12-16 10:33:51 +00:00
error_index_generator mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
expand-yaml-anchors expand-yaml-anchors: Make the output directory separator-insensitive 2020-12-14 23:33:20 +09:00
linkchecker Dogfood 'str_split_once() with linkchecker 2020-12-07 14:00:21 -07:00
lint-docs Fix trimming of lint docs 2020-12-06 14:11:02 -08:00
miri@2065b52dfe update Miri 2020-12-11 18:08:44 +01:00
remote-test-client Support configurable deny-warnings for all in-tree crates. 2020-06-25 21:17:21 -07:00
remote-test-server Support configurable deny-warnings for all in-tree crates. 2020-06-25 21:17:21 -07:00
rls@2cf84baa5e Bump Rustfmt to 1.4.29 2020-12-06 02:16:06 +01:00
rust-analyzer@0d03fe6ef5 ⬆️ rust-analyzer 2020-09-14 16:11:06 +02:00
rust-demangler Update rustc-demangle 2020-10-21 21:05:38 +01:00
rust-installer@d66f476b4d Update rust-installer to latest version 2020-07-07 14:15:51 -07:00
rustbook Fix displaying errors when rustbook tests fail. 2020-11-14 17:37:02 -08:00
rustc-workspace-hack Add libc to rustc-workspace-hack 2020-12-05 18:08:33 +01:00
rustdoc Format the world 2019-12-22 17:42:47 -05:00
rustdoc-js Improve rustdoc JS tests error output 2020-11-26 21:59:45 +01:00
rustdoc-themes Format the world 2019-12-22 17:42:47 -05:00
rustfmt@70ce18255f Bump Rustfmt to 1.4.29 2020-12-06 02:16:06 +01:00
tidy Auto merge of #78399 - vn-ki:gsgdt-graphviz, r=oli-obk 2020-12-15 22:00:02 +00:00
tier-check Remove note about missing ios/tvos targets in platform docs. 2020-09-25 12:09:06 -07:00
unicode-table-generator unicode_table_generator: fix clippy::writeln_empty_string, clippy::useless_format, clippy:::for_kv_map 2020-08-24 00:43:50 +02:00
unstable-book-gen Replace write_fmt with write! 2020-09-20 10:35:23 +02:00
x Add a tool to run x.py from any subdirectory 2020-11-03 19:40:02 -08:00
publish_toolstate.py Ping me when nomicon's toolstate is broken 2020-12-05 12:05:03 +09:00