]> git.lizzy.rs Git - rust.git/commit
mir: Add TerminatorKind::FalseUnwind
authorbobtwinkles <srkoser+GitHub@gmail.com>
Thu, 25 Jan 2018 06:45:45 +0000 (01:45 -0500)
committerbobtwinkles <srkoser+GitHub@gmail.com>
Mon, 5 Feb 2018 20:00:40 +0000 (15:00 -0500)
commitbdc37aa05722818e8edb5d93825a62921f351913
treee686d6556cb4fa96d54ce78d716b46b4fe63ffc1
parent5ca88ae6ae2f864dcdd924f099cdf6a345476196
mir: Add TerminatorKind::FalseUnwind

Sometimes a simple goto misses the cleanup/unwind edges. Specifically, in the
case of infinite loops such as those introduced by a loop statement without any
other out edges. Analogous to TerminatorKind::FalseEdges; this new terminator
kind is used when we want borrowck to consider an unwind path, but real control
flow should never actually take it.
19 files changed:
src/librustc/ich/impls_mir.rs
src/librustc/mir/mod.rs
src/librustc/mir/visit.rs
src/librustc_mir/borrow_check/mod.rs
src/librustc_mir/borrow_check/nll/type_check/mod.rs
src/librustc_mir/build/matches/mod.rs
src/librustc_mir/dataflow/impls/borrows.rs
src/librustc_mir/dataflow/mod.rs
src/librustc_mir/dataflow/move_paths/builder.rs
src/librustc_mir/interpret/terminator/mod.rs
src/librustc_mir/monomorphize/collector.rs
src/librustc_mir/transform/check_unsafety.rs
src/librustc_mir/transform/inline.rs
src/librustc_mir/transform/qualify_consts.rs
src/librustc_mir/transform/remove_noop_landing_pads.rs
src/librustc_mir/transform/simplify_branches.rs
src/librustc_passes/mir_stats.rs
src/librustc_trans/mir/analyze.rs
src/librustc_trans/mir/block.rs