about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorAriel Ben-Yehuda <ariel.byd@gmail.com>2017-05-18 23:58:39 +0300
committerAriel Ben-Yehuda <ariel.byd@gmail.com>2017-05-28 10:43:25 +0300
commit6548aefdeb425170cb40f7160cceedf14c97a433 (patch)
tree187450aab7a72f0a2854cc8645327b4f1d3e6c1c /src
parent55767702ec0f4e710b711815381897b3304f3785 (diff)
downloadrust-6548aefdeb425170cb40f7160cceedf14c97a433.tar.gz
rust-6548aefdeb425170cb40f7160cceedf14c97a433.zip
fix loops in unwind code in MSVC
I'm not sure how well this works, but it's worth a try.
Diffstat (limited to 'src')
-rw-r--r--src/librustc_trans/mir/analyze.rs4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/librustc_trans/mir/analyze.rs b/src/librustc_trans/mir/analyze.rs
index 96ef26d3f6f..0f95668302c 100644
--- a/src/librustc_trans/mir/analyze.rs
+++ b/src/librustc_trans/mir/analyze.rs
@@ -260,7 +260,9 @@ pub fn cleanup_kinds<'a, 'tcx>(mir: &mir::Mir<'tcx>) -> IndexVec<mir::BasicBlock
                         result[succ] = CleanupKind::Internal { funclet: funclet };
                     }
                     CleanupKind::Funclet => {
-                        set_successor(funclet, succ);
+                        if funclet != succ {
+                            set_successor(funclet, succ);
+                        }
                     }
                     CleanupKind::Internal { funclet: succ_funclet } => {
                         if funclet != succ_funclet {