about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2020-10-11 16:33:47 +0000
committerbors <bors@rust-lang.org>2020-10-11 16:33:47 +0000
commit8cc82ee340ed96099680ec1165cf5e192d658d0f (patch)
tree0cac0c25eeb8b1861d8e3ecfe41608516354dac4
parentbc74dd711fd154555dea3b110dfed39c4dc37bc6 (diff)
parentecd7862dfb56e91537bf438284d2b83fb03cb0e1 (diff)
Auto merge of #77793 - tmiasko:no-op-discriminant, r=ecstatic-morse
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