glsl/ast: Use logical-or instead of conditional assignment to set fallthru_var
authorIan Romanick <ian.d.romanick@intel.com>
Mon, 18 Sep 2017 21:20:38 +0000 (16:20 -0500)
committerIan Romanick <ian.d.romanick@intel.com>
Mon, 2 Oct 2017 21:46:11 +0000 (14:46 -0700)
Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Alejandro PiƱeiro <apinheiro@igalia.com>
src/compiler/glsl/ast_to_hir.cpp

index cbd5746648d0ff670dff774252cb5be1831cd50e..d7c8b47f9d476bfe288f483a92f26a40436031a8 100644 (file)
@@ -6763,8 +6763,7 @@ ast_case_label::hir(exec_list *instructions,
       }
 
       body.emit(assign(fallthru_var,
-                       body.constant(true),
-                       equal(label, deref_test_var)));
+                       logic_or(fallthru_var, equal(label, deref_test_var))));
    } else { /* default case */
       if (state->switch_state.previous_default) {
          YYLTYPE loc = this->get_location();
@@ -6777,8 +6776,9 @@ ast_case_label::hir(exec_list *instructions,
       state->switch_state.previous_default = this;
 
       /* Set fallthru condition on 'run_default' bool. */
-      body.emit(assign(fallthru_var, body.constant(true),
-                       state->switch_state.run_default));
+      body.emit(assign(fallthru_var,
+                       logic_or(fallthru_var,
+                                state->switch_state.run_default)));
    }
 
    /* Case statements do not have r-values. */