From: Ian Romanick <ian.d.roman...@intel.com> Other parts of the compiler assume that expressions will have well-formed types or the error type. Just using the type of the thing being operated on can cause expressions like ~3.14 or ~false to not have a well-formed type. This could then result in an assertion failure in the context epxression handler.
If there is an error processing the expression, set the type of the IR expression to error. Fixes piglit's bit-not-0[789].frag tests. NOTE: This is a candidate for the 7.11 branch. Signed-off-by: Ian Romanick <ian.d.roman...@intel.com> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=42755 Cc: Vinson Lee <v...@vmware.com> --- src/glsl/ast_to_hir.cpp | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/src/glsl/ast_to_hir.cpp b/src/glsl/ast_to_hir.cpp index 6aedbee..30efe37 100644 --- a/src/glsl/ast_to_hir.cpp +++ b/src/glsl/ast_to_hir.cpp @@ -1186,7 +1186,7 @@ ast_expression::hir(exec_list *instructions, error_emitted = true; } - type = op[0]->type; + type = error_emitted ? glsl_type::error_type : op[0]->type; result = new(ctx) ir_expression(ir_unop_bit_not, type, op[0], NULL); break; -- 1.7.6.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev