about summary refs log tree commit diff
diff options
context:
space:
mode:
authorTomasz Miąsko <tomasz.miasko@gmail.com>2020-10-10 00:00:00 +0000
committerTomasz Miąsko <tomasz.miasko@gmail.com>2020-10-10 00:00:00 +0000
commitecd7862dfb56e91537bf438284d2b83fb03cb0e1 (patch)
tree52694bf712a780dd143025f462c606bfaf7b97d5
parent0e022fc2b8eecbc16c090a99efbbd262c37ec962 (diff)
downloadrust-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.rs2
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