From 822a181c8783bdfd365e14ab3bd9d2ab22ed7ee2 Mon Sep 17 00:00:00 2001 From: bjorn3 Date: Wed, 8 Aug 2018 12:44:41 +0200 Subject: [PATCH] Implement NullOp::SizeOf --- src/base.rs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/base.rs b/src/base.rs index ad37f5856773..b232d6948f87 100644 --- a/src/base.rs +++ b/src/base.rs @@ -421,7 +421,12 @@ fn trans_stmt<'a, 'tcx: 'a>( } Rvalue::Len(lval) => return Err(format!("rval len {:?}", lval)), Rvalue::NullaryOp(NullOp::Box, ty) => unimplemented!("rval box {:?}", ty), - Rvalue::NullaryOp(NullOp::SizeOf, ty) => unimplemented!("rval size_of {:?}", ty), + Rvalue::NullaryOp(NullOp::SizeOf, ty) => { + assert!(lval.layout().ty.is_sized(fx.tcx.at(DUMMY_SP), ParamEnv::reveal_all())); + let ty_size = fx.layout_of(ty).size.bytes(); + let val = CValue::const_val(fx, fx.tcx.types.usize, ty_size as i64); + lval.write_cvalue(fx, val); + }, Rvalue::Aggregate(_, _) => bug!("shouldn't exist at trans {:?}", rval), } }