]> git.tdb.fi Git - libs/gl.git/blobdiff - source/glsl/compiler.cpp
Rearrange secondary operations in GLSL compiler
[libs/gl.git] / source / glsl / compiler.cpp
index 347e16ad301dba1881b604713a68476095ccf0f2..35977cb42be534077bca6c9f3427fbbcc158d443 100644 (file)
@@ -114,7 +114,7 @@ void Compiler::append_module(Module &mod, DataFile::Collection *res)
        vector<Import *> imports = NodeGatherer<Import>().apply(mod.shared);
        for(vector<Import *>::iterator i=imports.begin(); i!=imports.end(); ++i)
                import(res, (*i)->module);
-       NodeRemover(set<Node *>(imports.begin(), imports.end())).apply(mod.shared);
+       NodeRemover().apply(mod.shared, set<Node *>(imports.begin(), imports.end()));
 
        append_stage(mod.shared);
        for(list<Stage>::iterator i=mod.stages.begin(); i!=mod.stages.end(); ++i)
@@ -184,15 +184,12 @@ bool Compiler::optimize(Stage &stage)
 {
        ConstantConditionEliminator().apply(stage);
 
-       set<FunctionDeclaration *> inlineable = InlineableFunctionLocator().apply(stage);
-       FunctionInliner(inlineable).apply(stage);
+       FunctionInliner().apply(stage);
 
-       set<Node *> unused = UnusedVariableLocator().apply(stage);
-       set<Node *> unused2 = UnusedFunctionLocator().apply(stage);
-       unused.insert(unused2.begin(), unused2.end());
-       NodeRemover(unused).apply(stage);
+       bool result = UnusedVariableRemover().apply(stage);
+       result |= UnusedFunctionRemover().apply(stage);
 
-       return !unused.empty();
+       return result;
 }
 
 void Compiler::finalize(Stage &stage)