@@ -48,11 +48,6 @@ impl<Tag> From<Scalar<Tag>> for Immediate<Tag> {
48
48
}
49
49
50
50
impl < ' tcx , Tag > Immediate < Tag > {
51
- #[ inline]
52
- pub fn from_scalar ( val : Scalar < Tag > ) -> Self {
53
- Immediate :: Scalar ( ScalarMaybeUndef :: Scalar ( val) )
54
- }
55
-
56
51
pub fn new_slice (
57
52
val : Scalar < Tag > ,
58
53
len : u64 ,
@@ -197,7 +192,7 @@ impl<'tcx, Tag: Copy> ImmTy<'tcx, Tag>
197
192
{
198
193
#[ inline]
199
194
pub fn from_scalar ( val : Scalar < Tag > , layout : TyLayout < ' tcx > ) -> Self {
200
- ImmTy { imm : Immediate :: from_scalar ( val) , layout }
195
+ ImmTy { imm : val. into ( ) , layout }
201
196
}
202
197
203
198
#[ inline]
@@ -255,7 +250,7 @@ impl<'mir, 'tcx, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> {
255
250
let ptr = match self . check_mplace_access ( mplace, None ) ? {
256
251
Some ( ptr) => ptr,
257
252
None => return Ok ( Some ( ImmTy { // zero-sized type
258
- imm : Immediate :: Scalar ( Scalar :: zst ( ) . into ( ) ) ,
253
+ imm : Scalar :: zst ( ) . into ( ) ,
259
254
layout : mplace. layout ,
260
255
} ) ) ,
261
256
} ;
@@ -266,7 +261,7 @@ impl<'mir, 'tcx, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> {
266
261
. get ( ptr. alloc_id ) ?
267
262
. read_scalar ( self , ptr, mplace. layout . size ) ?;
268
263
Ok ( Some ( ImmTy {
269
- imm : Immediate :: Scalar ( scalar) ,
264
+ imm : scalar. into ( ) ,
270
265
layout : mplace. layout ,
271
266
} ) )
272
267
}
@@ -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
} ;
@@ -567,7 +562,7 @@ impl<'mir, 'tcx, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> {
567
562
Operand :: Indirect ( MemPlace :: from_ptr ( ptr, align) )
568
563
} ,
569
564
ConstValue :: Scalar ( x) =>
570
- Operand :: Immediate ( Immediate :: Scalar ( tag_scalar ( x) . into ( ) ) ) ,
565
+ Operand :: Immediate ( tag_scalar ( x) . into ( ) ) ,
571
566
ConstValue :: Slice { data, start, end } => {
572
567
// We rely on mutability being set correctly in `data` to prevent writes
573
568
// where none should happen.
0 commit comments