@@ -879,7 +879,8 @@ pub enum Rvalue {
879879 ///
880880 /// **Needs clarification**: Are there weird additional semantics here related to the runtime
881881 /// nature of this operation?
882- //ThreadLocalRef(DefId),
882+ // ThreadLocalRef(DefId),
883+ ThreadLocalRef ( std:: convert:: Infallible ) ,
883884
884885 /// Creates a pointer with the indicated mutability to the place.
885886 ///
@@ -888,7 +889,8 @@ pub enum Rvalue {
888889 ///
889890 /// Like with references, the semantics of this operation are heavily dependent on the aliasing
890891 /// model.
891- //AddressOf(Mutability, Place),
892+ // AddressOf(Mutability, Place),
893+ AddressOf ( std:: convert:: Infallible ) ,
892894
893895 /// Yields the length of the place, as a `usize`.
894896 ///
@@ -906,19 +908,21 @@ pub enum Rvalue {
906908 Cast ( CastKind , Operand , Ty ) ,
907909
908910 // FIXME link to `pointer::offset` when it hits stable.
909- // // / * `Offset` has the same semantics as `pointer::offset`, except that the second
910- // // / parameter may be a `usize` as well.
911- // // / * The comparison operations accept `bool`s, `char`s, signed or unsigned integers, floats,
912- // // / raw pointers, or function pointers and return a `bool`. The types of the operands must be
913- // // / matching, up to the usual caveat of the lifetimes in function pointers.
914- // // / * Left and right shift operations accept signed or unsigned integers not necessarily of the
915- // // / same type and return a value of the same type as their LHS. Like in Rust, the RHS is
916- // // / truncated as needed.
917- // // / * The `Bit*` operations accept signed integers, unsigned integers, or bools with matching
918- // // / types and return a value of that type.
919- // // / * The remaining operations accept signed integers, unsigned integers, or floats with
920- // // / matching types and return a value of that type.
911+ /// * `Offset` has the same semantics as `pointer::offset`, except that the second
912+ /// parameter may be a `usize` as well.
913+ /// * The comparison operations accept `bool`s, `char`s, signed or unsigned integers, floats,
914+ /// raw pointers, or function pointers and return a `bool`. The types of the operands must be
915+ /// matching, up to the usual caveat of the lifetimes in function pointers.
916+ /// * Left and right shift operations accept signed or unsigned integers not necessarily of the
917+ /// same type and return a value of the same type as their LHS. Like in Rust, the RHS is
918+ /// truncated as needed.
919+ /// * The `Bit*` operations accept signed integers, unsigned integers, or bools with matching
920+ /// types and return a value of that type.
921+ /// * The remaining operations accept signed integers, unsigned integers, or floats with
922+ /// matching types and return a value of that type.
921923 //BinaryOp(BinOp, Box<(Operand, Operand)>),
924+ BinaryOp ( std:: convert:: Infallible ) ,
925+
922926 /// Same as `BinaryOp`, but yields `(T, bool)` with a `bool` indicating an error condition.
923927 ///
924928 /// When overflow checking is disabled and we are generating run-time code, the error condition
@@ -937,6 +941,7 @@ pub enum Rvalue {
937941
938942 /// Computes a value as described by the operation.
939943 //NullaryOp(NullOp, Ty),
944+ NullaryOp ( std:: convert:: Infallible ) ,
940945
941946 /// Exactly like `BinaryOp`, but less operands.
942947 ///
@@ -1095,6 +1100,10 @@ impl MirBody {
10951100 for_operand ( op, & mut f, & mut self . projection_store ) ;
10961101 }
10971102 }
1103+ Rvalue :: ThreadLocalRef ( n)
1104+ | Rvalue :: AddressOf ( n)
1105+ | Rvalue :: BinaryOp ( n)
1106+ | Rvalue :: NullaryOp ( n) => match * n { } ,
10981107 }
10991108 }
11001109 StatementKind :: FakeRead ( p) | StatementKind :: Deinit ( p) => {
0 commit comments