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

Lionel Landwerlin lionel.g.landwerlin at intel.com
Thu Dec 21 14:04:49 UTC 2017


Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>

On 21/12/17 13:53, Eero Tamminen wrote:
> 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