@@ -879,7 +879,8 @@ pub enum Rvalue {
879
879
///
880
880
/// **Needs clarification**: Are there weird additional semantics here related to the runtime
881
881
/// nature of this operation?
882
- //ThreadLocalRef(DefId),
882
+ // ThreadLocalRef(DefId),
883
+ ThreadLocalRef ( std:: convert:: Infallible ) ,
883
884
884
885
/// Creates a pointer with the indicated mutability to the place.
885
886
///
@@ -888,7 +889,8 @@ pub enum Rvalue {
888
889
///
889
890
/// Like with references, the semantics of this operation are heavily dependent on the aliasing
890
891
/// model.
891
- //AddressOf(Mutability, Place),
892
+ // AddressOf(Mutability, Place),
893
+ AddressOf ( std:: convert:: Infallible ) ,
892
894
893
895
/// Yields the length of the place, as a `usize`.
894
896
///
@@ -906,19 +908,21 @@ pub enum Rvalue {
906
908
Cast ( CastKind , Operand , Ty ) ,
907
909
908
910
// 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.
921
923
//BinaryOp(BinOp, Box<(Operand, Operand)>),
924
+ BinaryOp ( std:: convert:: Infallible ) ,
925
+
922
926
/// Same as `BinaryOp`, but yields `(T, bool)` with a `bool` indicating an error condition.
923
927
///
924
928
/// When overflow checking is disabled and we are generating run-time code, the error condition
@@ -937,6 +941,7 @@ pub enum Rvalue {
937
941
938
942
/// Computes a value as described by the operation.
939
943
//NullaryOp(NullOp, Ty),
944
+ NullaryOp ( std:: convert:: Infallible ) ,
940
945
941
946
/// Exactly like `BinaryOp`, but less operands.
942
947
///
@@ -1095,6 +1100,10 @@ impl MirBody {
1095
1100
for_operand ( op, & mut f, & mut self . projection_store ) ;
1096
1101
}
1097
1102
}
1103
+ Rvalue :: ThreadLocalRef ( n)
1104
+ | Rvalue :: AddressOf ( n)
1105
+ | Rvalue :: BinaryOp ( n)
1106
+ | Rvalue :: NullaryOp ( n) => match * n { } ,
1098
1107
}
1099
1108
}
1100
1109
StatementKind :: FakeRead ( p) | StatementKind :: Deinit ( p) => {
0 commit comments