@@ -5,7 +5,7 @@ use std::collections::{hash_map::Entry, HashMap};
55use rand:: Rng ;
66
77use rustc:: ty:: layout:: HasDataLayout ;
8- use rustc_mir:: interpret:: { AllocCheck , AllocId , InterpResult , Memory , Pointer , PointerArithmetic } ;
8+ use rustc_mir:: interpret:: { AllocCheck , AllocId , InterpResult , Memory , Machine , Pointer , PointerArithmetic } ;
99use rustc_target:: abi:: Size ;
1010
1111use crate :: { Evaluator , Tag , STACK_ADDR } ;
@@ -80,12 +80,13 @@ impl<'mir, 'tcx> GlobalState {
8080 ) -> InterpResult < ' tcx , u64 > {
8181 let mut global_state = memory. extra . intptrcast . borrow_mut ( ) ;
8282 let global_state = & mut * global_state;
83+ let id = Evaluator :: canonical_alloc_id ( memory, ptr. alloc_id ) ;
8384
8485 // There is nothing wrong with a raw pointer being cast to an integer only after
8586 // it became dangling. Hence `MaybeDead`.
86- let ( size, align) = memory. get_size_and_align ( ptr . alloc_id , AllocCheck :: MaybeDead ) ?;
87+ let ( size, align) = memory. get_size_and_align ( id , AllocCheck :: MaybeDead ) ?;
8788
88- let base_addr = match global_state. base_addr . entry ( ptr . alloc_id ) {
89+ let base_addr = match global_state. base_addr . entry ( id ) {
8990 Entry :: Occupied ( entry) => * entry. get ( ) ,
9091 Entry :: Vacant ( entry) => {
9192 // This allocation does not have a base address yet, pick one.
@@ -102,7 +103,7 @@ impl<'mir, 'tcx> GlobalState {
102103 trace ! (
103104 "Assigning base address {:#x} to allocation {:?} (slack: {}, align: {})" ,
104105 base_addr,
105- ptr . alloc_id ,
106+ id ,
106107 slack,
107108 align. bytes( ) ,
108109 ) ;
@@ -112,7 +113,7 @@ impl<'mir, 'tcx> GlobalState {
112113 global_state. next_base_addr = base_addr. checked_add ( max ( size. bytes ( ) , 1 ) ) . unwrap ( ) ;
113114 // Given that `next_base_addr` increases in each allocation, pushing the
114115 // corresponding tuple keeps `int_to_ptr_map` sorted
115- global_state. int_to_ptr_map . push ( ( base_addr, ptr . alloc_id ) ) ;
116+ global_state. int_to_ptr_map . push ( ( base_addr, id ) ) ;
116117
117118 base_addr
118119 }
0 commit comments