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)
{
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)