From ecc4cc2fc4079dba2141a79d4b9a636cbf5c9bf5 Mon Sep 17 00:00:00 2001 From: Wesley Wiser Date: Thu, 5 Sep 2019 21:42:30 -0400 Subject: [PATCH] [const-prop] Replace `Cast` handling with use of `InterpCx` --- src/librustc_mir/transform/const_prop.rs | 13 +++---------- src/test/mir-opt/const_prop/reify_fn_ptr.rs | 2 +- 2 files changed, 4 insertions(+), 11 deletions(-) diff --git a/src/librustc_mir/transform/const_prop.rs b/src/librustc_mir/transform/const_prop.rs index d92eb4706bb..e1a2d169319 100644 --- a/src/librustc_mir/transform/const_prop.rs +++ b/src/librustc_mir/transform/const_prop.rs @@ -24,7 +24,7 @@ use crate::interpret::{ self, InterpCx, ScalarMaybeUndef, Immediate, OpTy, - ImmTy, MemoryKind, StackPopCleanup, LocalValue, LocalState, + ImmTy, StackPopCleanup, LocalValue, LocalState, }; use crate::const_eval::{ CompileTimeInterpreter, error_to_const_error, mk_eval_cx, @@ -305,7 +305,8 @@ fn const_prop( let span = source_info.span; match *rvalue { Rvalue::Use(_) | - Rvalue::Len(_) => { + Rvalue::Len(_) | + Rvalue::Cast(..) => { self.use_ecx(source_info, |this| { this.ecx.eval_rvalue_into_place(rvalue, place)?; this.ecx.eval_place_to_op(place, Some(place_layout)) @@ -321,14 +322,6 @@ fn const_prop( Rvalue::NullaryOp(NullOp::Box, _) | Rvalue::Discriminant(..) => None, - Rvalue::Cast(kind, ref operand, _) => { - let op = self.eval_operand(operand, source_info)?; - self.use_ecx(source_info, |this| { - let dest = this.ecx.allocate(place_layout, MemoryKind::Stack); - this.ecx.cast(op, kind, dest.into())?; - Ok(dest.into()) - }) - }, Rvalue::NullaryOp(NullOp::SizeOf, ty) => { type_size_of(self.tcx, self.param_env, ty).and_then(|n| Some( ImmTy::from_uint( diff --git a/src/test/mir-opt/const_prop/reify_fn_ptr.rs b/src/test/mir-opt/const_prop/reify_fn_ptr.rs index 7e36b2a6b1b..e9b61690cf8 100644 --- a/src/test/mir-opt/const_prop/reify_fn_ptr.rs +++ b/src/test/mir-opt/const_prop/reify_fn_ptr.rs @@ -16,7 +16,7 @@ fn main() { // START rustc.main.ConstProp.after.mir // bb0: { // ... -// _3 = const Scalar(AllocId(1).0x0) : fn(); +// _3 = const Scalar(AllocId(0).0x0) : fn(); // _2 = move _3 as usize (Misc); // ... // _1 = move _2 as *const fn() (Misc); -- 2.44.0