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.pa...@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@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev