Remove the TypedConstVal
Replace it with ConstUsize instead, which is more appropriate; we are not using the rest of the TypedConstVal anyway
This commit is contained in:
parent
3a14e9e745
commit
21c61336bb
|
@ -983,7 +983,7 @@ pub enum Rvalue<'tcx> {
|
||||||
Use(Operand<'tcx>),
|
Use(Operand<'tcx>),
|
||||||
|
|
||||||
/// [x; 32]
|
/// [x; 32]
|
||||||
Repeat(Operand<'tcx>, TypedConstVal<'tcx>),
|
Repeat(Operand<'tcx>, ConstUsize),
|
||||||
|
|
||||||
/// &x or &mut x
|
/// &x or &mut x
|
||||||
Ref(&'tcx Region, BorrowKind, Lvalue<'tcx>),
|
Ref(&'tcx Region, BorrowKind, Lvalue<'tcx>),
|
||||||
|
@ -1203,19 +1203,6 @@ pub struct Constant<'tcx> {
|
||||||
pub literal: Literal<'tcx>,
|
pub literal: Literal<'tcx>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone, RustcEncodable, RustcDecodable)]
|
|
||||||
pub struct TypedConstVal<'tcx> {
|
|
||||||
pub ty: Ty<'tcx>,
|
|
||||||
pub span: Span,
|
|
||||||
pub value: ConstUsize,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<'tcx> Debug for TypedConstVal<'tcx> {
|
|
||||||
fn fmt(&self, fmt: &mut Formatter) -> fmt::Result {
|
|
||||||
write!(fmt, "const {}", ConstInt::Usize(self.value))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
newtype_index!(Promoted, "promoted");
|
newtype_index!(Promoted, "promoted");
|
||||||
|
|
||||||
#[derive(Clone, PartialEq, Eq, Hash, RustcEncodable, RustcDecodable)]
|
#[derive(Clone, PartialEq, Eq, Hash, RustcEncodable, RustcDecodable)]
|
||||||
|
|
|
@ -140,7 +140,7 @@ impl<'tcx> Rvalue<'tcx> {
|
||||||
Rvalue::Use(ref operand) => operand.ty(mir, tcx),
|
Rvalue::Use(ref operand) => operand.ty(mir, tcx),
|
||||||
Rvalue::Repeat(ref operand, ref count) => {
|
Rvalue::Repeat(ref operand, ref count) => {
|
||||||
let op_ty = operand.ty(mir, tcx);
|
let op_ty = operand.ty(mir, tcx);
|
||||||
let count = count.value.as_u64(tcx.sess.target.uint_type);
|
let count = count.as_u64(tcx.sess.target.uint_type);
|
||||||
assert_eq!(count as usize as u64, count);
|
assert_eq!(count as usize as u64, count);
|
||||||
tcx.mk_array(op_ty, count as usize)
|
tcx.mk_array(op_ty, count as usize)
|
||||||
}
|
}
|
||||||
|
|
|
@ -235,12 +235,6 @@ macro_rules! make_mir_visitor {
|
||||||
self.super_const_usize(const_usize);
|
self.super_const_usize(const_usize);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn visit_typed_const_val(&mut self,
|
|
||||||
val: & $($mutability)* TypedConstVal<'tcx>,
|
|
||||||
location: Location) {
|
|
||||||
self.super_typed_const_val(val, location);
|
|
||||||
}
|
|
||||||
|
|
||||||
fn visit_local_decl(&mut self,
|
fn visit_local_decl(&mut self,
|
||||||
local_decl: & $($mutability)* LocalDecl<'tcx>) {
|
local_decl: & $($mutability)* LocalDecl<'tcx>) {
|
||||||
self.super_local_decl(local_decl);
|
self.super_local_decl(local_decl);
|
||||||
|
@ -467,9 +461,9 @@ macro_rules! make_mir_visitor {
|
||||||
}
|
}
|
||||||
|
|
||||||
Rvalue::Repeat(ref $($mutability)* value,
|
Rvalue::Repeat(ref $($mutability)* value,
|
||||||
ref $($mutability)* typed_const_val) => {
|
ref $($mutability)* length) => {
|
||||||
self.visit_operand(value, location);
|
self.visit_operand(value, location);
|
||||||
self.visit_typed_const_val(typed_const_val, location);
|
self.visit_const_usize(length, location);
|
||||||
}
|
}
|
||||||
|
|
||||||
Rvalue::Ref(r, bk, ref $($mutability)* path) => {
|
Rvalue::Ref(r, bk, ref $($mutability)* path) => {
|
||||||
|
@ -648,20 +642,6 @@ macro_rules! make_mir_visitor {
|
||||||
self.visit_literal(literal, location);
|
self.visit_literal(literal, location);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn super_typed_const_val(&mut self,
|
|
||||||
constant: & $($mutability)* TypedConstVal<'tcx>,
|
|
||||||
location: Location) {
|
|
||||||
let TypedConstVal {
|
|
||||||
ref $($mutability)* span,
|
|
||||||
ref $($mutability)* ty,
|
|
||||||
ref $($mutability)* value,
|
|
||||||
} = *constant;
|
|
||||||
|
|
||||||
self.visit_span(span);
|
|
||||||
self.visit_ty(ty);
|
|
||||||
self.visit_const_usize(value, location);
|
|
||||||
}
|
|
||||||
|
|
||||||
fn super_literal(&mut self,
|
fn super_literal(&mut self,
|
||||||
literal: & $($mutability)* Literal<'tcx>,
|
literal: & $($mutability)* Literal<'tcx>,
|
||||||
location: Location) {
|
location: Location) {
|
||||||
|
|
|
@ -602,11 +602,7 @@ fn make_mirror_unadjusted<'a, 'gcx, 'tcx>(cx: &mut Cx<'a, 'gcx, 'tcx>,
|
||||||
|
|
||||||
ExprKind::Repeat {
|
ExprKind::Repeat {
|
||||||
value: v.to_ref(),
|
value: v.to_ref(),
|
||||||
count: TypedConstVal {
|
count: count,
|
||||||
ty: cx.tcx.types.usize,
|
|
||||||
span: c.span,
|
|
||||||
value: count
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
hir::ExprRet(ref v) => ExprKind::Return { value: v.to_ref() },
|
hir::ExprRet(ref v) => ExprKind::Return { value: v.to_ref() },
|
||||||
|
|
|
@ -14,7 +14,8 @@
|
||||||
//! unit-tested and separated from the Rust source and compiler data
|
//! unit-tested and separated from the Rust source and compiler data
|
||||||
//! structures.
|
//! structures.
|
||||||
|
|
||||||
use rustc::mir::{BinOp, BorrowKind, Field, Literal, UnOp, TypedConstVal};
|
use rustc_const_math::ConstUsize;
|
||||||
|
use rustc::mir::{BinOp, BorrowKind, Field, Literal, UnOp};
|
||||||
use rustc::hir::def_id::DefId;
|
use rustc::hir::def_id::DefId;
|
||||||
use rustc::middle::region::CodeExtent;
|
use rustc::middle::region::CodeExtent;
|
||||||
use rustc::ty::subst::Substs;
|
use rustc::ty::subst::Substs;
|
||||||
|
@ -219,7 +220,7 @@ pub enum ExprKind<'tcx> {
|
||||||
},
|
},
|
||||||
Repeat {
|
Repeat {
|
||||||
value: ExprRef<'tcx>,
|
value: ExprRef<'tcx>,
|
||||||
count: TypedConstVal<'tcx>,
|
count: ConstUsize,
|
||||||
},
|
},
|
||||||
Array {
|
Array {
|
||||||
fields: Vec<ExprRef<'tcx>>,
|
fields: Vec<ExprRef<'tcx>>,
|
||||||
|
|
|
@ -19,7 +19,7 @@ use rustc::mir::{Constant, Literal, Location, LocalDecl};
|
||||||
use rustc::mir::{Lvalue, LvalueElem, LvalueProjection};
|
use rustc::mir::{Lvalue, LvalueElem, LvalueProjection};
|
||||||
use rustc::mir::{Mir, Operand, ProjectionElem};
|
use rustc::mir::{Mir, Operand, ProjectionElem};
|
||||||
use rustc::mir::{Rvalue, SourceInfo, Statement, StatementKind};
|
use rustc::mir::{Rvalue, SourceInfo, Statement, StatementKind};
|
||||||
use rustc::mir::{Terminator, TerminatorKind, TypedConstVal, VisibilityScope, VisibilityScopeData};
|
use rustc::mir::{Terminator, TerminatorKind, VisibilityScope, VisibilityScopeData};
|
||||||
use rustc::mir::visit as mir_visit;
|
use rustc::mir::visit as mir_visit;
|
||||||
use rustc::mir::visit::Visitor;
|
use rustc::mir::visit::Visitor;
|
||||||
use rustc::ty::{ClosureSubsts, TyCtxt};
|
use rustc::ty::{ClosureSubsts, TyCtxt};
|
||||||
|
@ -297,13 +297,6 @@ impl<'a, 'tcx> mir_visit::Visitor<'tcx> for StatCollector<'a, 'tcx> {
|
||||||
self.super_const_usize(const_usize);
|
self.super_const_usize(const_usize);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn visit_typed_const_val(&mut self,
|
|
||||||
val: &TypedConstVal<'tcx>,
|
|
||||||
location: Location) {
|
|
||||||
self.record("TypedConstVal", val);
|
|
||||||
self.super_typed_const_val(val, location);
|
|
||||||
}
|
|
||||||
|
|
||||||
fn visit_local_decl(&mut self,
|
fn visit_local_decl(&mut self,
|
||||||
local_decl: &LocalDecl<'tcx>) {
|
local_decl: &LocalDecl<'tcx>) {
|
||||||
self.record("LocalDecl", local_decl);
|
self.record("LocalDecl", local_decl);
|
||||||
|
|
|
@ -529,7 +529,7 @@ impl<'a, 'tcx> MirConstContext<'a, 'tcx> {
|
||||||
|
|
||||||
mir::Rvalue::Repeat(ref elem, ref count) => {
|
mir::Rvalue::Repeat(ref elem, ref count) => {
|
||||||
let elem = self.const_operand(elem, span)?;
|
let elem = self.const_operand(elem, span)?;
|
||||||
let size = count.value.as_u64(tcx.sess.target.uint_type);
|
let size = count.as_u64(tcx.sess.target.uint_type);
|
||||||
let fields = vec![elem.llval; size as usize];
|
let fields = vec![elem.llval; size as usize];
|
||||||
self.const_array(dest_ty, &fields)
|
self.const_array(dest_ty, &fields)
|
||||||
}
|
}
|
||||||
|
|
|
@ -95,7 +95,7 @@ impl<'a, 'tcx> MirContext<'a, 'tcx> {
|
||||||
|
|
||||||
mir::Rvalue::Repeat(ref elem, ref count) => {
|
mir::Rvalue::Repeat(ref elem, ref count) => {
|
||||||
let tr_elem = self.trans_operand(&bcx, elem);
|
let tr_elem = self.trans_operand(&bcx, elem);
|
||||||
let size = count.value.as_u64(bcx.tcx().sess.target.uint_type);
|
let size = count.as_u64(bcx.tcx().sess.target.uint_type);
|
||||||
let size = C_uint(bcx.ccx, size);
|
let size = C_uint(bcx.ccx, size);
|
||||||
let base = base::get_dataptr(&bcx, dest.llval);
|
let base = base::get_dataptr(&bcx, dest.llval);
|
||||||
tvec::slice_for_each(&bcx, base, tr_elem.ty, size, |bcx, llslot| {
|
tvec::slice_for_each(&bcx, base, tr_elem.ty, size, |bcx, llslot| {
|
||||||
|
|
Loading…
Reference in New Issue