summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTapani Pälli <[email protected]>2020-03-14 08:57:02 +0200
committerMarge Bot <[email protected]>2020-03-26 12:41:12 +0000
commit0847fe6e7fa6ee07420c6eed95bfee036748bc6a (patch)
tree39aa3bbbbb4fa556044203e04bc1589715196d03 /src
parent05069e1f0794aadd40ce9269f858e50c64254388 (diff)
glsl: set error_emitted true if type not ok for assignment
Patch changes also existing assert to not trigger when we have error types in assignment. v2: simplify, cleanup (Ian) Closes: https://gitlab.freedesktop.org/mesa/mesa/issues/2629 Fixes: d1fa69ed61d ("glsl: do not attempt assignment if operand type not parsed correctly") Signed-off-by: Tapani Pälli <[email protected]> Reviewed-by: Ian Romanick <[email protected]> Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4178> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4178>
Diffstat (limited to 'src')
-rw-r--r--src/compiler/glsl/ast_to_hir.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/compiler/glsl/ast_to_hir.cpp b/src/compiler/glsl/ast_to_hir.cpp
index cc1bb16bb64..a66ed5ec52b 100644
--- a/src/compiler/glsl/ast_to_hir.cpp
+++ b/src/compiler/glsl/ast_to_hir.cpp
@@ -1689,8 +1689,11 @@ ast_expression::do_hir(exec_list *instructions,
/* Break out if operand types were not parsed successfully. */
if ((op[0]->type == glsl_type::error_type ||
- op[1]->type == glsl_type::error_type))
+ op[1]->type == glsl_type::error_type)) {
+ type = glsl_type::error_type;
+ error_emitted = true;
break;
+ }
type = arithmetic_result_type(op[0], op[1],
(this->oper == ast_mul_assign),
@@ -2131,7 +2134,7 @@ ast_expression::do_hir(exec_list *instructions,
}
}
type = NULL; /* use result->type, not type. */
- assert(result != NULL || !needs_rvalue);
+ assert(error_emitted || (result != NULL || !needs_rvalue));
if (result && result->type->is_error() && !error_emitted)
_mesa_glsl_error(& loc, state, "type mismatch");