summaryrefslogtreecommitdiffstats
path: root/compiler/rustc_mir_transform/src/add_call_guards.rs
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/rustc_mir_transform/src/add_call_guards.rs')
-rw-r--r--compiler/rustc_mir_transform/src/add_call_guards.rs5
1 files changed, 3 insertions, 2 deletions
diff --git a/compiler/rustc_mir_transform/src/add_call_guards.rs b/compiler/rustc_mir_transform/src/add_call_guards.rs
index 30966d22e..e1e354efa 100644
--- a/compiler/rustc_mir_transform/src/add_call_guards.rs
+++ b/compiler/rustc_mir_transform/src/add_call_guards.rs
@@ -50,10 +50,11 @@ impl AddCallGuards {
for block in body.basic_blocks_mut() {
match block.terminator {
Some(Terminator {
- kind: TerminatorKind::Call { target: Some(ref mut destination), cleanup, .. },
+ kind: TerminatorKind::Call { target: Some(ref mut destination), unwind, .. },
source_info,
}) if pred_count[*destination] > 1
- && (cleanup.is_some() || self == &AllCallEdges) =>
+ && (matches!(unwind, UnwindAction::Cleanup(_) | UnwindAction::Terminate)
+ || self == &AllCallEdges) =>
{
// It's a critical edge, break it
let call_guard = BasicBlockData {