@@ -416,16 +416,9 @@ impl<'body, 'tcx> VnState<'body, 'tcx> {
416
416
} ;
417
417
let ptr_imm = Immediate :: new_pointer_with_meta ( data, meta, & self . ecx ) ;
418
418
ImmTy :: from_immediate ( ptr_imm, ty) . into ( )
419
- } else if matches ! ( kind, AggregateTy :: Array ) {
420
- let dest = self . ecx . allocate ( ty, MemoryKind :: Stack ) . ok ( ) ?;
421
- // FIXME: Can we speed it up by using `ecx.write_immediate(.ScalarPair(_), dest)`?
422
- for ( field_index, op) in fields. iter ( ) . copied ( ) . enumerate ( ) {
423
- let field_dest = self . ecx . project_field ( & dest, field_index) . ok ( ) ?;
424
- self . ecx . copy_op ( op, & field_dest) . ok ( ) ?;
425
- }
426
- let dest = dest. map_provenance ( |prov| prov. as_immutable ( ) ) ;
427
- dest. into ( )
428
- } else if matches ! ( ty. abi, Abi :: Scalar ( ..) | Abi :: ScalarPair ( ..) ) {
419
+ } else if matches ! ( kind, AggregateTy :: Array )
420
+ || matches ! ( ty. abi, Abi :: Scalar ( ..) | Abi :: ScalarPair ( ..) )
421
+ {
429
422
let dest = self . ecx . allocate ( ty, MemoryKind :: Stack ) . ok ( ) ?;
430
423
let variant_dest = if let Some ( variant) = variant {
431
424
self . ecx . project_downcast ( & dest, variant) . ok ( ) ?
@@ -437,9 +430,7 @@ impl<'body, 'tcx> VnState<'body, 'tcx> {
437
430
self . ecx . copy_op ( op, & field_dest) . ok ( ) ?;
438
431
}
439
432
self . ecx . write_discriminant ( variant. unwrap_or ( FIRST_VARIANT ) , & dest) . ok ( ) ?;
440
- self . ecx
441
- . alloc_mark_immutable ( dest. ptr ( ) . provenance . unwrap ( ) . alloc_id ( ) )
442
- . ok ( ) ?;
433
+ let dest = dest. map_provenance ( |prov| prov. as_immutable ( ) ) ;
443
434
dest. into ( )
444
435
} else {
445
436
return None ;
0 commit comments