[Mesa-dev] [PATCH] spirv: avoid infinite loop / freeze in vtn_cfg_walk_blocks()

Mark Janes mark.a.janes at intel.com
Thu Dec 21 20:19:51 UTC 2017


This patch doesn't apply to master as formatted.

I've reverted the bisected commit, since it disables testing on master.

Eero Tamminen <eero.t.tamminen at intel.com> writes:

> 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
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list