Refactor ir_dereference data fields to subclasses

This commit is contained in:
Ian Romanick
2010-05-19 13:52:29 +02:00
parent 7fe3de6fde
commit 36ea28646c
11 changed files with 58 additions and 57 deletions

View File

@@ -169,14 +169,14 @@ ir_copy_propagation_visitor::visit(ir_dereference_variable *ir)
void
ir_copy_propagation_visitor::visit(ir_dereference_array *ir)
{
ir->var->accept(this);
ir->selector.array_index->accept(this);
ir->array->accept(this);
ir->array_index->accept(this);
}
void
ir_copy_propagation_visitor::visit(ir_dereference_record *ir)
{
ir->var->accept(this);
ir->record->accept(this);
}
void
@@ -270,12 +270,12 @@ add_copy(ir_assignment *ir, exec_list *acp)
ir_dereference *lhs_deref = ir->lhs->as_dereference();
if (!lhs_deref || lhs_deref->mode != ir_dereference::ir_reference_variable)
return;
ir_variable *lhs_var = lhs_deref->var->as_variable();
ir_variable *lhs_var = lhs_deref->variable_referenced();
ir_dereference *rhs_deref = ir->rhs->as_dereference();
if (!rhs_deref || rhs_deref->mode != ir_dereference::ir_reference_variable)
return;
ir_variable *rhs_var = rhs_deref->var->as_variable();
ir_variable *rhs_var = rhs_deref->variable_referenced();
entry = new acp_entry(lhs_var, rhs_var);
acp->push_tail(entry);