From 53f7f9de9255fd01023788d533573ec48388c576 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mat=C3=BA=C5=A1=20Tal=C4=8D=C3=ADk?= Date: Fri, 26 Feb 2021 10:39:44 +0100 Subject: [PATCH] spv-in: fix if branches in CFG format --- src/front/spv/flow.rs | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/front/spv/flow.rs b/src/front/spv/flow.rs index f187464848..7471281ab6 100644 --- a/src/front/spv/flow.rs +++ b/src/front/spv/flow.rs @@ -251,12 +251,21 @@ impl FlowGraph { reject: self.naga_traverse(false_node_index, Some(merge_node_index))?, }); } else { + let true_merges_to_false = has_path_connecting( + &self.flow, + true_node_index, + false_node_index, + None, + ); + let stop_node_index = if true_merges_to_false { + Some(merge_node_index) + } else { + stop_node_index + }; + result.push(crate::Statement::If { condition, - accept: self.naga_traverse( - self.block_to_node[&true_id], - Some(merge_node_index), - )?, + accept: self.naga_traverse(true_node_index, stop_node_index)?, reject: vec![], }); }