File tree 1 file changed +6
-1
lines changed
1 file changed +6
-1
lines changed Original file line number Diff line number Diff line change @@ -1231,12 +1231,15 @@ the guarantee that these issues are never caused by safe code.
1231
1231
1232
1232
* Data races
1233
1233
* Dereferencing a null/dangling raw pointer
1234
- * Mutating an immutable value/reference without ` UnsafeCell `
1235
1234
* Reads of [ undef] ( http://llvm.org/docs/LangRef.html#undefined-values )
1236
1235
(uninitialized) memory
1237
1236
* Breaking the [ pointer aliasing
1238
1237
rules] ( http://llvm.org/docs/LangRef.html#pointer-aliasing-rules )
1239
1238
with raw pointers (a subset of the rules used by C)
1239
+ * ` &mut ` and ` & ` follow LLVM’s scoped [ noalias] model, except if the ` &T `
1240
+ contains an ` UnsafeCell<U> ` . Unsafe code must not violate these aliasing
1241
+ guarantees.
1242
+ * Mutating an immutable value/reference without ` UnsafeCell<U> `
1240
1243
* Invoking undefined behavior via compiler intrinsics:
1241
1244
* Indexing outside of the bounds of an object with ` std::ptr::offset `
1242
1245
(` offset ` intrinsic), with
@@ -1253,6 +1256,8 @@ the guarantee that these issues are never caused by safe code.
1253
1256
code. Rust's failure system is not compatible with exception handling in
1254
1257
other languages. Unwinding must be caught and handled at FFI boundaries.
1255
1258
1259
+ [ noalias ] : http://llvm.org/docs/LangRef.html#noalias
1260
+
1256
1261
##### Behaviour not considered unsafe
1257
1262
1258
1263
This is a list of behaviour not considered * unsafe* in Rust terms, but that may
You can’t perform that action at this time.
0 commit comments