From b4094813c55eddcb14bae712bf33d9d3ab8910d1 Mon Sep 17 00:00:00 2001 From: Eero Tamminen Date: Thu, 21 Dec 2017 15:30:16 +0200 Subject: [PATCH] spirv: avoid infinite loop / freeze in vtn_cfg_walk_blocks() 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