gallivm: fetch immediates to correct type (v2)
[mesa.git] / src / glsl / ir_hierarchical_visitor.cpp
index 0d520b127f287500a7974a94668774bd46fa5677..b5eacd6d2d480e4cd21230d683156e311a0f74be 100644 (file)
 
 ir_hierarchical_visitor::ir_hierarchical_visitor()
 {
+   this->base_ir = NULL;
    this->callback = NULL;
    this->data = NULL;
+   this->in_assignee = false;
 }
 
 ir_visitor_status
@@ -242,6 +244,22 @@ ir_hierarchical_visitor::visit_leave(ir_return *ir)
    return visit_continue;
 }
 
+ir_visitor_status
+ir_hierarchical_visitor::visit_enter(ir_discard *ir)
+{
+   if (this->callback != NULL)
+      this->callback(ir, this->data);
+
+   return visit_continue;
+}
+
+ir_visitor_status
+ir_hierarchical_visitor::visit_leave(ir_discard *ir)
+{
+   (void) ir;
+   return visit_continue;
+}
+
 ir_visitor_status
 ir_hierarchical_visitor::visit_enter(ir_if *ir)
 {
@@ -261,12 +279,7 @@ ir_hierarchical_visitor::visit_leave(ir_if *ir)
 void
 ir_hierarchical_visitor::run(exec_list *instructions)
 {
-   foreach_list(n, instructions) {
-      ir_instruction *ir = (ir_instruction *) n;
-
-      if (ir->accept(this) != visit_continue)
-        break;
-   }
+   visit_list_elements(this, instructions);
 }