On Thu, 2015-07-09 at 17:50 -0700, Eric Anholt wrote: > Timothy Arceri <t_arc...@yahoo.com.au> writes: > > > --- > > > > Some of the AoA tests currently get stuck in an optimisation > > loop for a long time and this was taking a large amount of time. > > Its a symptom not a cause but I don't see any issue with using the faster > > version. > > > > src/glsl/ir_validate.cpp | 17 ++++++++--------- > > 1 file changed, 8 insertions(+), 9 deletions(-) > > > > diff --git a/src/glsl/ir_validate.cpp b/src/glsl/ir_validate.cpp > > index cfe0df3..f3752bd 100644 > > --- a/src/glsl/ir_validate.cpp > > +++ b/src/glsl/ir_validate.cpp > > @@ -35,7 +35,7 @@ > > > > #include "ir.h" > > #include "ir_hierarchical_visitor.h" > > -#include "program/hash_table.h" > > +#include "util/hash_table.h" > > #include "glsl_types.h" > > > > namespace { > > @@ -44,8 +44,8 @@ class ir_validate : public ir_hierarchical_visitor { > > public: > > ir_validate() > > { > > - this->ht = hash_table_ctor(0, hash_table_pointer_hash, > > - hash_table_pointer_compare); > > + this->ht = _mesa_hash_table_create(NULL, _mesa_hash_pointer, > > + _mesa_key_pointer_equal); > > > > this->current_function = NULL; > > > > @@ -55,7 +55,7 @@ public: > > > > ~ir_validate() > > { > > - hash_table_dtor(this->ht); > > + _mesa_hash_table_destroy(this->ht, NULL); > > } > > > > virtual ir_visitor_status visit(ir_variable *v); > > @@ -94,7 +94,7 @@ ir_validate::visit(ir_dereference_variable *ir) > > abort(); > > } > > > > - if (hash_table_find(ht, ir->var) == NULL) { > > + if (_mesa_hash_table_search(ht, ir->var) == NULL) { > > printf("ir_dereference_variable @ %p specifies undeclared variable > > " > > "`%s' @ %p\n", > > (void *) ir, ir->var->name, (void *) ir->var); > > @@ -730,8 +730,7 @@ ir_validate::visit(ir_variable *ir) > > if (ir->name && ir->is_name_ralloced()) > > assert(ralloc_parent(ir->name) == ir); > > > > - hash_table_insert(ht, ir, ir); > > - > > + _mesa_hash_table_insert(ht, ir, ir); > > > > /* If a variable is an array, verify that the maximum array index is > > in > > * bounds. There was once an error in AST-to-HIR conversion that set > > this > > @@ -887,13 +886,13 @@ ir_validate::validate_ir(ir_instruction *ir, void > > *data) > > { > > struct hash_table *ht = (struct hash_table *) data; > > > > - if (hash_table_find(ht, ir)) { > > + if (_mesa_hash_table_search(ht, ir)) { > > printf("Instruction node present twice in ir tree:\n"); > > ir->print(); > > printf("\n"); > > abort(); > > } > > - hash_table_insert(ht, ir, ir); > > + _mesa_hash_table_insert(ht, ir, ir); > > } > > It looks like you should use a set instead of a hash table, since you > don't need a separate data field.
Right thanks, I've sent a new patch. _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev