@@ -47,11 +47,6 @@ impl<Tag> From<Scalar<Tag>> for Immediate<Tag> {
47
47
}
48
48
49
49
impl < ' tcx , Tag > Immediate < Tag > {
50
- #[ inline]
51
- pub fn from_scalar ( val : Scalar < Tag > ) -> Self {
52
- Immediate :: Scalar ( ScalarMaybeUndef :: Scalar ( val) )
53
- }
54
-
55
50
pub fn new_slice (
56
51
val : Scalar < Tag > ,
57
52
len : u64 ,
@@ -196,7 +191,7 @@ impl<'tcx, Tag: Copy> ImmTy<'tcx, Tag>
196
191
{
197
192
#[ inline]
198
193
pub fn from_scalar ( val : Scalar < Tag > , layout : TyLayout < ' tcx > ) -> Self {
199
- ImmTy { imm : Immediate :: from_scalar ( val) , layout }
194
+ ImmTy { imm : val. into ( ) , layout }
200
195
}
201
196
202
197
#[ inline]
@@ -254,7 +249,7 @@ impl<'mir, 'tcx, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> {
254
249
let ptr = match self . check_mplace_access ( mplace, None ) ? {
255
250
Some ( ptr) => ptr,
256
251
None => return Ok ( Some ( ImmTy { // zero-sized type
257
- imm : Immediate :: Scalar ( Scalar :: zst ( ) . into ( ) ) ,
252
+ imm : Scalar :: zst ( ) . into ( ) ,
258
253
layout : mplace. layout ,
259
254
} ) ) ,
260
255
} ;
@@ -265,7 +260,7 @@ impl<'mir, 'tcx, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> {
265
260
. get ( ptr. alloc_id ) ?
266
261
. read_scalar ( self , ptr, mplace. layout . size ) ?;
267
262
Ok ( Some ( ImmTy {
268
- imm : Immediate :: Scalar ( scalar) ,
263
+ imm : scalar. into ( ) ,
269
264
layout : mplace. layout ,
270
265
} ) )
271
266
}
@@ -368,7 +363,7 @@ impl<'mir, 'tcx, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> {
368
363
let field = field. try_into ( ) . unwrap ( ) ;
369
364
let field_layout = op. layout . field ( self , field) ?;
370
365
if field_layout. is_zst ( ) {
371
- let immediate = Immediate :: Scalar ( Scalar :: zst ( ) . into ( ) ) ;
366
+ let immediate = Scalar :: zst ( ) . into ( ) ;
372
367
return Ok ( OpTy { op : Operand :: Immediate ( immediate) , layout : field_layout } ) ;
373
368
}
374
369
let offset = op. layout . fields . offset ( field) ;
@@ -378,7 +373,7 @@ impl<'mir, 'tcx, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> {
378
373
// extract fields from types with `ScalarPair` ABI
379
374
Immediate :: ScalarPair ( a, b) => {
380
375
let val = if offset. bytes ( ) == 0 { a } else { b } ;
381
- Immediate :: Scalar ( val)
376
+ Immediate :: from ( val)
382
377
} ,
383
378
Immediate :: Scalar ( val) =>
384
379
bug ! ( "field access on non aggregate {:#?}, {:#?}" , val, op. layout) ,
@@ -415,7 +410,7 @@ impl<'mir, 'tcx, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> {
415
410
Deref => self . deref_operand ( base) ?. into ( ) ,
416
411
Subslice { .. } | ConstantIndex { .. } | Index ( _) => if base. layout . is_zst ( ) {
417
412
OpTy {
418
- op : Operand :: Immediate ( Immediate :: Scalar ( Scalar :: zst ( ) . into ( ) ) ) ,
413
+ op : Operand :: Immediate ( Scalar :: zst ( ) . into ( ) ) ,
419
414
// the actual index doesn't matter, so we just pick a convenient one like 0
420
415
layout : base. layout . field ( self , 0 ) ?,
421
416
}
@@ -439,7 +434,7 @@ impl<'mir, 'tcx, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> {
439
434
let layout = self . layout_of_local ( frame, local, layout) ?;
440
435
let op = if layout. is_zst ( ) {
441
436
// Do not read from ZST, they might not be initialized
442
- Operand :: Immediate ( Immediate :: Scalar ( Scalar :: zst ( ) . into ( ) ) )
437
+ Operand :: Immediate ( Scalar :: zst ( ) . into ( ) )
443
438
} else {
444
439
frame. locals [ local] . access ( ) ?
445
440
} ;
@@ -570,7 +565,7 @@ impl<'mir, 'tcx, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> {
570
565
Operand :: Indirect ( MemPlace :: from_ptr ( ptr, align) )
571
566
} ,
572
567
ConstValue :: Scalar ( x) =>
573
- Operand :: Immediate ( Immediate :: Scalar ( tag_scalar ( x) . into ( ) ) ) ,
568
+ Operand :: Immediate ( tag_scalar ( x) . into ( ) ) ,
574
569
ConstValue :: Slice { data, start, end } => {
575
570
// We rely on mutability being set correctly in `data` to prevent writes
576
571
// where none should happen.
0 commit comments