From 730098bc8d30a51351e318a3620cb63060449a16 Mon Sep 17 00:00:00 2001 From: Ralf Jung Date: Thu, 16 Aug 2018 09:36:53 +0200 Subject: [PATCH] avoid allocating for ZST --- src/librustc_mir/interpret/operand.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/librustc_mir/interpret/operand.rs b/src/librustc_mir/interpret/operand.rs index 6f57cbfd1a8..217d2e11d29 100644 --- a/src/librustc_mir/interpret/operand.rs +++ b/src/librustc_mir/interpret/operand.rs @@ -261,9 +261,12 @@ pub fn read_scalar(&self, op : OpTy<'tcx>) -> EvalResult<'tcx, ScalarMaybeUndef> } pub fn uninit_operand(&mut self, layout: TyLayout<'tcx>) -> EvalResult<'tcx, Operand> { - // FIXME: Aren't we supposed to also be immediate for a ZST? // This decides which types we will use the Immediate optimization for, and hence should // match what `try_read_value` and `eval_place_to_op` support. + if layout.is_zst() { + return Ok(Operand::Immediate(Value::Scalar(ScalarMaybeUndef::Undef))); + } + Ok(match layout.abi { layout::Abi::Scalar(..) => Operand::Immediate(Value::Scalar(ScalarMaybeUndef::Undef)), -- GitLab