diff options
| author | bors <bors@rust-lang.org> | 2019-01-20 13:46:03 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2019-01-20 13:46:03 +0000 |
| commit | 4db2394156b408e7af5c595bf3c9cbff8ba21157 (patch) | |
| tree | a65f676b190714a2f049df6549572f1b9fdbc2b7 /src/bootstrap | |
| parent | d38d6be336e87055d90375c981806d5d133f446a (diff) | |
| parent | 9b8c3c4cff4302a50fc8c82a18f10fc97b0fb3b7 (diff) | |
| download | rust-4db2394156b408e7af5c595bf3c9cbff8ba21157.tar.gz rust-4db2394156b408e7af5c595bf3c9cbff8ba21157.zip | |
Auto merge of #57680 - cuviper:codegen-rebuild, r=Mark-Simulacrum
[rustbuild] Rebuild std after changes to codegen backends Use `clear_if_dirty` on std for backend changes, just as we do for changes to rustc itself, so new codegen is correctly applied to all later compiler stages. Fixes #48298.
Diffstat (limited to 'src/bootstrap')
| -rw-r--r-- | src/bootstrap/builder.rs | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/bootstrap/builder.rs b/src/bootstrap/builder.rs index 9c58f5b179f..31adab64f60 100644 --- a/src/bootstrap/builder.rs +++ b/src/bootstrap/builder.rs @@ -660,6 +660,15 @@ impl<'a> Builder<'a> { } } + /// Get the paths to all of the compiler's codegen backends. + fn codegen_backends(&self, compiler: Compiler) -> impl Iterator<Item = PathBuf> { + fs::read_dir(self.sysroot_codegen_backends(compiler)) + .into_iter() + .flatten() + .filter_map(Result::ok) + .map(|entry| entry.path()) + } + pub fn rustdoc(&self, host: Interned<String>) -> PathBuf { self.ensure(tool::Rustdoc { host }) } @@ -750,6 +759,9 @@ impl<'a> Builder<'a> { match mode { Mode::Std => { self.clear_if_dirty(&my_out, &self.rustc(compiler)); + for backend in self.codegen_backends(compiler) { + self.clear_if_dirty(&my_out, &backend); + } }, Mode::Test => { self.clear_if_dirty(&my_out, &libstd_stamp); |
