[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