diff options
| author | Ralf Jung <post@ralfj.de> | 2022-07-23 10:36:57 -0400 |
|---|---|---|
| committer | Ralf Jung <post@ralfj.de> | 2022-07-23 10:36:57 -0400 |
| commit | 4e89a7c29325964182e0fb9f92539cf2d9f18e82 (patch) | |
| tree | 202bc92b97923627f77ea39fbcddcb895620f957 /compiler/rustc_const_eval/src/const_eval | |
| parent | 665a7e8f5663d143b1c318b39a847daff1791ca0 (diff) | |
| download | rust-4e89a7c29325964182e0fb9f92539cf2d9f18e82.tar.gz rust-4e89a7c29325964182e0fb9f92539cf2d9f18e82.zip | |
now we can make scalar_to_ptr a method on Scalar
Diffstat (limited to 'compiler/rustc_const_eval/src/const_eval')
| -rw-r--r-- | compiler/rustc_const_eval/src/const_eval/eval_queries.rs | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/compiler/rustc_const_eval/src/const_eval/eval_queries.rs b/compiler/rustc_const_eval/src/const_eval/eval_queries.rs index f03ceb54830..ba8222dc152 100644 --- a/compiler/rustc_const_eval/src/const_eval/eval_queries.rs +++ b/compiler/rustc_const_eval/src/const_eval/eval_queries.rs @@ -173,18 +173,17 @@ pub(super) fn op_to_const<'tcx>( Immediate::ScalarPair(a, b) => { debug!("ScalarPair(a: {:?}, b: {:?})", a, b); // We know `offset` is relative to the allocation, so we can use `into_parts`. - let (data, start) = - match ecx.scalar_to_ptr(a.check_init().unwrap()).unwrap().into_parts() { - (Some(alloc_id), offset) => { - (ecx.tcx.global_alloc(alloc_id).unwrap_memory(), offset.bytes()) - } - (None, _offset) => ( - ecx.tcx.intern_const_alloc( - Allocation::from_bytes_byte_aligned_immutable(b"" as &[u8]), - ), - 0, - ), - }; + let (data, start) = match a.to_pointer(ecx).unwrap().into_parts() { + (Some(alloc_id), offset) => { + (ecx.tcx.global_alloc(alloc_id).unwrap_memory(), offset.bytes()) + } + (None, _offset) => ( + ecx.tcx.intern_const_alloc(Allocation::from_bytes_byte_aligned_immutable( + b"" as &[u8], + )), + 0, + ), + }; let len = b.to_machine_usize(ecx).unwrap(); let start = start.try_into().unwrap(); let len: usize = len.try_into().unwrap(); |
