Initial UnsafePinned
/UnsafeUnpin
impl [Part 1: Libs]
This commit is contained in:
parent
ae06b79dcb
commit
21b7360a9a
11 changed files with 290 additions and 8 deletions
|
@ -514,6 +514,9 @@ fn layout_of_uncached<'tcx>(
|
|||
return map_layout(cx.calc.layout_of_union(&def.repr(), &variants));
|
||||
}
|
||||
|
||||
// UnsafeCell and UnsafePinned both disable niche optimizations
|
||||
let is_special_no_niche = def.is_unsafe_cell() || def.is_unsafe_pinned();
|
||||
|
||||
let get_discriminant_type =
|
||||
|min, max| abi::Integer::repr_discr(tcx, ty, &def.repr(), min, max);
|
||||
|
||||
|
@ -542,7 +545,7 @@ fn layout_of_uncached<'tcx>(
|
|||
&def.repr(),
|
||||
&variants,
|
||||
def.is_enum(),
|
||||
def.is_unsafe_cell(),
|
||||
is_special_no_niche,
|
||||
tcx.layout_scalar_valid_range(def.did()),
|
||||
get_discriminant_type,
|
||||
discriminants_iter(),
|
||||
|
@ -568,7 +571,7 @@ fn layout_of_uncached<'tcx>(
|
|||
&def.repr(),
|
||||
&variants,
|
||||
def.is_enum(),
|
||||
def.is_unsafe_cell(),
|
||||
is_special_no_niche,
|
||||
tcx.layout_scalar_valid_range(def.did()),
|
||||
get_discriminant_type,
|
||||
discriminants_iter(),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue