1
Fork 0

do not mark interior mutable shared refs as dereferenceable

This commit is contained in:
Ralf Jung 2022-06-20 20:51:15 -07:00
parent 307e80c1a6
commit 5b7197af7f
3 changed files with 36 additions and 9 deletions

View file

@ -1352,13 +1352,17 @@ pub enum PointerKind {
/// Most general case, we know no restrictions to tell LLVM.
SharedMutable,
/// `&T` where `T` contains no `UnsafeCell`, is `noalias` and `readonly`.
/// `&T` where `T` contains no `UnsafeCell`, is `dereferenceable`, `noalias` and `readonly`.
Frozen,
/// `&mut T` which is `noalias` but not `readonly`.
/// `&mut T` which is `dereferenceable` and `noalias` but not `readonly`.
UniqueBorrowed,
/// `Box<T>`, unlike `UniqueBorrowed`, it also has `noalias` on returns.
/// `&mut !Unpin`, which is `dereferenceable` but neither `noalias` nor `readonly`.
UniqueBorrowedPinned,
/// `Box<T>`, which is `noalias` (even on return types, unlike the above) but neither `readonly`
/// nor `dereferenceable`.
UniqueOwned,
}