diff options
| author | bors <bors@rust-lang.org> | 2021-12-31 16:38:23 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2021-12-31 16:38:23 +0000 |
| commit | 984a6bf9c11b7356f696c685a145d7136fff051c (patch) | |
| tree | 31d92d9cabd3d2ebec0cf370efd69c97458836f9 /compiler/rustc_codegen_gcc | |
| parent | 8ed935e92dfb09ae388344b12284bf5110cf9265 (diff) | |
| parent | d9220924dc5603730b480706d94f5d68663f69b2 (diff) | |
| download | rust-984a6bf9c11b7356f696c685a145d7136fff051c.tar.gz rust-984a6bf9c11b7356f696c685a145d7136fff051c.zip | |
Auto merge of #92175 - Aaron1011:fix-missing-source-file, r=cjgillot
Import `SourceFile`s from crate before decoding foreign `Span` Fixes #92163 Fixes #92014 When writing to the incremental cache, we encode all `Span`s we encounter, regardless of whether or not their `SourceFile` comes from the local crate, or from a foreign crate. When we decode a `Span`, we use the `StableSourceFileId` we encoded to locate the matching `SourceFile` in the current session. If this id corresponds to a `SourceFile` from another crate, then we need to have already imported that `SourceFile` into our current session. This usually happens automatically during resolution / macro expansion, when we try to resolve definitions from other crates. In certain cases, however, we may try to load a `Span` from a transitive dependency without having ever imported the `SourceFile`s from that crate, leading to an ICE. This PR fixes the issue by enconding the `SourceFile`'s `CrateNum` when we encode a `Span`. During decoding, we call `imported_source_files()` when we encounter a foreign `CrateNum`, which ensure that all `SourceFile`s from that crate are imported into the current session.
Diffstat (limited to 'compiler/rustc_codegen_gcc')
0 files changed, 0 insertions, 0 deletions
