[Mesa-dev] [PATCH] glsl: fix key used for hashing switch statement cases
Ilia Mirkin
imirkin at alum.mit.edu
Thu Aug 18 11:52:09 UTC 2016
Can the hash value not be 0?
On Aug 18, 2016 4:57 AM, "Tapani Pälli" <tapani.palli at intel.com> wrote:
> Implementation previously used case value itself as the key, however
> afterhash implementation change by ee02a5e we cannot use 0 as key.
> Patch uses _mesa_hash_data to formulate a suitable key for this hash.
>
> Signed-off-by: Tapani Pälli <tapani.palli at intel.com>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=97309
> ---
> src/compiler/glsl/ast_to_hir.cpp | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/src/compiler/glsl/ast_to_hir.cpp b/src/compiler/glsl/ast_to_
> hir.cpp
> index e03a6e3..53fc4d6 100644
> --- a/src/compiler/glsl/ast_to_hir.cpp
> +++ b/src/compiler/glsl/ast_to_hir.cpp
> @@ -6180,9 +6180,11 @@ ast_case_label::hir(exec_list *instructions,
> /* Stuff a dummy value in to allow processing to continue. */
> label_const = new(ctx) ir_constant(0);
> } else {
> + unsigned hash_key = _mesa_hash_data(&label_const->value.u[0],
> + sizeof(unsigned));
> ast_expression *previous_label = (ast_expression *)
> hash_table_find(state->switch_state.labels_ht,
> - (void *)(uintptr_t)label_const->value.u[0]);
> + (void *)(uintptr_t)hash_key);
>
> if (previous_label) {
> YYLTYPE loc = this->test_value->get_location();
> @@ -6193,7 +6195,7 @@ ast_case_label::hir(exec_list *instructions,
> } else {
> hash_table_insert(state->switch_state.labels_ht,
> this->test_value,
> - (void *)(uintptr_t)label_const->
> value.u[0]);
> + (void *)(uintptr_t)hash_key);
> }
> }
>
> --
> 2.5.5
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20160818/4e30935f/attachment-0001.html>
More information about the mesa-dev
mailing list