|
211 | 211 | //!
|
212 | 212 | //! #### Statements
|
213 | 213 | //! - Assign statements work via normal Rust assignment.
|
214 |
| -//! - [`Retag`] statements have an associated function. |
| 214 | +//! - [`Retag`], [`StorageLive`], [`StorageDead`], [`Deinit`] statements have an associated function. |
215 | 215 | //!
|
216 | 216 | //! #### Rvalues
|
217 | 217 | //!
|
218 | 218 | //! - Operands implicitly convert to `Use` rvalues.
|
219 | 219 | //! - `&`, `&mut`, `addr_of!`, and `addr_of_mut!` all work to create their associated rvalue.
|
220 |
| -//! - [`Discriminant`] has an associated function. |
| 220 | +//! - [`Discriminant`] and [`Len`] have associated functions. |
| 221 | +//! - Unary and binary operations use their normal Rust syntax - `a * b`, `!c`, etc. |
| 222 | +//! - Checked binary operations are represented by wrapping the associated binop in [`Checked`]. |
| 223 | +//! - Array repetition syntax (`[foo; 10]`) creates the associated rvalue. |
221 | 224 | //!
|
222 | 225 | //! #### Terminators
|
223 | 226 | //!
|
@@ -261,6 +264,9 @@ define!("mir_drop_and_replace", fn DropAndReplace<T>(place: T, value: T, goto: B
|
261 | 264 | define!("mir_call", fn Call<T>(place: T, goto: BasicBlock, call: T));
|
262 | 265 | define!("mir_storage_live", fn StorageLive<T>(local: T));
|
263 | 266 | define!("mir_storage_dead", fn StorageDead<T>(local: T));
|
| 267 | +define!("mir_deinit", fn Deinit<T>(place: T)); |
| 268 | +define!("mir_checked", fn Checked<T>(binop: T) -> (T, bool)); |
| 269 | +define!("mir_len", fn Len<T>(place: T) -> usize); |
264 | 270 | define!("mir_retag", fn Retag<T>(place: T));
|
265 | 271 | define!("mir_move", fn Move<T>(place: T) -> T);
|
266 | 272 | define!("mir_static", fn Static<T>(s: T) -> &'static T);
|
|
0 commit comments