diff options
| author | John Kåre Alsaker <john.kare.alsaker@gmail.com> | 2017-08-11 04:24:25 +0200 |
|---|---|---|
| committer | John Kåre Alsaker <john.kare.alsaker@gmail.com> | 2017-08-11 04:24:25 +0200 |
| commit | 2d30e7e982bb1f2e60bc8ed449489c021416c845 (patch) | |
| tree | 46ef2510a525188637ce63418f1a2e276d0824f4 /src | |
| parent | b8aa595e6d159bfb5e0293659b69e0edc457a468 (diff) | |
| download | rust-2d30e7e982bb1f2e60bc8ed449489c021416c845.tar.gz rust-2d30e7e982bb1f2e60bc8ed449489c021416c845.zip | |
Fix merge of scope.rs
Diffstat (limited to 'src')
| -rw-r--r-- | src/librustc_mir/build/scope.rs | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/src/librustc_mir/build/scope.rs b/src/librustc_mir/build/scope.rs index 2033131c065..cb7b13f1e61 100644 --- a/src/librustc_mir/build/scope.rs +++ b/src/librustc_mir/build/scope.rs @@ -875,15 +875,13 @@ fn build_scope_drops<'tcx>(cfg: &mut CFG<'tcx>, // for us to diverge into in case the drop panics. let on_diverge = iter.peek().iter().filter_map(|dd| { match dd.kind { - DropKind::Value { - cached_block: CachedBlock { - unwind: None, - generator_drop: None, + DropKind::Value { cached_block } => { + let result = cached_block.get(generator_drop); + if result.is_none() { + span_bug!(drop_data.span, "cached block not present?") } - } => { - span_bug!(drop_data.span, "cached block not present?") - } - DropKind::Value { cached_block } => cached_block.get(generator_drop), + result + }, DropKind::Storage => None } }).next(); @@ -903,6 +901,11 @@ fn build_scope_drops<'tcx>(cfg: &mut CFG<'tcx>, DropKind::Storage => {} } + // We do not need to emit StorageDead for generator drops + if generator_drop { + continue + } + // Drop the storage for both value and storage drops. // Only temps and vars need their storage dead. match drop_data.location { |
