about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMazdak Farrokhzad <twingoow@gmail.com>2020-02-11 10:14:50 +0100
committerMazdak Farrokhzad <twingoow@gmail.com>2020-02-11 10:14:50 +0100
commitebbaf4611a9605412d2aa31c8ebaf0745557fff0 (patch)
treef905db260db9c5e36d4e246f59b3402aee5786c6
parentdc4242d9052a42cdf329c3a2430d02a3b3d415cb (diff)
downloadrust-ebbaf4611a9605412d2aa31c8ebaf0745557fff0.tar.gz
rust-ebbaf4611a9605412d2aa31c8ebaf0745557fff0.zip
simplify_try: address some of eddyb's comments
-rw-r--r--src/librustc_mir/transform/simplify_try.rs3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/librustc_mir/transform/simplify_try.rs b/src/librustc_mir/transform/simplify_try.rs
index bd661195a48..3f28f033047 100644
--- a/src/librustc_mir/transform/simplify_try.rs
+++ b/src/librustc_mir/transform/simplify_try.rs
@@ -52,6 +52,8 @@ impl<'tcx> MirPass<'tcx> for SimplifyArmIdentity {
                 Some(x) => x,
             };
             if local_tmp_s0 != local_tmp_s1
+                // Avoid moving into ourselves.
+                || local_0 == local_1
                 // The field-and-variant information match up.
                 || vf_s0 != vf_s1
                 // Source and target locals have the same type.
@@ -64,6 +66,7 @@ impl<'tcx> MirPass<'tcx> for SimplifyArmIdentity {
             }
 
             // Right shape; transform!
+            s0.source_info = s2.source_info;
             match &mut s0.kind {
                 StatementKind::Assign(box (place, rvalue)) => {
                     *place = local_0.into();