@@ -14,6 +14,7 @@ use hir_def::{
14
14
} ;
15
15
use la_arena:: { Idx , RawIdx } ;
16
16
use rustc_abi:: AddressSpace ;
17
+ use rustc_hashes:: Hash64 ;
17
18
use rustc_index:: { IndexSlice , IndexVec } ;
18
19
19
20
use triomphe:: Arc ;
@@ -178,7 +179,7 @@ fn layout_of_simd_ty(
178
179
. size
179
180
. checked_mul ( e_len, dl)
180
181
. ok_or ( LayoutError :: BadCalc ( LayoutCalculatorError :: SizeOverflow ) ) ?;
181
- let align = dl. vector_align ( size) ;
182
+ let align = dl. llvmlike_vector_align ( size) ;
182
183
let size = size. align_to ( align. abi ) ;
183
184
184
185
// Compute the placement of the vector fields:
@@ -193,11 +194,12 @@ fn layout_of_simd_ty(
193
194
fields,
194
195
backend_repr : BackendRepr :: Vector { element : e_abi, count : e_len } ,
195
196
largest_niche : e_ly. largest_niche ,
197
+ uninhabited : false ,
196
198
size,
197
199
align,
198
200
max_repr_align : None ,
199
201
unadjusted_abi_align : align. abi ,
200
- randomization_seed : 0 ,
202
+ randomization_seed : Hash64 :: ZERO ,
201
203
} ) )
202
204
}
203
205
@@ -296,25 +298,22 @@ pub fn layout_of_ty_query(
296
298
. checked_mul ( count, dl)
297
299
. ok_or ( LayoutError :: BadCalc ( LayoutCalculatorError :: SizeOverflow ) ) ?;
298
300
299
- let backend_repr =
300
- if count != 0 && matches ! ( element. backend_repr, BackendRepr :: Uninhabited ) {
301
- BackendRepr :: Uninhabited
302
- } else {
303
- BackendRepr :: Memory { sized : true }
304
- } ;
301
+ let backend_repr = BackendRepr :: Memory { sized : true } ;
305
302
306
303
let largest_niche = if count != 0 { element. largest_niche } else { None } ;
304
+ let uninhabited = if count != 0 { element. uninhabited } else { false } ;
307
305
308
306
Layout {
309
307
variants : Variants :: Single { index : struct_variant_idx ( ) } ,
310
308
fields : FieldsShape :: Array { stride : element. size , count } ,
311
309
backend_repr,
312
310
largest_niche,
311
+ uninhabited,
313
312
align : element. align ,
314
313
size,
315
314
max_repr_align : None ,
316
315
unadjusted_abi_align : element. align . abi ,
317
- randomization_seed : 0 ,
316
+ randomization_seed : Hash64 :: ZERO ,
318
317
}
319
318
}
320
319
TyKind :: Slice ( element) => {
@@ -324,23 +323,25 @@ pub fn layout_of_ty_query(
324
323
fields : FieldsShape :: Array { stride : element. size , count : 0 } ,
325
324
backend_repr : BackendRepr :: Memory { sized : false } ,
326
325
largest_niche : None ,
326
+ uninhabited : false ,
327
327
align : element. align ,
328
328
size : Size :: ZERO ,
329
329
max_repr_align : None ,
330
330
unadjusted_abi_align : element. align . abi ,
331
- randomization_seed : 0 ,
331
+ randomization_seed : Hash64 :: ZERO ,
332
332
}
333
333
}
334
334
TyKind :: Str => Layout {
335
335
variants : Variants :: Single { index : struct_variant_idx ( ) } ,
336
336
fields : FieldsShape :: Array { stride : Size :: from_bytes ( 1 ) , count : 0 } ,
337
337
backend_repr : BackendRepr :: Memory { sized : false } ,
338
338
largest_niche : None ,
339
+ uninhabited : false ,
339
340
align : dl. i8_align ,
340
341
size : Size :: ZERO ,
341
342
max_repr_align : None ,
342
343
unadjusted_abi_align : dl. i8_align . abi ,
343
- randomization_seed : 0 ,
344
+ randomization_seed : Hash64 :: ZERO ,
344
345
} ,
345
346
// Potentially-wide pointers.
346
347
TyKind :: Ref ( _, _, pointee) | TyKind :: Raw ( _, pointee) => {
0 commit comments