Browse Source

glsl2: Fix the dereferences_variable check in ir_tree_grafting.

The HV doesn't descend into ir_variable, which is generally a good
thing (allowing one to distinguish between variable declarations and
refs), but here we never saw tree grafting opportunities killed
because we were looking for the ir_variable child of a dereference to
get visited.

Fixes:
glsl1-function call with inout params
tags/mesa-7.9-rc1
Eric Anholt 15 years ago
parent
commit
c314c8f231
1 changed files with 3 additions and 2 deletions
  1. 3
    2
      src/glsl/ir_tree_grafting.cpp

+ 3
- 2
src/glsl/ir_tree_grafting.cpp View File

@@ -92,8 +92,9 @@ void
dereferences_variable_callback(ir_instruction *ir, void *data)
{
struct find_deref_info *info = (struct find_deref_info *)data;
ir_dereference_variable *deref = ir->as_dereference_variable();

if (ir == info->var)
if (deref && deref->var == info->var)
info->found = true;
}

@@ -123,7 +124,7 @@ ir_tree_grafting_visitor::do_graft(ir_rvalue **rvalue)

if (debug) {
printf("GRAFTING:\n");
this->graft_assign->rhs->print();
this->graft_assign->print();
printf("\n");
printf("TO:\n");
(*rvalue)->print();

Loading…
Cancel
Save