diff options
| author | Rakshith Ravi <rakshith.ravi@gmx.com> | 2020-05-24 19:38:54 +0530 |
|---|---|---|
| committer | Rakshith Ravi <rakshith.ravi@gmx.com> | 2020-05-24 19:38:54 +0530 |
| commit | 245ebc7210f99528d65e4b46f012dbde2a2f299f (patch) | |
| tree | d255edcf561048cbaed17e28bf9d9a97d61f608c /src/librustc_codegen_ssa/mir | |
| parent | 52b605c8cb2f730e607de0777a694cd1b9bb3e15 (diff) | |
| download | rust-245ebc7210f99528d65e4b46f012dbde2a2f299f.tar.gz rust-245ebc7210f99528d65e4b46f012dbde2a2f299f.zip | |
Removed all instances of const_field.
Diffstat (limited to 'src/librustc_codegen_ssa/mir')
| -rw-r--r-- | src/librustc_codegen_ssa/mir/constant.rs | 16 |
1 files changed, 6 insertions, 10 deletions
diff --git a/src/librustc_codegen_ssa/mir/constant.rs b/src/librustc_codegen_ssa/mir/constant.rs index d2629b771c2..574f91e5b4d 100644 --- a/src/librustc_codegen_ssa/mir/constant.rs +++ b/src/librustc_codegen_ssa/mir/constant.rs @@ -1,6 +1,5 @@ use crate::mir::operand::OperandRef; use crate::traits::*; -use rustc_index::vec::Idx; use rustc_middle::mir; use rustc_middle::mir::interpret::{ConstValue, ErrorHandled}; use rustc_middle::ty::layout::HasTyCtxt; @@ -59,17 +58,14 @@ impl<'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>> FunctionCx<'a, 'tcx, Bx> { constant .map(|val| { let field_ty = ty.builtin_index().unwrap(); - let fields = match ty.kind { - ty::Array(_, n) => n.eval_usize(bx.tcx(), ty::ParamEnv::reveal_all()), - _ => bug!("invalid simd shuffle type: {}", ty), - }; let c = ty::Const::from_value(bx.tcx(), val, ty); - let values: Vec<_> = (0..fields) + let values: Vec<_> = bx + .tcx() + .destructure_const(ty::ParamEnv::reveal_all().and(&c)) + .fields + .into_iter() .map(|field| { - let field = bx.tcx().const_field( - ty::ParamEnv::reveal_all().and((&c, mir::Field::new(field as usize))), - ); - if let Some(prim) = field.try_to_scalar() { + if let Some(prim) = field.val.try_to_scalar() { let layout = bx.layout_of(field_ty); let scalar = match layout.abi { Abi::Scalar(ref x) => x, |
