about summary refs log tree commit diff
path: root/compiler/rustc_codegen_llvm/src/llvm/mod.rs
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2022-10-29 16:12:23 +0000
committerbors <bors@rust-lang.org>2022-10-29 16:12:23 +0000
commitc162fd36d250f1a76e00ffa55b9d827d0db7e0bc (patch)
treefe3478b4a2f6d4698860242bce914c5b9c67065b /compiler/rustc_codegen_llvm/src/llvm/mod.rs
parent79a48ce71686a5a82cb000062915157170e16d61 (diff)
parent1470e9924460b299ce597ef9001e5e3f7549a8b8 (diff)
downloadrust-c162fd36d250f1a76e00ffa55b9d827d0db7e0bc.tar.gz
rust-c162fd36d250f1a76e00ffa55b9d827d0db7e0bc.zip
Auto merge of #2636 - RalfJung:scalar-field-retag, r=oli-obk
Stacked Borrows: make scalar field retagging the default

I think it is time to finally close this soundness gap. Any objections? :)

Unfortunately the latest released versions of hashbrown and scopeguard can fail under full field retagging. The fixes have landed in the git repos but have not been released yet. I don't know if scalar field retagging as enabled by this PR is sufficient to cause problems with these crates, but it seems likely that this would be the case -- e.g. if both `value` and `dropfn` are scalars, the entire scopeguard struct will be a `ScalarPair` and thus get field retagging.

However, given that we actually generate LLVM `noalias` for these cases, it seems prudent to inform users of this risk. They can easily set `-Zmiri-field-retag=none` to opt-out of this change.

Cc https://github.com/rust-lang/miri/issues/2528
Diffstat (limited to 'compiler/rustc_codegen_llvm/src/llvm/mod.rs')
0 files changed, 0 insertions, 0 deletions