about summary refs log tree commit diff
path: root/compiler/rustc_middle/src/query
diff options
context:
space:
mode:
authorBen Kimock <kimockb@gmail.com>2023-07-10 21:39:28 -0400
committerBen Kimock <kimockb@gmail.com>2023-07-14 17:03:34 -0400
commit4e117a9b4ef8d07532b141b7cba02f815e1fc376 (patch)
tree3371baad40f778a98b78a0a4b2f290de93c8c579 /compiler/rustc_middle/src/query
parenta161ab00dbf660dd587ee42a8c855bac94047ddb (diff)
downloadrust-4e117a9b4ef8d07532b141b7cba02f815e1fc376.tar.gz
rust-4e117a9b4ef8d07532b141b7cba02f815e1fc376.zip
Use u64 for incr comp allocation offsets
Diffstat (limited to 'compiler/rustc_middle/src/query')
-rw-r--r--compiler/rustc_middle/src/query/on_disk_cache.rs6
1 files changed, 4 insertions, 2 deletions
diff --git a/compiler/rustc_middle/src/query/on_disk_cache.rs b/compiler/rustc_middle/src/query/on_disk_cache.rs
index 8751d3b7890..995b2140f61 100644
--- a/compiler/rustc_middle/src/query/on_disk_cache.rs
+++ b/compiler/rustc_middle/src/query/on_disk_cache.rs
@@ -104,7 +104,9 @@ struct Footer {
     query_result_index: EncodedDepNodeIndex,
     side_effects_index: EncodedDepNodeIndex,
     // The location of all allocations.
-    interpret_alloc_index: Vec<u32>,
+    // Most uses only need values up to u32::MAX, but benchmarking indicates that we can use a u64
+    // without measurable overhead. This permits larger const allocations without ICEing.
+    interpret_alloc_index: Vec<u64>,
     // See `OnDiskCache.syntax_contexts`
     syntax_contexts: FxHashMap<u32, AbsoluteBytePos>,
     // See `OnDiskCache.expn_data`
@@ -301,7 +303,7 @@ impl<'sess> OnDiskCache<'sess> {
                     interpret_alloc_index.reserve(new_n - n);
                     for idx in n..new_n {
                         let id = encoder.interpret_allocs[idx];
-                        let pos: u32 = encoder.position().try_into().unwrap();
+                        let pos: u64 = encoder.position().try_into().unwrap();
                         interpret_alloc_index.push(pos);
                         interpret::specialized_encode_alloc_id(&mut encoder, tcx, id);
                     }