Shrink the size of Rvalue by 16 bytes
This commit is contained in:
parent
f31481368b
commit
9a2362e5a9
29 changed files with 83 additions and 67 deletions
|
@ -2076,8 +2076,8 @@ pub enum Rvalue<'tcx> {
|
|||
|
||||
Cast(CastKind, Operand<'tcx>, Ty<'tcx>),
|
||||
|
||||
BinaryOp(BinOp, Operand<'tcx>, Operand<'tcx>),
|
||||
CheckedBinaryOp(BinOp, Operand<'tcx>, Operand<'tcx>),
|
||||
BinaryOp(BinOp, Box<(Operand<'tcx>, Operand<'tcx>)>),
|
||||
CheckedBinaryOp(BinOp, Box<(Operand<'tcx>, Operand<'tcx>)>),
|
||||
|
||||
NullaryOp(NullOp, Ty<'tcx>),
|
||||
UnaryOp(UnOp, Operand<'tcx>),
|
||||
|
@ -2097,7 +2097,7 @@ pub enum Rvalue<'tcx> {
|
|||
}
|
||||
|
||||
#[cfg(target_arch = "x86_64")]
|
||||
static_assert_size!(Rvalue<'_>, 56);
|
||||
static_assert_size!(Rvalue<'_>, 40);
|
||||
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq, TyEncodable, TyDecodable, Hash, HashStable)]
|
||||
pub enum CastKind {
|
||||
|
@ -2201,8 +2201,8 @@ impl<'tcx> Debug for Rvalue<'tcx> {
|
|||
Cast(ref kind, ref place, ref ty) => {
|
||||
write!(fmt, "{:?} as {:?} ({:?})", place, ty, kind)
|
||||
}
|
||||
BinaryOp(ref op, ref a, ref b) => write!(fmt, "{:?}({:?}, {:?})", op, a, b),
|
||||
CheckedBinaryOp(ref op, ref a, ref b) => {
|
||||
BinaryOp(ref op, box (ref a, ref b)) => write!(fmt, "{:?}({:?}, {:?})", op, a, b),
|
||||
CheckedBinaryOp(ref op, box (ref a, ref b)) => {
|
||||
write!(fmt, "Checked{:?}({:?}, {:?})", op, a, b)
|
||||
}
|
||||
UnaryOp(ref op, ref a) => write!(fmt, "{:?}({:?})", op, a),
|
||||
|
|
|
@ -182,12 +182,12 @@ impl<'tcx> Rvalue<'tcx> {
|
|||
}
|
||||
Rvalue::Len(..) => tcx.types.usize,
|
||||
Rvalue::Cast(.., ty) => ty,
|
||||
Rvalue::BinaryOp(op, ref lhs, ref rhs) => {
|
||||
Rvalue::BinaryOp(op, box (ref lhs, ref rhs)) => {
|
||||
let lhs_ty = lhs.ty(local_decls, tcx);
|
||||
let rhs_ty = rhs.ty(local_decls, tcx);
|
||||
op.ty(tcx, lhs_ty, rhs_ty)
|
||||
}
|
||||
Rvalue::CheckedBinaryOp(op, ref lhs, ref rhs) => {
|
||||
Rvalue::CheckedBinaryOp(op, box (ref lhs, ref rhs)) => {
|
||||
let lhs_ty = lhs.ty(local_decls, tcx);
|
||||
let rhs_ty = rhs.ty(local_decls, tcx);
|
||||
let ty = op.ty(tcx, lhs_ty, rhs_ty);
|
||||
|
|
|
@ -181,9 +181,11 @@ impl<'tcx> TypeFoldable<'tcx> for Rvalue<'tcx> {
|
|||
AddressOf(mutability, place) => AddressOf(mutability, place.fold_with(folder)),
|
||||
Len(place) => Len(place.fold_with(folder)),
|
||||
Cast(kind, op, ty) => Cast(kind, op.fold_with(folder), ty.fold_with(folder)),
|
||||
BinaryOp(op, rhs, lhs) => BinaryOp(op, rhs.fold_with(folder), lhs.fold_with(folder)),
|
||||
CheckedBinaryOp(op, rhs, lhs) => {
|
||||
CheckedBinaryOp(op, rhs.fold_with(folder), lhs.fold_with(folder))
|
||||
BinaryOp(op, box (rhs, lhs)) => {
|
||||
BinaryOp(op, box (rhs.fold_with(folder), lhs.fold_with(folder)))
|
||||
}
|
||||
CheckedBinaryOp(op, box (rhs, lhs)) => {
|
||||
CheckedBinaryOp(op, box (rhs.fold_with(folder), lhs.fold_with(folder)))
|
||||
}
|
||||
UnaryOp(op, val) => UnaryOp(op, val.fold_with(folder)),
|
||||
Discriminant(place) => Discriminant(place.fold_with(folder)),
|
||||
|
@ -227,7 +229,7 @@ impl<'tcx> TypeFoldable<'tcx> for Rvalue<'tcx> {
|
|||
op.visit_with(visitor)?;
|
||||
ty.visit_with(visitor)
|
||||
}
|
||||
BinaryOp(_, ref rhs, ref lhs) | CheckedBinaryOp(_, ref rhs, ref lhs) => {
|
||||
BinaryOp(_, box (ref rhs, ref lhs)) | CheckedBinaryOp(_, box (ref rhs, ref lhs)) => {
|
||||
rhs.visit_with(visitor)?;
|
||||
lhs.visit_with(visitor)
|
||||
}
|
||||
|
|
|
@ -685,8 +685,8 @@ macro_rules! make_mir_visitor {
|
|||
self.visit_ty(ty, TyContext::Location(location));
|
||||
}
|
||||
|
||||
Rvalue::BinaryOp(_bin_op, lhs, rhs)
|
||||
| Rvalue::CheckedBinaryOp(_bin_op, lhs, rhs) => {
|
||||
Rvalue::BinaryOp(_bin_op, box(lhs, rhs))
|
||||
| Rvalue::CheckedBinaryOp(_bin_op, box(lhs, rhs)) => {
|
||||
self.visit_operand(lhs, location);
|
||||
self.visit_operand(rhs, location);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue