Mesa (master): glsl: fix switch statement default case regressions

Tapani Pälli tpalli at kemper.freedesktop.org
Mon Aug 4 09:34:37 UTC 2014


Module: Mesa
Branch: master
Commit: d66acc70777480439a67d59977169595b1cf4418
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=d66acc70777480439a67d59977169595b1cf4418

Author: Tapani Pälli <tapani.palli at intel.com>
Date:   Fri Jul 25 09:40:13 2014 +0300

glsl: fix switch statement default case regressions

This patch fixes regressions caused by commit 48deb4d. Regressions
happened because 'run_default' var did not get 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>
Reviewed-by: Chris Forbes <chrisf at ijw.co.nz>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=81857

---

 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();
 




More information about the mesa-commit mailing list