[Mesa-dev] [PATCH] spirv: avoid infinite loop / freeze in vtn_cfg_walk_blocks()
Eero Tamminen
eero.t.tamminen at intel.com
Thu Dec 21 13:53:13 UTC 2017
Fixes: 9702fac68e (spirv: consider bitsize when handling OpSwitch cases)
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=104359
---
src/compiler/spirv/vtn_cfg.c | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/src/compiler/spirv/vtn_cfg.c b/src/compiler/spirv/vtn_cfg.c
index 9c4cbe2..3d5de37 100644
--- a/src/compiler/spirv/vtn_cfg.c
+++ b/src/compiler/spirv/vtn_cfg.c
@@ -549,19 +549,19 @@ vtn_cfg_walk_blocks(struct vtn_builder *b, struct
list_head *cf_list,
struct vtn_block *case_block =
vtn_value(b, *w, vtn_value_type_block)->block;
- if (case_block == break_block)
- continue;
-
- vtn_assert(case_block->switch_case);
-
- vtn_order_case(swtch, case_block->switch_case);
-
if (bitsize <= 32) {
w += 2;
} else {
assert(bitsize == 64);
w += 3;
}
+
+ if (case_block == break_block)
+ continue;
+
+ vtn_assert(case_block->switch_case);
+
+ vtn_order_case(swtch, case_block->switch_case);
}
enum vtn_branch_type branch_type =
--
2.7.4
More information about the mesa-dev
mailing list