diff options
| author | Ariel Ben-Yehuda <arielb1@mail.tau.ac.il> | 2016-06-09 17:23:23 +0300 |
|---|---|---|
| committer | Ariel Ben-Yehuda <ariel.byd@gmail.com> | 2016-06-09 21:47:58 +0300 |
| commit | ce4fdefbd824271c342ab253b5e475ab9dc91be9 (patch) | |
| tree | 31e99478e98d82661933ac549ca3b1fe143add27 | |
| parent | f5b1ba6e90afe1cd5bc46bae4ee97d989c71adbf (diff) | |
| download | rust-ce4fdefbd824271c342ab253b5e475ab9dc91be9.tar.gz rust-ce4fdefbd824271c342ab253b5e475ab9dc91be9.zip | |
fix issues
| -rw-r--r-- | src/librustc_driver/driver.rs | 3 | ||||
| -rw-r--r-- | src/librustc_mir/build/cfg.rs | 5 | ||||
| -rw-r--r-- | src/librustc_mir/build/matches/mod.rs | 3 | ||||
| -rw-r--r-- | src/rustc/Cargo.lock | 1 |
4 files changed, 10 insertions, 2 deletions
diff --git a/src/librustc_driver/driver.rs b/src/librustc_driver/driver.rs index ce132a04870..1205d688b85 100644 --- a/src/librustc_driver/driver.rs +++ b/src/librustc_driver/driver.rs @@ -980,7 +980,8 @@ pub fn phase_3_run_analysis_passes<'tcx, F, R>(sess: &'tcx Session, passes.push_pass(box mir::transform::simplify_cfg::SimplifyCfg::new("initial")); passes.push_pass(box mir::transform::qualify_consts::QualifyAndPromoteConstants); passes.push_pass(box mir::transform::type_check::TypeckMir); - passes.push_pass(box mir::transform::simplify_branches::SimplifyBranches::new("initial")); + passes.push_pass( + box mir::transform::simplify_branches::SimplifyBranches::new("initial")); passes.push_pass(box mir::transform::simplify_cfg::SimplifyCfg::new("qualify-consts")); // And run everything. passes.run_passes(tcx, &mut mir_map); diff --git a/src/librustc_mir/build/cfg.rs b/src/librustc_mir/build/cfg.rs index 3bd6a7e1dd1..83f8c3b42c8 100644 --- a/src/librustc_mir/build/cfg.rs +++ b/src/librustc_mir/build/cfg.rs @@ -78,8 +78,11 @@ impl<'tcx> CFG<'tcx> { block: BasicBlock, source_info: SourceInfo, kind: TerminatorKind<'tcx>) { + debug!("terminating block {:?} <- {:?}", block, kind); debug_assert!(self.block_data(block).terminator.is_none(), - "terminate: block {:?} already has a terminator set", block); + "terminate: block {:?}={:?} already has a terminator set", + block, + self.block_data(block)); self.block_data_mut(block).terminator = Some(Terminator { source_info: source_info, kind: kind, diff --git a/src/librustc_mir/build/matches/mod.rs b/src/librustc_mir/build/matches/mod.rs index c57913c8e60..b3315ab7d29 100644 --- a/src/librustc_mir/build/matches/mod.rs +++ b/src/librustc_mir/build/matches/mod.rs @@ -87,6 +87,9 @@ impl<'a, 'gcx, 'tcx> Builder<'a, 'gcx, 'tcx> { // can't be reached - terminate them with an `unreachable`. let source_info = self.source_info(span); + let mut otherwise = otherwise; + otherwise.sort(); + otherwise.dedup(); // variant switches can introduce duplicate target blocks for block in otherwise { self.cfg.terminate(block, source_info, TerminatorKind::Unreachable); } diff --git a/src/rustc/Cargo.lock b/src/rustc/Cargo.lock index 50d9f61e2c1..3e8277e28ba 100644 --- a/src/rustc/Cargo.lock +++ b/src/rustc/Cargo.lock @@ -87,6 +87,7 @@ dependencies = [ "graphviz 0.0.0", "log 0.0.0", "rustc 0.0.0", + "rustc_data_structures 0.0.0", "rustc_mir 0.0.0", "syntax 0.0.0", ] |
