]> git.tdb.fi Git - libs/gl.git/blobdiff - source/glsl/reflect.cpp
Only remove load IDs of variables actually assigned in a loop
[libs/gl.git] / source / glsl / reflect.cpp
index 83af09a6f8b092bfb9cf3a76d949644ae5638793..cc2e3a0c8bc2c6570e30bb50decd35cd413b97f1 100644 (file)
@@ -49,13 +49,6 @@ bool can_convert(const BasicTypeDeclaration &from, const BasicTypeDeclaration &t
 
 unsigned TypeComparer::next_tag = 1;
 
-TypeComparer::TypeComparer():
-       first(0),
-       second(0),
-       first_tag(0),
-       r_result(false)
-{ }
-
 void TypeComparer::compare(Node &node1, Node &node2)
 {
        if(&node1==&node2)
@@ -234,10 +227,6 @@ void TypeComparer::visit(VariableDeclaration &var)
 }
 
 
-LocationCounter::LocationCounter():
-       r_count(0)
-{ }
-
 void LocationCounter::visit(BasicTypeDeclaration &basic)
 {
        r_count = basic.kind==BasicTypeDeclaration::MATRIX ? basic.size>>16 : 1;
@@ -391,6 +380,19 @@ void DependencyCollector::visit(FunctionDeclaration &func)
        }
 }
 
+
+set<VariableDeclaration *> AssignmentCollector::apply(Node &node)
+{
+       node.visit(*this);
+       return assigned_variables;
+}
+
+void AssignmentCollector::visit(Assignment &assign)
+{
+       if(VariableDeclaration *var = dynamic_cast<VariableDeclaration *>(assign.target.declaration))
+               assigned_variables.insert(var);
+}
+
 } // namespace SL
 } // namespace GL
 } // namespace Msp