about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2017-08-17 10:58:12 +0000
committerbors <bors@rust-lang.org>2017-08-17 10:58:12 +0000
commitdd39ecf368a3cdb937e129f36a2a342d0c9358f0 (patch)
treef9747d948ca1eec3556058a2e85a569c2baaae03
parenta7e001833e3a40ddcccbc6f6764205162c83c027 (diff)
parent14d62c650faeca7df7a2c702b20820ef52924e89 (diff)
downloadrust-dd39ecf368a3cdb937e129f36a2a342d0c9358f0.tar.gz
rust-dd39ecf368a3cdb937e129f36a2a342d0c9358f0.zip
Auto merge of #43902 - michaelwoerister:fix-mir-passes-promoted, r=arielb1
Run MIR passes on promoted temporaries again.

This seems to have been broken some time in the past (maybe here: https://github.com/rust-lang/rust/commit/9c154a67bf5c6841c39afdb90388cc3ba36dc70c#diff-2f8e8805126c84b2be3f0967ffa0af28L162).

r? @arielb1
-rw-r--r--src/librustc_mir/transform/mod.rs8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/librustc_mir/transform/mod.rs b/src/librustc_mir/transform/mod.rs
index 38070a4b485..25a156ea3fd 100644
--- a/src/librustc_mir/transform/mod.rs
+++ b/src/librustc_mir/transform/mod.rs
@@ -149,6 +149,14 @@ fn run_suite<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>,
 
         pass.run_pass(tcx, source, mir);
 
+        for (index, promoted_mir) in mir.promoted.iter_enumerated_mut() {
+            let promoted_source = MirSource::Promoted(source.item_id(), index);
+            pass.run_pass(tcx, promoted_source, promoted_mir);
+
+            // Let's make sure we don't miss any nested instances
+            assert!(promoted_mir.promoted.is_empty());
+        }
+
         for hook in tcx.mir_passes.hooks() {
             hook.on_mir_pass(tcx, suite, pass_num, &pass.name(), source, &mir, true);
         }