diff options
| author | Manish Goregaokar <manishsmail@gmail.com> | 2018-02-24 08:55:46 -0800 |
|---|---|---|
| committer | Manish Goregaokar <manishsmail@gmail.com> | 2018-02-24 12:47:59 -0800 |
| commit | 8fdad6f2efac23a8eeb7b8712ff57739157bcc4e (patch) | |
| tree | 70858c01a7834e91f61b3208b4be5e758e26e640 /src | |
| parent | 111af8f5c1ccf1c7a7ab402f5c5d04276602f3d4 (diff) | |
| parent | fe0260fbf892d5b49e79ee310b5e198c72c3d576 (diff) | |
| download | rust-8fdad6f2efac23a8eeb7b8712ff57739157bcc4e.tar.gz rust-8fdad6f2efac23a8eeb7b8712ff57739157bcc4e.zip | |
Rollup merge of #48232 - fpoli:master, r=pnkfelix
mir: Gather move at SwitchInt, Assert terminators Previously, `_1` was not marked as "definitely uninitialized" after a `switchInt(move _1)` terminator. I think the same goes for the `assert` terminator. Related discussion: https://internals.rust-lang.org/t/why-is-2-definitely-initialized-after-switchint-move-2/6760
Diffstat (limited to 'src')
| -rw-r--r-- | src/librustc_mir/dataflow/move_paths/builder.rs | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/librustc_mir/dataflow/move_paths/builder.rs b/src/librustc_mir/dataflow/move_paths/builder.rs index 635d99e7737..d6f419f6cfb 100644 --- a/src/librustc_mir/dataflow/move_paths/builder.rs +++ b/src/librustc_mir/dataflow/move_paths/builder.rs @@ -353,9 +353,12 @@ impl<'b, 'a, 'gcx, 'tcx> Gatherer<'b, 'a, 'gcx, 'tcx> { self.gather_move(&Place::Local(RETURN_PLACE)); } - TerminatorKind::Assert { .. } | - TerminatorKind::SwitchInt { .. } => { - // branching terminators - these don't move anything + TerminatorKind::Assert { ref cond, .. } => { + self.gather_operand(cond); + } + + TerminatorKind::SwitchInt { ref discr, .. } => { + self.gather_operand(discr); } TerminatorKind::Yield { ref value, .. } => { |
