]> git.lizzy.rs Git - rust.git/commit - src/tools/miri
Auto merge of #97027 - cuviper:yesalias-refcell, r=thomcc
authorbors <bors@rust-lang.org>
Fri, 20 May 2022 01:05:53 +0000 (01:05 +0000)
committerbors <bors@rust-lang.org>
Fri, 20 May 2022 01:05:53 +0000 (01:05 +0000)
commit4d6992bc18e54522cced4f945f29f186992d5ea4
treeb792b7921a20c181db9ae50451a8093887ae5cba
parenta09d36deae2e25f2eb4a0ee5d95519042ebd66a2
parent1c3921fa43ecc6438a1f4d5365d2f99caad7b847
Auto merge of #97027 - cuviper:yesalias-refcell, r=thomcc

Use pointers in `cell::{Ref,RefMut}` to avoid `noalias`

When `Ref` and `RefMut` were based on references, they would get LLVM `noalias` attributes that were incorrect, because that alias guarantee is only true until the guard drops. A `&RefCell` on the same value can get a new borrow that aliases the previous guard, possibly leading to miscompilation. Using `NonNull` pointers in `Ref` and `RefCell` avoids `noalias`.

Fixes the library side of #63787, but we still might want to explore language solutions there.