about summary refs log tree commit diff
path: root/src/librustc_mir
diff options
context:
space:
mode:
authorNiko Matsakis <niko@alum.mit.edu>2017-05-02 06:07:54 -0400
committerNiko Matsakis <niko@alum.mit.edu>2017-05-02 16:21:57 -0400
commitc7023d1c2fbb9e136084b0d35164aff5eb2071ae (patch)
treefac5811feaa51f242da3fda09b95eae92476dd4b /src/librustc_mir
parent74b2783877d5f6906a2e532828203f155054d8f9 (diff)
downloadrust-c7023d1c2fbb9e136084b0d35164aff5eb2071ae.tar.gz
rust-c7023d1c2fbb9e136084b0d35164aff5eb2071ae.zip
run MIR borrowck on the validated, not optimized, MIR
Diffstat (limited to 'src/librustc_mir')
-rw-r--r--src/librustc_mir/queries.rs4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/librustc_mir/queries.rs b/src/librustc_mir/queries.rs
index b9d6e527e55..947b6df4bf0 100644
--- a/src/librustc_mir/queries.rs
+++ b/src/librustc_mir/queries.rs
@@ -110,6 +110,10 @@ fn mir_validated<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>, def_id: DefId) -> &'tcx
 }
 
 fn optimized_mir<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>, def_id: DefId) -> &'tcx Mir<'tcx> {
+    // Borrowck uses `mir_validated`, so we have to force it to
+    // execute before we can steal.
+    ty::queries::borrowck::force(tcx, DUMMY_SP, def_id);
+
     let mut mir = tcx.mir_validated(def_id).steal();
     let source = MirSource::from_local_def_id(tcx, def_id);
     transform::run_suite(tcx, source, MIR_OPTIMIZED, &mut mir);