240 };
241
242▶ // Intern the base allocation, and initialize todo list for recursive interning.
243 let base_alloc_id = ret.ptr().provenance.unwrap().alloc_id();
244 trace!(?base_alloc_id, ?base_mutability);
· · ·
246 // This gives us the initial set of nested allocations, which will then all be processed
247 // recursively in the loop below.
248▶ let mut todo: Vec<_> = if is_static {
249 assert!(disambiguator.is_some());
250 // Do not steal the root allocation, we need it later to create the return value of `eval_static_initializer`.
· · ·
272 // interning has better coverage since it "sees" *all* pointers, including raw pointers and
273 // references stored in unions.
274▶ while let Some(prov) = todo.pop() {
275 trace!(?prov);
276 let alloc_id = prov.alloc_id();
· · ·
338 just_interned.insert(alloc_id);
339 let next = intern_shallow(ecx, alloc_id, inner_mutability, disambiguator.as_deref_mut())?;
340▶ todo.extend(next);
341 }
342 if found_bad_mutable_ptr {