about summary refs log tree commit diff
path: root/compiler/rustc_codegen_llvm/src/builder.rs
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2024-07-04 10:31:24 +0000
committerbors <bors@rust-lang.org>2024-07-04 10:31:24 +0000
commita3460e23ea42a83b48eb60d61586a8bb22e09290 (patch)
tree9765dec74a1e59a8c6628aa7a965039ff2685a01 /compiler/rustc_codegen_llvm/src/builder.rs
parent4a4a81aec43d87abc962cb288af104531086afe8 (diff)
parent02bec40930d7256d290c6a61b60df8284e460dda (diff)
downloadrust-a3460e23ea42a83b48eb60d61586a8bb22e09290.tar.gz
rust-a3460e23ea42a83b48eb60d61586a8bb22e09290.zip
Auto merge of #3732 - JoJoDeveloping:tree-borrows-protector-end-write, r=RalfJung
TB: Refine protector end semantics

Tree Borrows has protector end tag semantics, namely that protectors ending cause a [special implicit read](https://perso.crans.org/vanille/treebor/diff.0.html) on all locations protected by that protector that have actually been accessed. See also #3067.

While this is enough for ensuring protectors allow adding/reordering reads, it does not prove that one can reorder writes. For this, we need to make this stronger, by making this implicit read be a write in cases when there was a write to the location protected by that protector, i.e. if the permission is `Active`.

There is a test that shows why this behavior is necessary, see `tests/fail/tree_borrows/protector-write-lazy.rs`.
Diffstat (limited to 'compiler/rustc_codegen_llvm/src/builder.rs')
0 files changed, 0 insertions, 0 deletions