glsl: slim the kill_entry struct used in const propagation
Since 4654439fdd
"glsl: Use hash tables for
opt_constant_propagation() kill sets." uses a hash_table for storing
kill_entries, so the structs can be simplified.
Remove the exec_node from kill_entry since it is not used in an
exec_list anymore.
Remove the 'var' from kill_entry since it is now redundant with the
key of the hash table.
Suggested by Eric Anholt.
Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Thomas Helland <thomashelland90@gmail.com>
This commit is contained in:

committed by
Rafael Antognolli

parent
094225d69d
commit
d6e869afe9
@@ -77,20 +77,17 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
class kill_entry : public exec_node
|
class kill_entry
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
/* override operator new from exec_node */
|
/* override operator new from exec_node */
|
||||||
DECLARE_LINEAR_ZALLOC_CXX_OPERATORS(kill_entry)
|
DECLARE_LINEAR_ZALLOC_CXX_OPERATORS(kill_entry)
|
||||||
|
|
||||||
kill_entry(ir_variable *var, unsigned write_mask)
|
explicit kill_entry(unsigned write_mask)
|
||||||
{
|
{
|
||||||
assert(var);
|
|
||||||
this->var = var;
|
|
||||||
this->write_mask = write_mask;
|
this->write_mask = write_mask;
|
||||||
}
|
}
|
||||||
|
|
||||||
ir_variable *var;
|
|
||||||
unsigned write_mask;
|
unsigned write_mask;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -386,7 +383,7 @@ ir_constant_propagation_visitor::handle_if_block(exec_list *instructions)
|
|||||||
hash_entry *htk;
|
hash_entry *htk;
|
||||||
hash_table_foreach(new_kills, htk) {
|
hash_table_foreach(new_kills, htk) {
|
||||||
kill_entry *k = (kill_entry *) htk->data;
|
kill_entry *k = (kill_entry *) htk->data;
|
||||||
kill(k->var, k->write_mask);
|
kill((ir_variable *) htk->key, k->write_mask);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -433,7 +430,7 @@ ir_constant_propagation_visitor::visit_enter(ir_loop *ir)
|
|||||||
hash_entry *htk;
|
hash_entry *htk;
|
||||||
hash_table_foreach(new_kills, htk) {
|
hash_table_foreach(new_kills, htk) {
|
||||||
kill_entry *k = (kill_entry *) htk->data;
|
kill_entry *k = (kill_entry *) htk->data;
|
||||||
kill(k->var, k->write_mask);
|
kill((ir_variable *) htk->key, k->write_mask);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* already descended into the children. */
|
/* already descended into the children. */
|
||||||
@@ -469,7 +466,7 @@ ir_constant_propagation_visitor::kill(ir_variable *var, unsigned write_mask)
|
|||||||
}
|
}
|
||||||
/* Not already in the hash table. Make new entry. */
|
/* Not already in the hash table. Make new entry. */
|
||||||
_mesa_hash_table_insert(this->kills, var,
|
_mesa_hash_table_insert(this->kills, var,
|
||||||
new(this->lin_ctx) kill_entry(var, write_mask));
|
new(this->lin_ctx) kill_entry(write_mask));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Reference in New Issue
Block a user