return false;
if (debug) {
- printf("GRAFTING:\n");
- this->graft_assign->print();
- printf("\n");
- printf("TO:\n");
- (*rvalue)->print();
- printf("\n");
+ fprintf(stderr, "GRAFTING:\n");
+ this->graft_assign->fprint(stderr);
+ fprintf(stderr, "\n");
+ fprintf(stderr, "TO:\n");
+ (*rvalue)->fprint(stderr);
+ fprintf(stderr, "\n");
}
this->graft_assign->remove();
{
if (dereferences_variable(this->graft_assign->rhs, var)) {
if (debug) {
- printf("graft killed by: ");
- ir->print();
- printf("\n");
+ fprintf(stderr, "graft killed by: ");
+ ir->fprint(stderr);
+ fprintf(stderr, "\n");
}
return visit_stop;
}
case ir_tex:
case ir_lod:
case ir_query_levels:
+ case ir_texture_samples:
+ case ir_samples_identical:
break;
case ir_txb:
if (do_graft(&ir->lod_info.bias))
ir_tree_grafting_visitor v(start, lhs_var);
if (debug) {
- printf("trying to graft: ");
- lhs_var->print();
- printf("\n");
+ fprintf(stderr, "trying to graft: ");
+ lhs_var->fprint(stderr);
+ fprintf(stderr, "\n");
}
for (ir_instruction *ir = (ir_instruction *)start->next;
ir = (ir_instruction *)ir->next) {
if (debug) {
- printf("- ");
- ir->print();
- printf("\n");
+ fprintf(stderr, "- ");
+ ir->fprint(stderr);
+ fprintf(stderr, "\n");
}
ir_visitor_status s = ir->accept(&v);
if (!lhs_var)
continue;
- if (lhs_var->data.mode == ir_var_function_out ||
- lhs_var->data.mode == ir_var_function_inout ||
- lhs_var->data.mode == ir_var_shader_out)
- continue;
+ if (lhs_var->data.mode == ir_var_function_out ||
+ lhs_var->data.mode == ir_var_function_inout ||
+ lhs_var->data.mode == ir_var_shader_out ||
+ lhs_var->data.mode == ir_var_shader_storage)
+ continue;
ir_variable_refcount_entry *entry = info->refs->get_variable_entry(lhs_var);
entry->referenced_count != 2)
continue;
- assert(assign == entry->assign);
-
/* Found a possibly graftable assignment. Now, walk through the
* rest of the BB seeing if the deref is here, and if nothing interfered with
* pasting its expression's values in between.