glsl/ast: Stop processing a switch-statement after an error in the init-expression
authorIan Romanick <ian.d.romanick@intel.com>
Wed, 27 Sep 2017 00:54:48 +0000 (17:54 -0700)
committerIan Romanick <ian.d.romanick@intel.com>
Mon, 2 Oct 2017 21:46:02 +0000 (14:46 -0700)
This happens to work now because ir_binop_all_equal is used.  This
causes vector typed init-expressions to produce scalar Boolean values
after comparison.

The next commit changes ir_binop_all_equal to ir_binop_equal.  Vector
typed init-expressions will then produce vector Boolean values, and, in
debug builds, the ir_assignment constructor will fail an assertion.

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 1999e68158cb6f0347a3be067e40364499dca3e3..4323ec32264ce3836dca707f46f9116b144989bb 100644 (file)
@@ -6407,6 +6407,7 @@ ast_switch_statement::hir(exec_list *instructions,
                        state,
                        "switch-statement expression must be scalar "
                        "integer");
+      return NULL;
    }
 
    /* Track the switch-statement nesting in a stack-like manner.