]> git.tdb.fi Git - libs/gl.git/blobdiff - source/programcompiler.cpp
Remove useless declarations of main() from shaders
[libs/gl.git] / source / programcompiler.cpp
index cc4b5efe3df0bfca482feb8d9ae3f46e46391d42..0d61c6853c737a75bac34212114077e1b691286c 100644 (file)
@@ -1346,6 +1346,8 @@ void ProgramCompiler::UnusedVariableLocator::visit(FunctionDeclaration &func)
        BlockVariableMap &block_variables = variables.back();
        for(BlockVariableMap::iterator i=block_variables.begin(); i!=block_variables.end(); ++i)
                i->second.conditionally_assigned = true;
+       for(vector<RefPtr<VariableDeclaration> >::iterator i=func.parameters.begin(); i!=func.parameters.end(); ++i)
+               block_variables[i->get()].referenced = true;
        merge_down_variables();
 }
 
@@ -1445,7 +1447,7 @@ void ProgramCompiler::UnusedFunctionLocator::visit(FunctionDeclaration &func)
 {
        TraversingVisitor::visit(func);
 
-       if(func.name!="main" && !used_definitions.count(&func))
+       if((func.name!="main" || func.body.body.empty()) && !used_definitions.count(&func))
                unused_nodes.insert(&func);
 }