[Mesa-dev] [PATCH] glsl: fix switch statement default case regressions

Chris Forbes chrisf at ijw.co.nz
Mon Aug 4 02:25:43 PDT 2014


Reviewed-by: Chris Forbes <chrisf at ijw.co.nz>

On Fri, Jul 25, 2014 at 6:40 PM, Tapani Pälli <tapani.palli at intel.com> wrote:
> This patch fixes regressions caused by commit 48deb4d. Regressions
> happened because 'run_default' var did not initialized when default
> case was the last one.
>
> Now all the switch tests in es3conform suite are passing.
>
> Signed-off-by: Tapani Pälli <tapani.palli at intel.com>
> ---
>  src/glsl/ast_to_hir.cpp | 12 ++++++------
>  1 file changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/src/glsl/ast_to_hir.cpp b/src/glsl/ast_to_hir.cpp
> index a15ee9c..7249a06 100644
> --- a/src/glsl/ast_to_hir.cpp
> +++ b/src/glsl/ast_to_hir.cpp
> @@ -4597,12 +4597,6 @@ ast_case_statement_list::hir(exec_list *instructions,
>      */
>     if (!default_case.is_empty()) {
>
> -      /* Default case was the last one, no checks required. */
> -      if (after_default.is_empty()) {
> -         instructions->append_list(&default_case);
> -         return NULL;
> -      }
> -
>        ir_rvalue *const true_val = new (state) ir_constant(true);
>        ir_dereference_variable *deref_run_default_var =
>           new(state) ir_dereference_variable(state->switch_state.run_default);
> @@ -4614,6 +4608,12 @@ ast_case_statement_list::hir(exec_list *instructions,
>           new(state) ir_assignment(deref_run_default_var, true_val);
>        instructions->push_tail(init_var);
>
> +      /* Default case was the last one, no checks required. */
> +      if (after_default.is_empty()) {
> +         instructions->append_list(&default_case);
> +         return NULL;
> +      }
> +
>        foreach_in_list(ir_instruction, ir, &after_default) {
>           ir_assignment *assign = ir->as_assignment();
>
> --
> 1.8.3.1
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list