[Mesa-dev] [PATCH 4/6] glsl: When we've emitted a semantic error for ==, return a bool constant.
Ian Romanick
idr at freedesktop.org
Mon Apr 11 15:51:55 PDT 2011
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
On 04/09/2011 10:17 PM, Eric Anholt wrote:
> This prevents later errors (including an assertion failure) from
> cascading the failure.
>
> Fixes invalid-equality-04.vert.
> ---
> src/glsl/ast_to_hir.cpp | 10 +++++++---
> 1 files changed, 7 insertions(+), 3 deletions(-)
>
> diff --git a/src/glsl/ast_to_hir.cpp b/src/glsl/ast_to_hir.cpp
> index 108c7c3..ea20eba 100644
> --- a/src/glsl/ast_to_hir.cpp
> +++ b/src/glsl/ast_to_hir.cpp
> @@ -1073,10 +1073,14 @@ ast_expression::hir(exec_list *instructions,
> error_emitted = true;
> }
>
> - result = do_comparison(ctx, operations[this->oper], op[0], op[1]);
> - type = glsl_type::bool_type;
> + if (error_emitted) {
> + result = new(ctx) ir_constant(false);
> + } else {
> + result = do_comparison(ctx, operations[this->oper], op[0], op[1]);
> + assert(result->type == glsl_type::bool_type);
> + type = glsl_type::bool_type;
> + }
Doesn't this leave type unset in the 'if (error_emitted)' case?
>
> - assert(error_emitted || (result->type == glsl_type::bool_type));
> break;
>
> case ast_bit_and:
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org/
iEYEARECAAYFAk2jhgsACgkQX1gOwKyEAw8RXQCgn1uYjm3aV0yIrZn6BSbfqy75
L00AoJn4QtVOtywZFrhNu4m2L1oDBR8f
=JdfV
-----END PGP SIGNATURE-----
More information about the mesa-dev
mailing list