]> git.tdb.fi Git - libs/gl.git/blobdiff - source/glsl/optimize.cpp
Mark all expression result types as used
[libs/gl.git] / source / glsl / optimize.cpp
index 32f7ce67959b388fa1bc2c2fb58ecc344a11bb87..57182019012b731ba330e7fc38a1e86f1f2eeeaf 100644 (file)
@@ -914,33 +914,10 @@ bool UnusedTypeRemover::apply(Stage &stage)
        return !unused_nodes.empty();
 }
 
-void UnusedTypeRemover::visit(Literal &literal)
+void UnusedTypeRemover::visit(RefPtr<Expression> &expr)
 {
-       unused_nodes.erase(literal.type);
-}
-
-void UnusedTypeRemover::visit(UnaryExpression &unary)
-{
-       unused_nodes.erase(unary.type);
-       TraversingVisitor::visit(unary);
-}
-
-void UnusedTypeRemover::visit(BinaryExpression &binary)
-{
-       unused_nodes.erase(binary.type);
-       TraversingVisitor::visit(binary);
-}
-
-void UnusedTypeRemover::visit(TernaryExpression &ternary)
-{
-       unused_nodes.erase(ternary.type);
-       TraversingVisitor::visit(ternary);
-}
-
-void UnusedTypeRemover::visit(FunctionCall &call)
-{
-       unused_nodes.erase(call.type);
-       TraversingVisitor::visit(call);
+       unused_nodes.erase(expr->type);
+       TraversingVisitor::visit(expr);
 }
 
 void UnusedTypeRemover::visit(BasicTypeDeclaration &type)
@@ -966,6 +943,7 @@ void UnusedTypeRemover::visit(StructDeclaration &strct)
 void UnusedTypeRemover::visit(VariableDeclaration &var)
 {
        unused_nodes.erase(var.type_declaration);
+       TraversingVisitor::visit(var);
 }
 
 void UnusedTypeRemover::visit(InterfaceBlock &iface)