about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorOliver Schneider <github35764891676564198441@oli-obk.de>2018-06-05 19:54:50 +0200
committerOliver Schneider <github35764891676564198441@oli-obk.de>2018-06-05 20:49:47 +0200
commit8a74be6684a6b0f02c5d4a36cbc19201a9d6f34f (patch)
treeeda3d8f417d363cbd00635764c0d76499d6bd02d /src
parent5950496c92f99d15d85432c0c0eace5fb6b25c02 (diff)
downloadrust-8a74be6684a6b0f02c5d4a36cbc19201a9d6f34f.tar.gz
rust-8a74be6684a6b0f02c5d4a36cbc19201a9d6f34f.zip
Add source information the const propagation of places
Diffstat (limited to 'src')
-rw-r--r--src/librustc_mir/transform/const_prop.rs9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/librustc_mir/transform/const_prop.rs b/src/librustc_mir/transform/const_prop.rs
index 83b4ea54aab..24382815084 100644
--- a/src/librustc_mir/transform/const_prop.rs
+++ b/src/librustc_mir/transform/const_prop.rs
@@ -233,14 +233,14 @@ impl<'b, 'a, 'tcx:'b> ConstPropagator<'b, 'a, 'tcx> {
         }
     }
 
-    fn eval_place(&mut self, place: &Place<'tcx>) -> Option<Const<'tcx>> {
+    fn eval_place(&mut self, place: &Place<'tcx>, source_info: SourceInfo) -> Option<Const<'tcx>> {
         match *place {
             Place::Local(loc) => self.places[loc].clone(),
             Place::Projection(ref proj) => match proj.elem {
                 ProjectionElem::Field(field, _) => {
                     trace!("field proj on {:?}", proj.base);
-                    let (base, ty, span) = self.eval_place(&proj.base)?;
-                    let valty = self.use_ecx(span, |this| {
+                    let (base, ty, span) = self.eval_place(&proj.base, source_info)?;
+                    let valty = self.use_ecx(source_info, |this| {
                         this.ecx.read_field(base, None, field, ty)
                     })?;
                     Some((valty.value, valty.ty, span))
@@ -254,7 +254,8 @@ impl<'b, 'a, 'tcx:'b> ConstPropagator<'b, 'a, 'tcx> {
     fn eval_operand(&mut self, op: &Operand<'tcx>, source_info: SourceInfo) -> Option<Const<'tcx>> {
         match *op {
             Operand::Constant(ref c) => self.eval_constant(c, source_info),
-            Operand::Move(ref place) | Operand::Copy(ref place) => self.eval_place(place),
+            | Operand::Move(ref place)
+            | Operand::Copy(ref place) => self.eval_place(place, source_info),
         }
     }