ff55fa3026
Add MIR validation for unwind out from nounwind functions + fixes to make validation pass `@Nilstrieb` This is the MIR validation you asked in https://github.com/rust-lang/rust/pull/112403#discussion_r1222739722. Two passes need to be fixed to get the validation to pass: * `RemoveNoopLandingPads` currently unconditionally introduce a resume block (even there is none to begin with!), changed to not do that * Generator state transform introduces a `assert` which may unwind, and its drop elaboration also introduces many new `UnwindAction`s, so in this case run the AbortUnwindingCalls after the transformation. I believe this PR should also fix Rust-for-Linux/linux#1016, cc `@ojeda` r? `@Nilstrieb` |
||
---|---|---|
.. | ||
custom | ||
async_await.a-{closure#0}.generator_resume.0.mir | ||
async_await.b-{closure#0}.generator_resume.0.mir | ||
async_await.rs | ||
enum_cast.bar.built.after.mir | ||
enum_cast.boo.built.after.mir | ||
enum_cast.droppy.built.after.mir | ||
enum_cast.far.built.after.mir | ||
enum_cast.foo.built.after.mir | ||
enum_cast.offsetty.built.after.mir | ||
enum_cast.rs | ||
enum_cast.signy.built.after.mir | ||
enum_cast.unsigny.built.after.mir | ||
issue_49232.main.built.after.mir | ||
issue_49232.rs | ||
issue_101867.main.built.after.mir | ||
issue_101867.rs | ||
issue_110508.{impl#0}-BAR.built.after.mir | ||
issue_110508.{impl#0}-SELF_BAR.built.after.mir | ||
issue_110508.rs | ||
match_false_edges.full_tested_match2.built.after.mir | ||
match_false_edges.full_tested_match.built.after.mir | ||
match_false_edges.main.built.after.mir | ||
match_false_edges.rs | ||
receiver_ptr_mutability.main.built.after.mir | ||
receiver_ptr_mutability.rs | ||
shifts.rs | ||
shifts.shift_signed.built.after.mir | ||
shifts.shift_unsigned.built.after.mir | ||
simple_match.match_bool.built.after.mir | ||
simple_match.rs | ||
storage_live_dead_in_statics.rs | ||
storage_live_dead_in_statics.XXX.built.after.mir | ||
uniform_array_move_out.move_out_by_subslice.built.after.mir | ||
uniform_array_move_out.move_out_from_end.built.after.mir | ||
uniform_array_move_out.rs |