nir: Invalidate live SSA def information when making new SSA defs.
[mesa.git] / src / compiler / glsl / ir_hv_accept.cpp
index 213992af28ca2031399d088f00dd522c890b8a93..6e5e25378e1bb998ffc1901ac885d2066d3885f9 100644 (file)
@@ -137,7 +137,7 @@ ir_expression::accept(ir_hierarchical_visitor *v)
    if (s != visit_continue)
       return (s == visit_continue_with_parent) ? visit_continue : s;
 
-   for (unsigned i = 0; i < this->get_num_operands(); i++) {
+   for (unsigned i = 0; i < this->num_operands; i++) {
       switch (this->operands[i]->accept(v)) {
       case visit_continue:
         break;
@@ -147,7 +147,7 @@ ir_expression::accept(ir_hierarchical_visitor *v)
         goto done;
 
       case visit_stop:
-        return s;
+        return visit_stop;
       }
    }
 
@@ -178,8 +178,8 @@ ir_texture::accept(ir_hierarchical_visitor *v)
         return (s == visit_continue_with_parent) ? visit_continue : s;
    }
 
-   if (this->shadow_comparitor) {
-      s = this->shadow_comparitor->accept(v);
+   if (this->shadow_comparator) {
+      s = this->shadow_comparator->accept(v);
       if (s != visit_continue)
         return (s == visit_continue_with_parent) ? visit_continue : s;
    }
@@ -230,7 +230,8 @@ ir_texture::accept(ir_hierarchical_visitor *v)
       break;
    }
 
-   return (s == visit_stop) ? s : v->visit_leave(this);
+   assert(s == visit_continue);
+   return v->visit_leave(this);
 }
 
 
@@ -377,6 +378,18 @@ ir_discard::accept(ir_hierarchical_visitor *v)
 }
 
 
+ir_visitor_status
+ir_demote::accept(ir_hierarchical_visitor *v)
+{
+   ir_visitor_status s = v->visit_enter(this);
+
+   if (s != visit_continue)
+      return (s == visit_continue_with_parent) ? visit_continue : s;
+
+   return v->visit_leave(this);
+}
+
+
 ir_visitor_status
 ir_if::accept(ir_hierarchical_visitor *v)
 {
@@ -414,7 +427,8 @@ ir_emit_vertex::accept(ir_hierarchical_visitor *v)
    if (s != visit_continue)
       return (s == visit_continue_with_parent) ? visit_continue : s;
 
-   return (s == visit_stop) ? s : v->visit_leave(this);
+   assert(s == visit_continue);
+   return v->visit_leave(this);
 }
 
 
@@ -429,7 +443,8 @@ ir_end_primitive::accept(ir_hierarchical_visitor *v)
    if (s != visit_continue)
       return (s == visit_continue_with_parent) ? visit_continue : s;
 
-   return (s == visit_stop) ? s : v->visit_leave(this);
+   assert(s == visit_continue);
+   return v->visit_leave(this);
 }
 
 ir_visitor_status