[Mesa-dev] [PATCH] glsl: Don't use base type for bit-not when there's an error
Kenneth Graunke
kenneth at whitecape.org
Fri Dec 23 17:38:16 PST 2011
On 12/23/2011 05:31 PM, Ian Romanick wrote:
> From: Ian Romanick <ian.d.romanick at 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.romanick at intel.com>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=42755
> Cc: Vinson Lee <vlee at 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;
>
Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
More information about the mesa-dev
mailing list