glsl: Walk a list of ir_dereference_array to mark array elements as accessed

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Cc: mesa-stable@lists.freedesktop.org
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
Ian Romanick
2016-12-15 14:26:24 -08:00
parent e92935089b
commit d32956935e
3 changed files with 507 additions and 1 deletions

View File

@@ -140,6 +140,7 @@ public:
virtual ir_visitor_status visit(ir_dereference_variable *);
virtual ir_visitor_status visit_enter(ir_function_signature *);
virtual ir_visitor_status visit_enter(ir_dereference_array *);
/**
* Find variable in the hash table, and insert it if not present
@@ -157,6 +158,15 @@ private:
/** Get an array_deref_range element from private tracking. */
array_deref_range *get_array_deref();
/**
* Last ir_dereference_array that was visited
*
* Used to prevent some redundant calculations.
*
* \sa ::visit_enter(ir_dereference_array *)
*/
ir_dereference_array *last_array_deref;
/**
* \name array_deref_range tracking
*/