RefPtr<Expression> inline_result;
public:
- FunctionInliner(const std::set<FunctionDeclaration *> &);
+ FunctionInliner();
- void apply(Stage &s) { visit(s.content); }
+ void apply(Stage &);
private:
void visit_and_inline(RefPtr<Expression> &);
using BlockModifier::visit;
};
-class UnusedVariableLocator: private TraversingVisitor
+class UnusedVariableRemover: private TraversingVisitor
{
private:
struct VariableInfo
bool global_scope;
public:
- UnusedVariableLocator();
+ UnusedVariableRemover();
- const std::set<Node *> &apply(Stage &);
+ bool apply(Stage &);
private:
virtual void visit(VariableReference &);
using TraversingVisitor::visit;
};
-class UnusedFunctionLocator: private TraversingVisitor
+class UnusedFunctionRemover: private TraversingVisitor
{
private:
std::set<Node *> unused_nodes;
std::set<FunctionDeclaration *> used_definitions;
public:
- const std::set<Node *> &apply(Stage &s) { visit(s.content); return unused_nodes; }
+ bool apply(Stage &s);
private:
virtual void visit(FunctionCall &);