Auto merge of #113562 - saethlin:larger-incr-comp-offset, r=nnethercote
Use u64 for incr comp allocation offsets Fixes https://github.com/rust-lang/rust/issues/76037 Fixes https://github.com/rust-lang/rust/issues/95780 Fixes https://github.com/rust-lang/rust/issues/111613 These issues are all reporting ICEs caused by using `u32` to store offsets to allocations in the incremental compilation cache. This PR aims to lift that limitation by changing the offset type in question to `u64`. There are two perf runs in this PR. The first reports a regression, and the second does not. The changes are the same in both. I rebased the PR then did the second perf run because I noticed that the primary regression in it was very commonly seen in spurious regression reports. I do not know what the perf run will report when this is merged. I would not be surprised to see regression or neutral, but the cachegrind diffs for the regression point at `try_mark_previous_green` which is a common source of inexplicable regressions and I don't think should be perturbed by this PR. I'm not opposed to adding a regression test such as ```rust fn main() { println!("{}", [37; 1 << 30].len()); } ``` But that program takes 1 minute to compile and consumes 4.6 GB of memory then writes that much to disk. Is that a concerning amount of resource use for a test? r? `@nnethercote`
This commit is contained in:
commit
6f65ef5717
5 changed files with 9 additions and 6 deletions
|
@ -608,7 +608,7 @@ impl<'a, 'tcx> EncodeContext<'a, 'tcx> {
|
|||
trace!("encoding {} further alloc ids", new_n - n);
|
||||
for idx in n..new_n {
|
||||
let id = self.interpret_allocs[idx];
|
||||
let pos = self.position() as u32;
|
||||
let pos = self.position() as u64;
|
||||
interpret_alloc_index.push(pos);
|
||||
interpret::specialized_encode_alloc_id(self, tcx, id);
|
||||
}
|
||||
|
|
|
@ -264,7 +264,7 @@ pub(crate) struct CrateRoot {
|
|||
traits: LazyArray<DefIndex>,
|
||||
impls: LazyArray<TraitImpls>,
|
||||
incoherent_impls: LazyArray<IncoherentImpls>,
|
||||
interpret_alloc_index: LazyArray<u32>,
|
||||
interpret_alloc_index: LazyArray<u64>,
|
||||
proc_macro_data: Option<ProcMacroData>,
|
||||
|
||||
tables: LazyTables,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue