rust/src
bors ee73f80dc9 Auto merge of #53673 - michaelwoerister:incr-thinlto-2000, r=alexcrichton
Enable ThinLTO with incremental compilation.

This is an updated version of #52309. This PR allows `rustc` to use (local) ThinLTO and incremental compilation at the same time. In theory this should allow for getting compile-time improvements for small changes while keeping the runtime performance of the generated code roughly the same as when compiling non-incrementally.

The difference to #52309 is that this version also caches the pre-LTO version of LLVM bitcode. This allows for another layer of caching:
1. if the module itself has changed, we have to re-codegen and re-optimize.
2. if the module itself has not changed, but a module it imported from during ThinLTO has, we don't need to re-codegen and don't need to re-run the first optimization phase. Only the second (i.e. ThinLTO-) optimization phase is re-run.
3. if neither the module itself nor any of its imports have changed then we can re-use the final, post-ThinLTO version of the module. (We might have to load its pre-ThinLTO version though so it's available for other modules to import from)
2018-09-03 13:59:57 +00:00
..
bootstrap Rollup merge of #53076 - QuietMisdreavus:cfg-rustdoc, r=GuillaumeGomez 2018-09-01 23:18:41 +08:00
build_helper
ci [RISCV] Add riscv32imc-unknown-none-elf target. 2018-08-30 16:03:37 +02:00
dlmalloc@c99638dc2e
doc Rollup merge of #53076 - QuietMisdreavus:cfg-rustdoc, r=GuillaumeGomez 2018-09-01 23:18:41 +08:00
etc Fix direction of slashes in the help text example. 2018-08-30 20:23:41 +01:00
grammar
jemalloc@1f5a28755e
liballoc Auto merge of #53884 - kennytm:rollup, r=kennytm 2018-09-01 15:48:21 +00:00
liballoc_jemalloc
liballoc_system
libarena
libbacktrace@f4d02bbdbf
libcompiler_builtins@f3a13eb238 Update LLVM submodule 2018-08-31 16:00:41 -07:00
libcore Auto merge of #53599 - matthiaskrgr:split_str__to__split_char, r=frewsxcv 2018-09-02 15:27:56 +00:00
libfmt_macros
libgraphviz
liblibc@1844a772b6
libpanic_abort
libpanic_unwind
libproc_macro
libprofiler_builtins
librustc Auto merge of #53673 - michaelwoerister:incr-thinlto-2000, r=alexcrichton 2018-09-03 13:59:57 +00:00
librustc_allocator
librustc_apfloat
librustc_asan
librustc_borrowck
librustc_codegen_llvm incr.ThinLTO: Do some cleanup and add some logging. 2018-09-03 13:26:46 +02:00
librustc_codegen_utils
librustc_cratesio_shim
librustc_data_structures Rollup merge of #53786 - frewsxcv:frewsxcv-bad-style, r=Manishearth 2018-08-30 20:15:47 +02:00
librustc_driver Add deprecated_name argument to the register lint group functions 2018-08-31 00:46:55 -07:00
librustc_errors Rollup merge of #53786 - frewsxcv:frewsxcv-bad-style, r=Manishearth 2018-08-30 20:15:47 +02:00
librustc_fs_util
librustc_incremental Auto merge of #53673 - michaelwoerister:incr-thinlto-2000, r=alexcrichton 2018-09-03 13:59:57 +00:00
librustc_lint Add deprecated_name argument to the register lint group functions 2018-08-31 00:46:55 -07:00
librustc_llvm
librustc_lsan
librustc_metadata Rollup merge of #53472 - eddyb:fx-pls, r=pnkfelix 2018-08-30 20:15:29 +02:00
librustc_metadata_utils
librustc_mir Auto merge of #53673 - michaelwoerister:incr-thinlto-2000, r=alexcrichton 2018-09-03 13:59:57 +00:00
librustc_msan
librustc_passes Auto merge of #53815 - F001:if-let-guard, r=petrochenkov 2018-09-01 20:31:29 +00:00
librustc_platform_intrinsics
librustc_plugin Add deprecated_name argument to the register lint group functions 2018-08-31 00:46:55 -07:00
librustc_privacy
librustc_resolve Auto merge of #53815 - F001:if-let-guard, r=petrochenkov 2018-09-01 20:31:29 +00:00
librustc_save_analysis Auto merge of #53838 - nrc:save-generic, r=eddyb 2018-09-03 02:32:11 +00:00
librustc_target Auto merge of #53604 - oli-obk:min_const_fn, r=Centril,varkor 2018-09-01 11:26:24 +00:00
librustc_traits
librustc_tsan
librustc_typeck Auto merge of #53842 - estebank:various, r=petrochenkov 2018-09-01 23:34:14 +00:00
librustdoc Auto merge of #53599 - matthiaskrgr:split_str__to__split_char, r=frewsxcv 2018-09-02 15:27:56 +00:00
libserialize
libstd Auto merge of #53725 - tbu-:pr_getrandom_syscalls, r=alexcrichton 2018-09-02 21:24:18 +00:00
libsyntax Replace check() + bump() with eat() 2018-09-02 15:19:28 +09:00
libsyntax_ext
libsyntax_pos
libterm
libtest
libunwind
llvm@2a1cdeadd3 Update LLVM submodule 2018-08-31 16:00:41 -07:00
llvm-emscripten@2717444753
rtstartup
rustc
rustllvm Auto merge of #53673 - michaelwoerister:incr-thinlto-2000, r=alexcrichton 2018-09-03 13:59:57 +00:00
stdsimd@05c2f61c38
test Auto merge of #53831 - TheDarkula:pointer-check, r=oli-obk 2018-09-03 11:31:15 +00:00
tools Auto merge of #53673 - michaelwoerister:incr-thinlto-2000, r=alexcrichton 2018-09-03 13:59:57 +00:00
.gitignore
Cargo.lock Always add all modules to the global ThinLTO module analysis when compiling incrementally. 2018-08-31 15:22:52 +02:00
Cargo.toml
README.md
stage0.txt

This directory contains the source code of the rust project, including:

  • rustc and its tests
  • libstd
  • Various submodules for tools, like rustdoc, rls, etc.

For more information on how various parts of the compiler work, see the rustc guide.

Their is also useful content in the following READMEs, which are gradually being moved over to the guide: