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)
This commit is contained in:
commit
ee73f80dc9
17 changed files with 648 additions and 298 deletions
|
|
@ -94,6 +94,7 @@ static WHITELIST: &'static [Crate] = &[
|
|||
Crate("log"),
|
||||
Crate("log_settings"),
|
||||
Crate("memchr"),
|
||||
Crate("memmap"),
|
||||
Crate("memoffset"),
|
||||
Crate("miniz-sys"),
|
||||
Crate("nodrop"),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue