]> git.tdb.fi Git - libs/gl.git/blobdiff - source/glsl/optimize.cpp
Don't record references to null declarations
[libs/gl.git] / source / glsl / optimize.cpp
index 1e974c9f01f8eee6d3eea5faabc00b20759ffd37..3cb10e862458903a0d07c2da1eec7465e3299ac5 100644 (file)
@@ -1324,7 +1324,7 @@ void UnusedVariableRemover::visit(VariableReference &var)
 {
        if(composite_reference)
                r_reference.declaration = var.declaration;
-       else
+       else if(var.declaration)
                referenced(var.declaration, var);
 }
 
@@ -1332,7 +1332,7 @@ void UnusedVariableRemover::visit(InterfaceBlockReference &iface)
 {
        if(composite_reference)
                r_reference.declaration = iface.declaration;
-       else
+       else if(iface.declaration)
                referenced(iface.declaration, iface);
 }
 
@@ -1384,6 +1384,7 @@ void UnusedVariableRemover::visit(BinaryExpression &binary)
                {
                        SetFlag clear_assignment(assignment_target, false);
                        SetFlag clear_composite(composite_reference, false);
+                       SetForScope<Assignment::Target> clear_reference(r_reference, Assignment::Target());
                        binary.right->visit(*this);
                }