#include "ir_variable_refcount.h"
#include "glsl_types.h"
-variable_entry *
+
+// constructor
+ir_variable_refcount_entry::ir_variable_refcount_entry(ir_variable *var)
+{
+ this->var = var;
+ assign = NULL;
+ assigned_count = 0;
+ declaration = false;
+ referenced_count = 0;
+}
+
+
+ir_variable_refcount_entry *
ir_variable_refcount_visitor::get_variable_entry(ir_variable *var)
{
assert(var);
foreach_iter(exec_list_iterator, iter, this->variable_list) {
- variable_entry *entry = (variable_entry *)iter.get();
+ ir_variable_refcount_entry *entry = (ir_variable_refcount_entry *)iter.get();
if (entry->var == var)
return entry;
}
- variable_entry *entry = new(mem_ctx) variable_entry(var);
+ ir_variable_refcount_entry *entry = new(mem_ctx) ir_variable_refcount_entry(var);
assert(entry->referenced_count == 0);
this->variable_list.push_tail(entry);
return entry;
ir_visitor_status
ir_variable_refcount_visitor::visit(ir_variable *ir)
{
- variable_entry *entry = this->get_variable_entry(ir);
+ ir_variable_refcount_entry *entry = this->get_variable_entry(ir);
if (entry)
entry->declaration = true;
ir_variable_refcount_visitor::visit(ir_dereference_variable *ir)
{
ir_variable *const var = ir->variable_referenced();
- variable_entry *entry = this->get_variable_entry(var);
+ ir_variable_refcount_entry *entry = this->get_variable_entry(var);
if (entry)
entry->referenced_count++;
ir_visitor_status
ir_variable_refcount_visitor::visit_leave(ir_assignment *ir)
{
- variable_entry *entry;
+ ir_variable_refcount_entry *entry;
entry = this->get_variable_entry(ir->lhs->variable_referenced());
if (entry) {
entry->assigned_count++;