summaryrefslogtreecommitdiffstats
path: root/src/glsl/ir_variable_refcount.h
diff options
context:
space:
mode:
authorPaul Berry <[email protected]>2013-11-26 14:37:57 -0800
committerPaul Berry <[email protected]>2013-11-29 21:46:13 -0800
commit9d2951ea0acdcd219ad28831ac9e7112737d9ca3 (patch)
tree1f2820bc641f55dd7d68dd27bd5a211a914e4625 /src/glsl/ir_variable_refcount.h
parent1fb106527faa195197fa52e28e1b941c97e520c2 (diff)
glsl: Teach ir_variable_refcount about ir_loop::counter variables.
If an ir_loop has a non-null "counter" field, the variable referred to by this field is implicitly read and written by the loop. We need to account for this in ir_variable_refcount, otherwise there is a danger we will try to dead-code-eliminate the loop counter variable. Note: at the moment the dead code elimination bug doesn't occur due to a bug in ir_hierarchical_visitor: it doesn't visit the "counter" field, so dead code elimination doesn't treat it as a candidate for elimination. But the patch to follow will fix that bug, so we need to fix ir_variable_refcount first in order to avoid breaking dead code elimination. Reviewed-by: Eric Anholt <[email protected]> Reviewed-by: Kenneth Graunke <[email protected]>
Diffstat (limited to 'src/glsl/ir_variable_refcount.h')
-rw-r--r--src/glsl/ir_variable_refcount.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/glsl/ir_variable_refcount.h b/src/glsl/ir_variable_refcount.h
index c15e8110d04..03fa7b5b467 100644
--- a/src/glsl/ir_variable_refcount.h
+++ b/src/glsl/ir_variable_refcount.h
@@ -60,6 +60,7 @@ public:
virtual ir_visitor_status visit_enter(ir_function_signature *);
virtual ir_visitor_status visit_leave(ir_assignment *);
+ virtual ir_visitor_status visit_leave(ir_loop *);
ir_variable_refcount_entry *get_variable_entry(ir_variable *var);