[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