diff options
| author | Tomasz Miąsko <tomasz.miasko@gmail.com> | 2020-10-10 00:00:00 +0000 |
|---|---|---|
| committer | Tomasz Miąsko <tomasz.miasko@gmail.com> | 2020-10-10 00:00:00 +0000 |
| commit | ecd7862dfb56e91537bf438284d2b83fb03cb0e1 (patch) | |
| tree | 52694bf712a780dd143025f462c606bfaf7b97d5 | |
| parent | 0e022fc2b8eecbc16c090a99efbbd262c37ec962 (diff) | |
| download | rust-ecd7862dfb56e91537bf438284d2b83fb03cb0e1.tar.gz rust-ecd7862dfb56e91537bf438284d2b83fb03cb0e1.zip | |
Recognize discriminant reads as no-ops in RemoveNoopLandingPads
The cleanup blocks often contain read of discriminants. Teach RemoveNoopLandingPads to recognize them as no-ops to remove additional no-op landing pads.
| -rw-r--r-- | compiler/rustc_mir/src/transform/remove_noop_landing_pads.rs | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/compiler/rustc_mir/src/transform/remove_noop_landing_pads.rs b/compiler/rustc_mir/src/transform/remove_noop_landing_pads.rs index b45c533d2c0..31e201c3a5b 100644 --- a/compiler/rustc_mir/src/transform/remove_noop_landing_pads.rs +++ b/compiler/rustc_mir/src/transform/remove_noop_landing_pads.rs @@ -43,7 +43,7 @@ impl RemoveNoopLandingPads { // These are all nops in a landing pad } - StatementKind::Assign(box (place, Rvalue::Use(_))) => { + StatementKind::Assign(box (place, Rvalue::Use(_) | Rvalue::Discriminant(_))) => { if place.as_local().is_some() { // Writing to a local (e.g., a drop flag) does not // turn a landing pad to a non-nop |
