diff options
| author | Aaron Hill <aa1ronham@gmail.com> | 2020-12-04 18:37:21 -0500 |
|---|---|---|
| committer | Aaron Hill <aa1ronham@gmail.com> | 2020-12-04 22:16:40 -0500 |
| commit | c2946402ffb5edde461b5047213e56b4e1500ec8 (patch) | |
| tree | 6934b4679aa914e0633f30142979289e82f51032 /src/test/incremental | |
| parent | 3ff10e74a74ed093fcabac1de27fe1cd65bbbb4a (diff) | |
| download | rust-c2946402ffb5edde461b5047213e56b4e1500ec8.tar.gz rust-c2946402ffb5edde461b5047213e56b4e1500ec8.zip | |
Properly re-use def path hash in incremental mode
Fixes #79661 In incremental compilation mode, we update a `DefPathHash -> DefId` mapping every time we create a `DepNode` for a foreign `DefId`. This mapping is written out to the on-disk incremental cache, and is read by the next compilation session to allow us to lazily decode `DefId`s. When we decode a `DepNode` from the current incremental cache, we need to ensure that any previously-recorded `DefPathHash -> DefId` mapping gets recorded in the new mapping that we write out. However, PR #74967 didn't do this in all cases, leading to us being unable to decode a `DefPathHash` in certain circumstances. This PR refactors some of the code around `DepNode` deserialization to prevent this kind of mistake from happening again.
Diffstat (limited to 'src/test/incremental')
| -rw-r--r-- | src/test/incremental/auxiliary/issue-79661.rs | 6 | ||||
| -rw-r--r-- | src/test/incremental/issue-79661-missing-def-path-hash.rs | 14 |
2 files changed, 20 insertions, 0 deletions
diff --git a/src/test/incremental/auxiliary/issue-79661.rs b/src/test/incremental/auxiliary/issue-79661.rs new file mode 100644 index 00000000000..cd32a52ebfd --- /dev/null +++ b/src/test/incremental/auxiliary/issue-79661.rs @@ -0,0 +1,6 @@ +#![feature(rustc_attrs)] + +#[cfg_attr(any(rpass2, rpass3), doc = "Some comment")] +pub struct Foo; + +pub struct Wrapper(Foo); diff --git a/src/test/incremental/issue-79661-missing-def-path-hash.rs b/src/test/incremental/issue-79661-missing-def-path-hash.rs new file mode 100644 index 00000000000..f86fb33fbf6 --- /dev/null +++ b/src/test/incremental/issue-79661-missing-def-path-hash.rs @@ -0,0 +1,14 @@ +// aux-build:issue-79661.rs +// revisions: rpass1 rpass2 rpass3 + +// Regression test for issue #79661 +// We were failing to copy over a DefPathHash->DefId mapping +// from the old incremental cache to the new incremental cache +// when we ended up forcing a query. As a result, a subsequent +// unchanged incremental run would crash due to the missing mapping + +extern crate issue_79661; +use issue_79661::Wrapper; + +pub struct Outer(Wrapper); +fn main() {} |
