glsl: handle error case with ast_post_inc, ast_post_dec
authorTapani Pälli <tapani.palli@intel.com>
Tue, 7 Aug 2018 05:20:29 +0000 (08:20 +0300)
committerTapani Pälli <tapani.palli@intel.com>
Thu, 9 Aug 2018 10:07:16 +0000 (13:07 +0300)
Return ir_rvalue::error_value with ast_post_inc, ast_post_dec if
parser error was emitted previously. This way process_array_size
won't see bogus IR generated like with commit 9c676a64273.

Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=98699
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
src/compiler/glsl/ast_to_hir.cpp

index 74160ec142bea39b1b7281a147ac52a0ae0d8cd6..5d3f10b6823996231c22a559383877ff30f7347f 100644 (file)
@@ -1928,6 +1928,11 @@ ast_expression::do_hir(exec_list *instructions,
 
       error_emitted = op[0]->type->is_error() || op[1]->type->is_error();
 
+      if (error_emitted) {
+         result = ir_rvalue::error_value(ctx);
+         break;
+      }
+
       type = arithmetic_result_type(op[0], op[1], false, state, & loc);
 
       ir_rvalue *temp_rhs;