diff options
| author | Santiago Pastorino <spastorino@gmail.com> | 2019-12-11 01:27:33 -0300 |
|---|---|---|
| committer | Oliver Scherer <github35764891676564198441@oli-obk.de> | 2020-01-10 09:08:24 +0100 |
| commit | 6f2c7025b8192d68a082b153b9574d5df452ca8a (patch) | |
| tree | 65456c7440d9dd2fdf1a0a886496af51aaf8bb75 /src/librustc_codegen_ssa | |
| parent | 6aa4b5a7603efc7a6f323e1be9be67ecf8f5f227 (diff) | |
| download | rust-6f2c7025b8192d68a082b153b9574d5df452ca8a.tar.gz rust-6f2c7025b8192d68a082b153b9574d5df452ca8a.zip | |
Remove StaticKind::Promoted
Diffstat (limited to 'src/librustc_codegen_ssa')
| -rw-r--r-- | src/librustc_codegen_ssa/mir/block.rs | 32 | ||||
| -rw-r--r-- | src/librustc_codegen_ssa/mir/place.rs | 35 |
2 files changed, 3 insertions, 64 deletions
diff --git a/src/librustc_codegen_ssa/mir/block.rs b/src/librustc_codegen_ssa/mir/block.rs index a1d4c0c820b..ecb3eb05f11 100644 --- a/src/librustc_codegen_ssa/mir/block.rs +++ b/src/librustc_codegen_ssa/mir/block.rs @@ -10,8 +10,8 @@ use crate::traits::*; use crate::MemFlags; use rustc::middle::lang_items; +use rustc::mir; use rustc::mir::interpret::PanicInfo; -use rustc::mir::{self, PlaceBase, Static, StaticKind}; use rustc::ty::layout::{self, FnAbiExt, HasTyCtxt, LayoutOf}; use rustc::ty::{self, Instance, Ty, TypeFoldable}; use rustc_index::vec::Idx; @@ -613,35 +613,7 @@ impl<'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>> FunctionCx<'a, 'tcx, Bx> { // The shuffle array argument is usually not an explicit constant, // but specified directly in the code. This means it gets promoted // and we can then extract the value by evaluating the promoted. - mir::Operand::Copy(place) | mir::Operand::Move(place) => { - if let mir::PlaceRef { - base: - &PlaceBase::Static(box Static { - kind: StaticKind::Promoted(promoted, substs), - ty, - def_id, - }), - projection: &[], - } = place.as_ref() - { - let c = bx.tcx().const_eval_promoted( - Instance::new(def_id, self.monomorphize(&substs)), - promoted, - ); - let (llval, ty) = self.simd_shuffle_indices( - &bx, - terminator.source_info.span, - ty, - c, - ); - return OperandRef { - val: Immediate(llval), - layout: bx.layout_of(ty), - }; - } else { - span_bug!(span, "shuffle indices must be constant"); - } - } + mir::Operand::Copy(_place) | mir::Operand::Move(_place) => {} mir::Operand::Constant(constant) => { let c = self.eval_mir_constant(constant); diff --git a/src/librustc_codegen_ssa/mir/place.rs b/src/librustc_codegen_ssa/mir/place.rs index 7399db1f2b9..639a98107cd 100644 --- a/src/librustc_codegen_ssa/mir/place.rs +++ b/src/librustc_codegen_ssa/mir/place.rs @@ -9,7 +9,7 @@ use crate::MemFlags; use rustc::mir; use rustc::mir::tcx::PlaceTy; use rustc::ty::layout::{self, Align, HasTyCtxt, LayoutOf, TyLayout, VariantIdx}; -use rustc::ty::{self, Instance, Ty}; +use rustc::ty::{self, Ty}; #[derive(Copy, Clone, Debug)] pub struct PlaceRef<'tcx, V> { @@ -441,39 +441,6 @@ impl<'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>> FunctionCx<'a, 'tcx, Bx> { base: mir::PlaceBase::Static(box mir::Static { ty, - kind: mir::StaticKind::Promoted(promoted, substs), - def_id, - }), - projection: [], - } => { - let instance = Instance::new(*def_id, self.monomorphize(substs)); - let layout = cx.layout_of(self.monomorphize(&ty)); - match bx.tcx().const_eval_promoted(instance, *promoted) { - Ok(val) => match val.val { - ty::ConstKind::Value(mir::interpret::ConstValue::ByRef { - alloc, - offset, - }) => bx.cx().from_const_alloc(layout, alloc, offset), - _ => bug!("promoteds should have an allocation: {:?}", val), - }, - Err(_) => { - // This is unreachable as long as runtime - // and compile-time agree perfectly. - // With floats that won't always be true, - // so we generate a (safe) abort. - bx.abort(); - // We still have to return a place but it doesn't matter, - // this code is unreachable. - let llval = - bx.cx().const_undef(bx.cx().type_ptr_to(bx.cx().backend_type(layout))); - PlaceRef::new_sized(llval, layout) - } - } - } - mir::PlaceRef { - base: - mir::PlaceBase::Static(box mir::Static { - ty, kind: mir::StaticKind::Static, def_id, }), |
